From 274ebd6855b27fbc6082d2e154f226da1e7061ea Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Tue, 22 Nov 2022 15:26:16 +0100 Subject: [PATCH] Resolve #684 --- dev/Stores/User/Messagelist.js | 74 +++++++++++++++++----------------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/dev/Stores/User/Messagelist.js b/dev/Stores/User/Messagelist.js index 274917f03..afadf110a 100644 --- a/dev/Stores/User/Messagelist.js +++ b/dev/Stores/User/Messagelist.js @@ -347,7 +347,7 @@ MessagelistUserStore.removeMessagesFromList = ( fromFolderFullName, oUids, toFolderFullName = '', copy = false ) => { let unseenCount = 0, - messageList = MessagelistUserStore, + setPage = 0, currentMessage = MessageUserStore.message(); const trashFolder = FolderUserStore.trashFolder(), @@ -356,7 +356,7 @@ MessagelistUserStore.removeMessagesFromList = ( toFolder = toFolderFullName ? getFolderFromCacheList(toFolderFullName) : null, messages = FolderUserStore.currentFolderFullName() === fromFolderFullName - ? messageList.filter(item => item && oUids.has(item.uid)) + ? MessagelistUserStore.filter(item => item && oUids.has(item.uid)) : []; messages.forEach(item => item?.isUnseen() && ++unseenCount); @@ -406,47 +406,47 @@ MessagelistUserStore.removeMessagesFromList = ( item.deleted(true); }); - setTimeout(() => messages.forEach(item => messageList.remove(item)), 350); + setTimeout(() => messages.forEach(item => MessagelistUserStore.remove(item)), 350); + + const + count = MessagelistUserStore.count() - messages.length, + page = MessagelistUserStore.page(); + MessagelistUserStore.count(count); + if (page > MessagelistUserStore.pageCount()) { + setPage = MessagelistUserStore.pageCount(); + } } } - if (MessagelistUserStore.threadUid()) { - if ( - messageList.length && - messageList.find(item => item?.deleted() && item.uid == MessagelistUserStore.threadUid()) - ) { - const message = messageList.find(item => item && !item.deleted()); - let setHash; - if (!message) { - if (1 < MessagelistUserStore.page()) { - MessagelistUserStore.page(MessagelistUserStore.page() - 1); - setHash = 1; - } else { - MessagelistUserStore.threadUid(0); - replaceHash( - mailBox( - FolderUserStore.currentFolderFullNameHash(), - MessagelistUserStore.pageBeforeThread(), - MessagelistUserStore.listSearch() - ) - ); - } - } else if (MessagelistUserStore.threadUid() != message.uid) { - MessagelistUserStore.threadUid(message.uid); - setHash = 1; - } - if (setHash) { - replaceHash( - mailBox( - FolderUserStore.currentFolderFullNameHash(), - MessagelistUserStore.page(), - MessagelistUserStore.listSearch(), - MessagelistUserStore.threadUid() - ) - ); + if (MessagelistUserStore.threadUid() + && MessagelistUserStore.length + && MessagelistUserStore.find(item => item?.deleted() && item.uid == MessagelistUserStore.threadUid()) + ) { + const message = MessagelistUserStore.find(item => item && !item.deleted()); + if (!message) { + if (1 < MessagelistUserStore.page()) { + setPage = MessagelistUserStore.page() - 1; + } else { + MessagelistUserStore.threadUid(0); + setPage = MessagelistUserStore.pageBeforeThread(); } + } else if (MessagelistUserStore.threadUid() != message.uid) { + MessagelistUserStore.threadUid(message.uid); + setPage = MessagelistUserStore.page(); } } + + if (setPage) { + MessagelistUserStore.page(setPage); + replaceHash( + mailBox( + FolderUserStore.currentFolderFullNameHash(), + setPage, + MessagelistUserStore.listSearch(), + MessagelistUserStore.threadUid() + ) + ); + } }, MessagelistUserStore.reloadFlagsAndCachedMessage = () => {