Cleanup some MessageFlagsCache handling

This commit is contained in:
the-djmaze 2022-06-07 15:48:16 +02:00
parent 42fe9ae1ba
commit 78a3b1a5be
3 changed files with 10 additions and 17 deletions

View file

@ -128,16 +128,12 @@ export class MessageFlagsCache
} }
if (thread.length) { if (thread.length) {
const unseenSubUid = thread.find(iSubUid => message.hasUnseenSubMessage(!!thread.find(iSubUid =>
(uid !== iSubUid) && !this.hasFlag(message.folder, iSubUid, '\\seen') (uid !== iSubUid) && !this.hasFlag(message.folder, iSubUid, '\\seen')
); ));
message.hasFlaggedSubMessage(!!thread.find(iSubUid =>
const flaggedSubUid = thread.find(iSubUid =>
(uid !== iSubUid) && this.hasFlag(message.folder, iSubUid, '\\flagged') (uid !== iSubUid) && this.hasFlag(message.folder, iSubUid, '\\flagged')
); ));
message.hasUnseenSubMessage(!!unseenSubUid);
message.hasFlaggedSubMessage(!!flaggedSubUid);
} }
} }
} }

View file

@ -18,6 +18,7 @@ import { AbstractModel } from 'Knoin/AbstractModel';
import PreviewHTML from 'Html/PreviewMessage.html'; import PreviewHTML from 'Html/PreviewMessage.html';
//import { MessageFlagsCache } from 'Common/Cache';
import Remote from 'Remote/User/Fetch'; import Remote from 'Remote/User/Fetch';
const const
@ -44,6 +45,7 @@ const
} else { } else {
message.flags.push(lower); message.flags.push(lower);
} }
// MessageFlagsCache.setFor(message.folder, message.uid, message.flags());
} }
}, { }, {
Folder: message.folder, Folder: message.folder,

View file

@ -260,27 +260,25 @@ MessagelistUserStore.reload = (bDropPagePosition = false, bDropCurrentFolderCach
MessagelistUserStore.setAction = (sFolderFullName, iSetAction, messages) => { MessagelistUserStore.setAction = (sFolderFullName, iSetAction, messages) => {
messages = messages || MessagelistUserStore.listChecked(); messages = messages || MessagelistUserStore.listChecked();
let folder = null, let folder,
alreadyUnread = 0, alreadyUnread = 0,
rootUids = messages.map(oMessage => oMessage && oMessage.uid ? oMessage.uid : null) rootUids = messages.map(oMessage => oMessage && oMessage.uid ? oMessage.uid : null)
.validUnique(), .validUnique(),
length = rootUids.length; length = rootUids.length;
if (sFolderFullName && length) { if (sFolderFullName && length) {
rootUids.forEach(sSubUid =>
alreadyUnread += MessageFlagsCache.storeBySetAction(sFolderFullName, sSubUid, iSetAction)
);
switch (iSetAction) { switch (iSetAction) {
case MessageSetAction.SetSeen: case MessageSetAction.SetSeen:
length = 0; length = 0;
// fallthrough is intentionally // fallthrough is intentionally
case MessageSetAction.UnsetSeen: case MessageSetAction.UnsetSeen:
rootUids.forEach(sSubUid =>
alreadyUnread += MessageFlagsCache.storeBySetAction(sFolderFullName, sSubUid, iSetAction)
);
folder = getFolderFromCacheList(sFolderFullName); folder = getFolderFromCacheList(sFolderFullName);
if (folder) { if (folder) {
folder.unreadEmails(folder.unreadEmails() - alreadyUnread + length); folder.unreadEmails(folder.unreadEmails() - alreadyUnread + length);
} }
Remote.request('MessageSetSeen', null, { Remote.request('MessageSetSeen', null, {
Folder: sFolderFullName, Folder: sFolderFullName,
Uids: rootUids.join(','), Uids: rootUids.join(','),
@ -290,9 +288,6 @@ MessagelistUserStore.setAction = (sFolderFullName, iSetAction, messages) => {
case MessageSetAction.SetFlag: case MessageSetAction.SetFlag:
case MessageSetAction.UnsetFlag: case MessageSetAction.UnsetFlag:
rootUids.forEach(sSubUid =>
MessageFlagsCache.storeBySetAction(sFolderFullName, sSubUid, iSetAction)
);
Remote.request('MessageSetFlagged', null, { Remote.request('MessageSetFlagged', null, {
Folder: sFolderFullName, Folder: sFolderFullName,
Uids: rootUids.join(','), Uids: rootUids.join(','),