diff options
Diffstat (limited to 'app/scripts/lib/message-manager.js')
-rw-r--r-- | app/scripts/lib/message-manager.js | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/app/scripts/lib/message-manager.js b/app/scripts/lib/message-manager.js new file mode 100644 index 000000000..91edb7759 --- /dev/null +++ b/app/scripts/lib/message-manager.js @@ -0,0 +1,61 @@ +module.exports = new MessageManager() + +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 + } + this._saveMsgList(messages) +} + |