From f451af2188e439271c7042240734242c98d4418d Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Wed, 7 Sep 2022 23:39:46 +0200 Subject: [PATCH] Centralize current Folder checks to prevent bugs (which there were) --- dev/Stores/User/Messagelist.js | 24 ++++++++ dev/View/User/MailBox/MessageList.js | 26 ++------ dev/View/User/MailBox/MessageView.js | 60 ++++--------------- .../templates/Views/User/MailMessageList.html | 4 +- .../templates/Views/User/MailMessageView.html | 12 ++-- 5 files changed, 46 insertions(+), 80 deletions(-) diff --git a/dev/Stores/User/Messagelist.js b/dev/Stores/User/Messagelist.js index 20fee8a71..9d3394f89 100644 --- a/dev/Stores/User/Messagelist.js +++ b/dev/Stores/User/Messagelist.js @@ -6,6 +6,7 @@ import { MessageSetAction } from 'Common/EnumsUser'; import { $htmlCL } from 'Common/Globals'; import { arrayLength, pInt, pString } from 'Common/Utils'; import { addObservablesTo, addComputablesTo } from 'External/ko'; +import { UNUSED_OPTION_VALUE } from 'Common/Consts'; import { getFolderInboxName, @@ -45,6 +46,7 @@ addObservablesTo(MessagelistUserStore, { page: 1, pageBeforeThread: 1, error: '', +// Folder: '', endHash: '', endThreadUid: 0, @@ -68,6 +70,28 @@ addComputablesTo(MessagelistUserStore, { return value; }, + isArchiveFolder: () => FolderUserStore.archiveFolder() === MessagelistUserStore().Folder, + + isDraftFolder: () => FolderUserStore.draftsFolder() === MessagelistUserStore().Folder, + + isSentFolder: () => FolderUserStore.sentFolder() === MessagelistUserStore().Folder, + + isSpamFolder: () => FolderUserStore.spamFolder() === MessagelistUserStore().Folder, + + isTrashFolder: () => FolderUserStore.trashFolder() === MessagelistUserStore().Folder, + + archiveAllowed: () => ![UNUSED_OPTION_VALUE, MessagelistUserStore().Folder].includes(FolderUserStore.archiveFolder()) + && !MessagelistUserStore.isDraftFolder(), + + spamAllowed: () => !(UNUSED_OPTION_VALUE === FolderUserStore.spamFolder() +// | MessagelistUserStore.isArchiveFolder() + | MessagelistUserStore.isSentFolder() + | MessagelistUserStore.isDraftFolder()), + + isSpamAllowed: () => MessagelistUserStore.spamAllowed() && !MessagelistUserStore.isSpamFolder(), + + isUnSpamAllowed: () => MessagelistUserStore.spamAllowed() && MessagelistUserStore.isSpamFolder(), + pageCount: () => Math.max(1, Math.ceil(MessagelistUserStore.count() / SettingsUserStore.messagesPerPage())), mainSearch: { diff --git a/dev/View/User/MailBox/MessageList.js b/dev/View/User/MailBox/MessageList.js index d94831820..71476e8b3 100644 --- a/dev/View/User/MailBox/MessageList.js +++ b/dev/View/User/MailBox/MessageList.js @@ -4,8 +4,6 @@ import { Scope } from 'Common/Enums'; import { ComposeType, FolderType, MessageSetAction } from 'Common/EnumsUser'; -import { UNUSED_OPTION_VALUE } from 'Common/Consts'; - import { doc, leftPanelDisabled, moveAction, Settings, SettingsCapa, SettingsGet, addEventsListeners, @@ -70,6 +68,9 @@ export class MailMessageList extends AbstractViewRight { this.allowDangerousActions = SettingsCapa('DangerousActions'); this.messageList = MessagelistUserStore; + this.archiveAllowed = MessagelistUserStore.archiveAllowed; + this.isSpamAllowed = MessagelistUserStore.isSpamAllowed; + this.isUnSpamAllowed = MessagelistUserStore.isUnSpamAllowed; this.composeInEdit = AppUserStore.composeInEdit; @@ -135,25 +136,6 @@ export class MailMessageList extends AbstractViewRight { return c && MessagelistUserStore().length > c; }, - isSpamFolder: () => (FolderUserStore.spamFolder() || 0) === MessagelistUserStore().Folder, - - isTrashFolder: () => (FolderUserStore.trashFolder() || 0) === MessagelistUserStore().Folder, - - isDraftFolder: () => (FolderUserStore.draftsFolder() || 0) === MessagelistUserStore().Folder, - - archiveAllowed: () => - (FolderUserStore.archiveFolder() || 0) !== MessagelistUserStore().Folder - && UNUSED_OPTION_VALUE !== FolderUserStore.archiveFolder() - && !this.isDraftFolder(), - - spamAllowed: () => UNUSED_OPTION_VALUE !== FolderUserStore.spamFolder() - && (FolderUserStore.sentFolder() || 0) !== MessagelistUserStore().Folder - && !this.isDraftFolder(), - - isSpamVisible: () => !this.isSpamFolder() && this.spamAllowed(), - - isUnSpamVisible: () => this.isSpamFolder() && this.spamAllowed(), - mobileCheckedStateShow: () => ThemeStore.isMobile() ? MessagelistUserStore.listChecked().length : 1, mobileCheckedStateHide: () => ThemeStore.isMobile() ? !MessagelistUserStore.listChecked().length : 1, @@ -596,7 +578,7 @@ export class MailMessageList extends AbstractViewRight { !MessagelistUserStore.error() && !MessagelistUserStore.endThreadUid() && MessagelistUserStore().length && - (this.isSpamFolder() || this.isTrashFolder()) + (MessagelistUserStore.isSpamFolder() || MessagelistUserStore.isTrashFolder()) ); } diff --git a/dev/View/User/MailBox/MessageView.js b/dev/View/User/MailBox/MessageView.js index 20b4d7613..c850491c4 100644 --- a/dev/View/User/MailBox/MessageView.js +++ b/dev/View/User/MailBox/MessageView.js @@ -1,7 +1,4 @@ import ko from 'ko'; -import { koComputable } from 'External/ko'; - -import { UNUSED_OPTION_VALUE } from 'Common/Consts'; import { Scope } from 'Common/Enums'; @@ -74,10 +71,10 @@ export class MailMessageView extends AbstractViewRight { */ createCommand = (fExecute, fCanExecute) => { let fResult = () => { - fResult.canExecute() && fExecute.call(null); + fCanExecute() && fExecute.call(null); return false; }; - fResult.canExecute = koComputable(() => fCanExecute()); + fResult.canExecute = fCanExecute; return fResult; }, @@ -114,8 +111,13 @@ export class MailMessageView extends AbstractViewRight { const attachmentsActions = Settings.app('attachmentsActions'); this.attachmentsActions = ko.observableArray(arrayLength(attachmentsActions) ? attachmentsActions : []); - this.message = MessageUserStore.message; this.hasCheckedMessages = MessagelistUserStore.hasCheckedMessages; + this.isDraftFolder = MessagelistUserStore.isDraftFolder; + this.archiveAllowed = MessagelistUserStore.archiveAllowed; + this.isSpamAllowed = MessagelistUserStore.isSpamAllowed; + this.isUnSpamAllowed = MessagelistUserStore.isUnSpamAllowed; + + this.message = MessageUserStore.message; this.messageLoadingThrottle = MessageUserStore.loading; this.messagesBodiesDom = MessageUserStore.bodiesDom; this.messageError = MessageUserStore.error; @@ -142,7 +144,7 @@ export class MailMessageView extends AbstractViewRight { messageVisibility: () => !MessageUserStore.loading() && !!currentMessage(), - canBeRepliedOrForwarded: () => !this.isDraftFolder() && this.messageVisibility(), + canBeRepliedOrForwarded: () => !MessagelistUserStore.isDraftFolder() && this.messageVisibility(), viewFromDkimVisibility: () => 'none' !== this.viewFromDkimData()[0], @@ -441,53 +443,11 @@ export class MailMessageView extends AbstractViewRight { }); } - /** - * @returns {boolean} - */ - isDraftFolder() { - return currentMessage() && FolderUserStore.draftsFolder() === currentMessage().folder; - } - - /** - * @returns {boolean} - */ - isSentFolder() { - return currentMessage() && FolderUserStore.sentFolder() === currentMessage().folder; - } - - /** - * @returns {boolean} - */ - isSpamFolder() { - return currentMessage() && FolderUserStore.spamFolder() === currentMessage().folder; - } - - /** - * @returns {boolean} - */ - isSpamDisabled() { - return currentMessage() && FolderUserStore.spamFolder() === UNUSED_OPTION_VALUE; - } - - /** - * @returns {boolean} - */ - isArchiveFolder() { - return currentMessage() && FolderUserStore.archiveFolder() === currentMessage().folder; - } - - /** - * @returns {boolean} - */ - isArchiveDisabled() { - return currentMessage() && FolderUserStore.archiveFolder() === UNUSED_OPTION_VALUE; - } - /** * @returns {boolean} */ isDraftOrSentFolder() { - return this.isDraftFolder() || this.isSentFolder(); + return MessagelistUserStore.isDraftFolder() || MessagelistUserStore.isSentFolder(); } composeClick() { diff --git a/snappymail/v/0.0.0/app/templates/Views/User/MailMessageList.html b/snappymail/v/0.0.0/app/templates/Views/User/MailMessageList.html index d4f96ccb9..7a05f495e 100644 --- a/snappymail/v/0.0.0/app/templates/Views/User/MailMessageList.html +++ b/snappymail/v/0.0.0/app/templates/Views/User/MailMessageList.html @@ -31,8 +31,8 @@
🗄 - ⚠ - + ⚠ + 🗑 diff --git a/snappymail/v/0.0.0/app/templates/Views/User/MailMessageView.html b/snappymail/v/0.0.0/app/templates/Views/User/MailMessageView.html index b795ce803..670ec3985 100644 --- a/snappymail/v/0.0.0/app/templates/Views/User/MailMessageView.html +++ b/snappymail/v/0.0.0/app/templates/Views/User/MailMessageView.html @@ -8,9 +8,9 @@ 🖉
- 🗄 - ⚠ - + 🗄 + ⚠ + 🗑 @@ -65,13 +65,13 @@
-
  • +
  • -
  • +
  • -
  • +