|
|
|
@ -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 = [] |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
MessageManager.prototype.getMsgList = function () { |
|
|
|
|
getMsgList () { |
|
|
|
|
return this.messages |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
MessageManager.prototype.unconfirmedMsgs = function () { |
|
|
|
|
var messages = this.getMsgList() |
|
|
|
|
unconfirmedMsgs () { |
|
|
|
|
let messages = this.getMsgList() |
|
|
|
|
return messages.filter(msg => msg.status === 'unconfirmed') |
|
|
|
|
.reduce((result, msg) => { result[msg.id] = msg; return result }, {}) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
MessageManager.prototype._saveMsgList = function (msgList) { |
|
|
|
|
_saveMsgList (msgList) { |
|
|
|
|
this.messages = msgList |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
MessageManager.prototype.addMsg = function (msg) { |
|
|
|
|
var messages = this.getMsgList() |
|
|
|
|
addMsg (msg) { |
|
|
|
|
let 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) |
|
|
|
|
getMsg (msgId) { |
|
|
|
|
let messages = this.getMsgList() |
|
|
|
|
let matching = messages.filter(msg => msg.id === msgId) |
|
|
|
|
return matching.length > 0 ? matching[0] : null |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
MessageManager.prototype.confirmMsg = function (msgId) { |
|
|
|
|
confirmMsg (msgId) { |
|
|
|
|
this._setMsgStatus(msgId, 'confirmed') |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
MessageManager.prototype.rejectMsg = function (msgId) { |
|
|
|
|
rejectMsg (msgId) { |
|
|
|
|
this._setMsgStatus(msgId, 'rejected') |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
MessageManager.prototype._setMsgStatus = function (msgId, status) { |
|
|
|
|
var msg = this.getMsg(msgId) |
|
|
|
|
_setMsgStatus (msgId, status) { |
|
|
|
|
let 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) { |
|
|
|
|
|
|
|
|
|
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) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|