diff options
author | kumavis <kumavis@users.noreply.github.com> | 2016-05-05 02:11:37 +0800 |
---|---|---|
committer | kumavis <kumavis@users.noreply.github.com> | 2016-05-05 02:11:37 +0800 |
commit | 95582f8bde3abda5b6b7cf0e027bc7913e5953ce (patch) | |
tree | 6409dd6ea4aee0f58e243959568a4dca3fd0e63d /app/scripts/lib/message-manager.js | |
parent | dcbf17af2d547ce676178bf78328d5c01135e31a (diff) | |
parent | 9c6ec054b13f24e88b78ca4124b0d3a46234b1d7 (diff) | |
download | tangerine-wallet-browser-95582f8bde3abda5b6b7cf0e027bc7913e5953ce.tar tangerine-wallet-browser-95582f8bde3abda5b6b7cf0e027bc7913e5953ce.tar.gz tangerine-wallet-browser-95582f8bde3abda5b6b7cf0e027bc7913e5953ce.tar.bz2 tangerine-wallet-browser-95582f8bde3abda5b6b7cf0e027bc7913e5953ce.tar.lz tangerine-wallet-browser-95582f8bde3abda5b6b7cf0e027bc7913e5953ce.tar.xz tangerine-wallet-browser-95582f8bde3abda5b6b7cf0e027bc7913e5953ce.tar.zst tangerine-wallet-browser-95582f8bde3abda5b6b7cf0e027bc7913e5953ce.zip |
Merge pull request #169 from MetaMask/ImplementEthSign
implement eth_sign
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) +} + |