diff --git a/dev/Common/Cache.js b/dev/Common/Cache.js index a433fc772..9b2405a49 100644 --- a/dev/Common/Cache.js +++ b/dev/Common/Cache.js @@ -128,16 +128,12 @@ export class MessageFlagsCache } if (thread.length) { - const unseenSubUid = thread.find(iSubUid => + message.hasUnseenSubMessage(!!thread.find(iSubUid => (uid !== iSubUid) && !this.hasFlag(message.folder, iSubUid, '\\seen') - ); - - const flaggedSubUid = thread.find(iSubUid => + )); + message.hasFlaggedSubMessage(!!thread.find(iSubUid => (uid !== iSubUid) && this.hasFlag(message.folder, iSubUid, '\\flagged') - ); - - message.hasUnseenSubMessage(!!unseenSubUid); - message.hasFlaggedSubMessage(!!flaggedSubUid); + )); } } } diff --git a/dev/Model/Message.js b/dev/Model/Message.js index 3ecf2935f..20cd0c408 100644 --- a/dev/Model/Message.js +++ b/dev/Model/Message.js @@ -18,6 +18,7 @@ import { AbstractModel } from 'Knoin/AbstractModel'; import PreviewHTML from 'Html/PreviewMessage.html'; +//import { MessageFlagsCache } from 'Common/Cache'; import Remote from 'Remote/User/Fetch'; const @@ -44,6 +45,7 @@ const } else { message.flags.push(lower); } +// MessageFlagsCache.setFor(message.folder, message.uid, message.flags()); } }, { Folder: message.folder, diff --git a/dev/Stores/User/Messagelist.js b/dev/Stores/User/Messagelist.js index 9db7933c9..68c535360 100644 --- a/dev/Stores/User/Messagelist.js +++ b/dev/Stores/User/Messagelist.js @@ -260,27 +260,25 @@ MessagelistUserStore.reload = (bDropPagePosition = false, bDropCurrentFolderCach MessagelistUserStore.setAction = (sFolderFullName, iSetAction, messages) => { messages = messages || MessagelistUserStore.listChecked(); - let folder = null, + let folder, alreadyUnread = 0, rootUids = messages.map(oMessage => oMessage && oMessage.uid ? oMessage.uid : null) .validUnique(), length = rootUids.length; if (sFolderFullName && length) { + rootUids.forEach(sSubUid => + alreadyUnread += MessageFlagsCache.storeBySetAction(sFolderFullName, sSubUid, iSetAction) + ); switch (iSetAction) { case MessageSetAction.SetSeen: length = 0; // fallthrough is intentionally case MessageSetAction.UnsetSeen: - rootUids.forEach(sSubUid => - alreadyUnread += MessageFlagsCache.storeBySetAction(sFolderFullName, sSubUid, iSetAction) - ); - folder = getFolderFromCacheList(sFolderFullName); if (folder) { folder.unreadEmails(folder.unreadEmails() - alreadyUnread + length); } - Remote.request('MessageSetSeen', null, { Folder: sFolderFullName, Uids: rootUids.join(','), @@ -290,9 +288,6 @@ MessagelistUserStore.setAction = (sFolderFullName, iSetAction, messages) => { case MessageSetAction.SetFlag: case MessageSetAction.UnsetFlag: - rootUids.forEach(sSubUid => - MessageFlagsCache.storeBySetAction(sFolderFullName, sSubUid, iSetAction) - ); Remote.request('MessageSetFlagged', null, { Folder: sFolderFullName, Uids: rootUids.join(','),