webmail tweaks

- padding on small attachment download button.
- don't remember "show html" but always display text first.
- propagate modseq to message when flags/keywords change, so "show internals" shows the update.
This commit is contained in:
Mechiel Lukkien
2023-08-10 10:56:04 +02:00
parent f48a53726e
commit c24bb063e5
2 changed files with 23 additions and 23 deletions

View File

@ -2208,7 +2208,8 @@ const newMsgitemView = (mi, msglistView, othermb) => {
const e = dom.span(dom._class('msgitemmailbox'), name === othermb.Name ? [] : attr.title(othermb.Name), name);
mailboxtag.push(e);
}
const updateFlags = (mask, flags, keywords) => {
const updateFlags = (modseq, mask, flags, keywords) => {
msgitemView.messageitem.Message.ModSeq = modseq;
const maskobj = mask;
const flagsobj = flags;
const mobj = msgitemView.messageitem.Message;
@ -2412,7 +2413,6 @@ const newMsgView = (miv, msglistView, listMailboxes, possibleLabels, messageLoad
return;
}
loadHTML();
settingsPut({ ...settings, showHTML: true });
activeBtn(htmlbtn);
};
const cmdShowHTMLExternal = async () => {
@ -2420,7 +2420,6 @@ const newMsgView = (miv, msglistView, listMailboxes, possibleLabels, messageLoad
return;
}
loadHTMLexternal();
settingsPut({ ...settings, showHTML: true });
activeBtn(htmlextbtn);
};
const cmdShowHTMLCycle = async () => {
@ -2591,10 +2590,10 @@ const newMsgView = (miv, msglistView, listMailboxes, possibleLabels, messageLoad
const eye = '👁';
const dl = '⤓'; // \u2913, actually ⭳ \u2b73 would be better, but in fewer fonts (at least macos)
const dlurl = 'msg/' + m.ID + '/download/' + [0].concat(a.Path || []).join('.');
const viewbtn = dom.clickbutton(eye, viewable ? ' ' + name : [], attr.title('View this file. Size: ' + size), style({ lineHeight: '1.5' }), function click() {
const viewbtn = dom.clickbutton(eye, viewable ? ' ' + name : style({ padding: '0px 0.25em' }), attr.title('View this file. Size: ' + size), style({ lineHeight: '1.5' }), function click() {
view(a);
});
const dlbtn = dom.a(dom._class('button'), attr.download(''), attr.href(dlurl), dl, viewable ? [] : ' ' + name, attr.title('Download this file. Size: ' + size), style({ lineHeight: '1.5' }));
const dlbtn = dom.a(dom._class('button'), attr.download(''), attr.href(dlurl), dl, viewable ? style({ padding: '0px 0.25em' }) : ' ' + name, attr.title('Download this file. Size: ' + size), style({ lineHeight: '1.5' }));
if (viewable) {
return [dom.span(dom._class('btngroup'), viewbtn, dlbtn), ' '];
}
@ -2625,7 +2624,8 @@ const newMsgView = (miv, msglistView, listMailboxes, possibleLabels, messageLoad
messageitem: mi,
key: keyHandler(shortcuts),
aborter: { abort: () => { } },
updateKeywords: (keywords) => {
updateKeywords: (modseq, keywords) => {
mi.Message.ModSeq = modseq;
mi.Message.Keywords = keywords;
loadMsgheaderView(msgheaderElem, miv.messageitem, refineKeyword);
},
@ -2846,7 +2846,7 @@ const newMsglistView = (msgElem, listMailboxes, setLocationHash, otherMailbox, p
};
const mlv = {
root: dom.div(),
updateFlags: (mailboxID, uid, mask, flags, keywords) => {
updateFlags: (mailboxID, uid, modseq, mask, flags, keywords) => {
// todo optimize: keep mapping of uid to msgitemView for performance. instead of using Array.find
const miv = msgitemViews.find(miv => miv.messageitem.Message.MailboxID === mailboxID && miv.messageitem.Message.UID === uid);
if (!miv) {
@ -2854,9 +2854,9 @@ const newMsglistView = (msgElem, listMailboxes, setLocationHash, otherMailbox, p
log('could not find msgitemView for uid', uid);
return;
}
miv.updateFlags(mask, flags, keywords);
miv.updateFlags(modseq, mask, flags, keywords);
if (msgView && msgView.messageitem.Message.ID === miv.messageitem.Message.ID) {
msgView.updateKeywords(keywords);
msgView.updateKeywords(modseq, keywords);
}
},
addMessageItems: (messageItems) => {
@ -4662,7 +4662,7 @@ const init = async () => {
}
else if (tag === 'ChangeMsgFlags') {
const c = api.parser.ChangeMsgFlags(x);
msglistView.updateFlags(c.MailboxID, c.UID, c.Mask, c.Flags, c.Keywords || []);
msglistView.updateFlags(c.MailboxID, c.UID, c.ModSeq, c.Mask, c.Flags, c.Keywords || []);
}
else if (tag === 'ChangeMailboxRemove') {
const c = api.parser.ChangeMailboxRemove(x);