RSNewWebUI/webui-src/app/mail/mail_resolver.js
2020-01-15 19:45:27 +05:30

62 lines
1.5 KiB
JavaScript

let m = require('mithril');
let rs = require('rswebui');
let util = require('mail/mail_util');
let widget = require('widgets');
const Messages = {
all: [],
inbox: [],
sent: [],
outbox: [],
drafts: [],
load() {
rs.rsJsonApiRequest('/rsMsgs/getMessageSummaries', {},
(data) => {
Messages.all = data.msgList
Messages.inbox = Messages.all.filter(
(msg) => (msg.msgflags & util.RS_MSG_BOXMASK) === util.RS_MSG_INBOX);
Messages.sent = Messages.all.filter(
(msg) => (msg.msgflags & util.RS_MSG_BOXMASK) === util.RS_MSG_SENTBOX);
Messages.outbox = Messages.all.filter(
(msg) => (msg.msgflags & util.RS_MSG_BOXMASK) === util.RS_MSG_OUTBOX);
Messages.drafts = Messages.all.filter(
(msg) => (msg.msgflags & util.RS_MSG_BOXMASK) === util.RS_MSG_DRAFTBOX);
});
},
}
let sections = {
inbox: require('mail/mail_inbox'),
outbox: require('mail/mail_outbox'),
drafts: require('mail/mail_draftbox'),
sent: require('mail/mail_sentbox'),
};
const Layout = {
oninit: Messages.load,
view: vnode => m('.tab-page', [
m(widget.Sidebar, {
tabs: Object.keys(sections),
baseRoute: '/mail/',
}),
m('.node-panel', vnode.children),
])
};
module.exports = {
view: (v) => {
const tab = v.attrs.tab;
// TODO: utilize multiple routing params
if(v.attrs.hasOwnProperty('msgId')) {
return m(Layout, m(util.MessageView, {
id: v.attrs.msgId,
}))
}
return m(Layout, m(sections[tab], {
list: Messages[tab],
}));
},
};