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:
parent
41bc9c221e
commit
451845142e
@ -1,61 +1,58 @@
|
||||
module.exports = new MessageManager()
|
||||
const EventEmitter = require('events')
|
||||
|
||||
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
|
||||
module.exports = class MessageManager extends EventEmitter{
|
||||
constructor (opts) {
|
||||
super()
|
||||
this.messages = []
|
||||
}
|
||||
this._saveMsgList(messages)
|
||||
}
|
||||
|
||||
getMsgList () {
|
||||
return this.messages
|
||||
}
|
||||
|
||||
unconfirmedMsgs () {
|
||||
let messages = this.getMsgList()
|
||||
return messages.filter(msg => msg.status === 'unconfirmed')
|
||||
.reduce((result, msg) => { result[msg.id] = msg; return result }, {})
|
||||
}
|
||||
|
||||
_saveMsgList (msgList) {
|
||||
this.messages = msgList
|
||||
}
|
||||
|
||||
addMsg (msg) {
|
||||
let messages = this.getMsgList()
|
||||
messages.push(msg)
|
||||
this._saveMsgList(messages)
|
||||
}
|
||||
|
||||
getMsg (msgId) {
|
||||
let messages = this.getMsgList()
|
||||
let matching = messages.filter(msg => msg.id === msgId)
|
||||
return matching.length > 0 ? matching[0] : null
|
||||
}
|
||||
|
||||
confirmMsg (msgId) {
|
||||
this._setMsgStatus(msgId, 'confirmed')
|
||||
}
|
||||
|
||||
rejectMsg (msgId) {
|
||||
this._setMsgStatus(msgId, 'rejected')
|
||||
}
|
||||
|
||||
_setMsgStatus (msgId, status) {
|
||||
let msg = this.getMsg(msgId)
|
||||
if (msg) msg.status = status
|
||||
this.updateMsg(msg)
|
||||
}
|
||||
|
||||
updateMsg (msg) {
|
||||
let messages = this.getMsgList()
|
||||
let index = messages.findIndex((message) => message.id === msg.id)
|
||||
if (index !== -1) {
|
||||
this.emit('update', msg.id)
|
||||
messages[index] = msg
|
||||
}
|
||||
this._saveMsgList(messages)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user