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) {
|
module.exports = class MessageManager extends EventEmitter{
|
||||||
this.messages = []
|
constructor (opts) {
|
||||||
}
|
super()
|
||||||
|
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)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
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