diff --git a/app/scripts/lib/message-manager.js b/app/scripts/lib/message-manager.js index b609b820e..379f38917 100644 --- a/app/scripts/lib/message-manager.js +++ b/app/scripts/lib/message-manager.js @@ -1,61 +1,58 @@ -module.exports = new MessageManager() +const EventEmitter = require('events') -function MessageManager (opts) { - this.messages = [] -} - -MessageManager.prototype.getMsgList = function () { - return this.messages -} - -MessageManager.prototype.unconfirmedMsgs = function () { - var messages = this.getMsgList() - return messages.filter(msg => msg.status === 'unconfirmed') - .reduce((result, msg) => { result[msg.id] = msg; return result }, {}) -} - -MessageManager.prototype._saveMsgList = function (msgList) { - this.messages = msgList -} - -MessageManager.prototype.addMsg = function (msg) { - var messages = this.getMsgList() - messages.push(msg) - this._saveMsgList(messages) -} - -MessageManager.prototype.getMsg = function (msgId) { - var messages = this.getMsgList() - var matching = messages.filter(msg => msg.id === msgId) - return matching.length > 0 ? matching[0] : null -} - -MessageManager.prototype.confirmMsg = function (msgId) { - this._setMsgStatus(msgId, 'confirmed') -} - -MessageManager.prototype.rejectMsg = function (msgId) { - this._setMsgStatus(msgId, 'rejected') -} - -MessageManager.prototype._setMsgStatus = function (msgId, status) { - var msg = this.getMsg(msgId) - if (msg) msg.status = status - this.updateMsg(msg) -} - -MessageManager.prototype.updateMsg = function (msg) { - var messages = this.getMsgList() - var found, index - messages.forEach((otherMsg, i) => { - if (otherMsg.id === msg.id) { - found = true - index = i - } - }) - if (found) { - messages[index] = msg +module.exports = class MessageManager extends EventEmitter{ + constructor (opts) { + super() + this.messages = [] } - this._saveMsgList(messages) -} + getMsgList () { + return this.messages + } + + unconfirmedMsgs () { + let messages = this.getMsgList() + return messages.filter(msg => msg.status === 'unconfirmed') + .reduce((result, msg) => { result[msg.id] = msg; return result }, {}) + } + + _saveMsgList (msgList) { + this.messages = msgList + } + + addMsg (msg) { + let messages = this.getMsgList() + messages.push(msg) + this._saveMsgList(messages) + } + + getMsg (msgId) { + let messages = this.getMsgList() + let matching = messages.filter(msg => msg.id === msgId) + return matching.length > 0 ? matching[0] : null + } + + confirmMsg (msgId) { + this._setMsgStatus(msgId, 'confirmed') + } + + rejectMsg (msgId) { + this._setMsgStatus(msgId, 'rejected') + } + + _setMsgStatus (msgId, status) { + let msg = this.getMsg(msgId) + if (msg) msg.status = status + this.updateMsg(msg) + } + + updateMsg (msg) { + let messages = this.getMsgList() + let index = messages.findIndex((message) => message.id === msg.id) + if (index !== -1) { + this.emit('update', msg.id) + messages[index] = msg + } + this._saveMsgList(messages) + } +}