aboutsummaryrefslogtreecommitdiffstats
path: root/app/scripts/lib/message-manager.js
diff options
context:
space:
mode:
authorkumavis <kumavis@users.noreply.github.com>2016-05-05 02:11:37 +0800
committerkumavis <kumavis@users.noreply.github.com>2016-05-05 02:11:37 +0800
commit95582f8bde3abda5b6b7cf0e027bc7913e5953ce (patch)
tree6409dd6ea4aee0f58e243959568a4dca3fd0e63d /app/scripts/lib/message-manager.js
parentdcbf17af2d547ce676178bf78328d5c01135e31a (diff)
parent9c6ec054b13f24e88b78ca4124b0d3a46234b1d7 (diff)
downloadtangerine-wallet-browser-95582f8bde3abda5b6b7cf0e027bc7913e5953ce.tar.gz
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.js61
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)
+}
+