aboutsummaryrefslogtreecommitdiffstats
path: root/app/scripts
diff options
context:
space:
mode:
authorkumavis <aaron@kumavis.me>2017-02-03 10:21:22 +0800
committerkumavis <aaron@kumavis.me>2017-02-03 10:21:22 +0800
commitbcb86f38cbe91fb814d30b3129de76dba45bff66 (patch)
tree37b3d7ed66d01d21540887d3004ebfbda2a13dd8 /app/scripts
parent79ed2e902fa3e1d9aadd9e3ecd88f627de5bb100 (diff)
downloadtangerine-wallet-browser-bcb86f38cbe91fb814d30b3129de76dba45bff66.tar.gz
tangerine-wallet-browser-bcb86f38cbe91fb814d30b3129de76dba45bff66.tar.zst
tangerine-wallet-browser-bcb86f38cbe91fb814d30b3129de76dba45bff66.zip
messageManager - move view state to obs-store
Diffstat (limited to 'app/scripts')
-rw-r--r--app/scripts/lib/message-manager.js52
-rw-r--r--app/scripts/metamask-controller.js14
2 files changed, 28 insertions, 38 deletions
diff --git a/app/scripts/lib/message-manager.js b/app/scripts/lib/message-manager.js
index 18bf54ae1..38fa42017 100644
--- a/app/scripts/lib/message-manager.js
+++ b/app/scripts/lib/message-manager.js
@@ -6,18 +6,11 @@ const createId = require('./random-id')
module.exports = class MessageManager extends EventEmitter{
constructor (opts) {
super()
- this.memStore = new ObservableStore({ messages: [] })
- }
-
- getState() {
- return {
- unapprovedMsgs: this.getUnapprovedMsgs(),
- messages: this.getMsgList(),
- }
- }
-
- getMsgList () {
- return this.memStore.getState().messages
+ this.memStore = new ObservableStore({
+ unapprovedMsgs: {},
+ unapprovedMsgCount: 0,
+ })
+ this.messages = []
}
get unapprovedMsgCount () {
@@ -25,8 +18,7 @@ module.exports = class MessageManager extends EventEmitter{
}
getUnapprovedMsgs () {
- let messages = this.getMsgList()
- return messages.filter(msg => msg.status === 'unapproved')
+ return this.messages.filter(msg => msg.status === 'unapproved')
.reduce((result, msg) => { result[msg.id] = msg; return result }, {})
}
@@ -41,10 +33,6 @@ module.exports = class MessageManager extends EventEmitter{
status: 'unapproved',
}
this.addMsg(msgData)
- console.log('addUnapprovedMessage:', msgData)
-
- // keep the cb around for after approval (requires user interaction)
- // This cb fires completion to the Dapp's write operation.
// signal update
this.emit('update')
@@ -52,15 +40,12 @@ module.exports = class MessageManager extends EventEmitter{
}
addMsg (msg) {
- let messages = this.getMsgList()
- messages.push(msg)
- this._saveMsgList(messages)
+ this.messages.push(msg)
+ this._saveMsgList()
}
getMsg (msgId) {
- let messages = this.getMsgList()
- let matching = messages.filter(msg => msg.id === msgId)
- return matching.length > 0 ? matching[0] : null
+ return this.messages.find(msg => msg.id === msgId)
}
approveMessage (msgParams) {
@@ -85,7 +70,10 @@ module.exports = class MessageManager extends EventEmitter{
brodcastMessage (rawSig, msgId, status) {
this.emit(`${msgId}:finished`, {status, rawSig})
}
-// PRIVATE METHODS
+
+ //
+ // PRIVATE METHODS
+ //
_setMsgStatus (msgId, status) {
let msg = this.getMsg(msgId)
@@ -94,18 +82,18 @@ module.exports = class MessageManager extends EventEmitter{
}
_updateMsg (msg) {
- let messages = this.getMsgList()
- let index = messages.findIndex((message) => message.id === msg.id)
+ let index = this.messages.findIndex((message) => message.id === msg.id)
if (index !== -1) {
- messages[index] = msg
+ this.messages[index] = msg
}
- this._saveMsgList(messages)
+ this._saveMsgList()
}
- _saveMsgList (msgList) {
+ _saveMsgList () {
+ const unapprovedMsgs = this.getUnapprovedMsgs()
+ const unapprovedMsgCount = Object.keys(unapprovedMsgs).length
+ this.memStore.updateState({ unapprovedMsgs, unapprovedMsgCount })
this.emit('updateBadge')
- this.memStore.updateState({ messages: msgList })
}
-
}
diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js
index 02dd60528..b6a096488 100644
--- a/app/scripts/metamask-controller.js
+++ b/app/scripts/metamask-controller.js
@@ -100,17 +100,19 @@ module.exports = class MetamaskController extends EventEmitter {
configManager: this.configManager,
})
- // manual state subscriptions
- this.ethStore.on('update', this.sendUpdate.bind(this))
- this.keyringController.on('update', this.sendUpdate.bind(this))
- this.txManager.on('update', this.sendUpdate.bind(this))
- this.messageManager.on('update', this.sendUpdate.bind(this))
+ // manual disk state subscriptions
this.keyringController.store.subscribe((state) => {
this.store.updateState({ KeyringController: state })
})
this.preferencesController.store.subscribe((state) => {
this.store.updateState({ PreferencesController: state })
})
+
+ // manual mem state subscriptions
+ this.ethStore.on('update', this.sendUpdate.bind(this))
+ this.keyringController.memStore.subscribe(this.sendUpdate.bind(this))
+ this.txManager.on('update', this.sendUpdate.bind(this))
+ this.messageManager.memStore.subscribe(this.sendUpdate.bind(this))
}
//
@@ -176,7 +178,7 @@ module.exports = class MetamaskController extends EventEmitter {
this.state,
this.ethStore.getState(),
this.txManager.getState(),
- this.messageManager.getState(),
+ this.messageManager.memStore.getState(),
this.keyringController.memStore.getState(),
this.preferencesController.store.getState(),
this.noticeController.getState(),