1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-12-23 09:52:26 +01:00

Rewrite message controller to fit controller pattern

This commit is contained in:
Frankie 2017-01-27 14:16:35 -08:00
parent 41bc9c221e
commit 451845142e

View File

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