From e0adf7accdc012ea20366db83d1545e724498518 Mon Sep 17 00:00:00 2001 From: djmaze Date: Thu, 19 Aug 2021 21:31:08 +0200 Subject: [PATCH] Bugfix and simplify broken folderListOptionsBuilder() due to changes for #112 --- dev/Common/UtilsUser.js | 97 ++++++------------- dev/View/Popup/Filter.js | 1 - dev/View/Popup/FolderCreate.js | 1 - dev/View/Popup/FolderSystem.js | 1 - dev/View/User/MailBox/MessageList.js | 1 - .../templates/Views/User/MailMessageList.html | 2 +- 6 files changed, 31 insertions(+), 72 deletions(-) diff --git a/dev/Common/UtilsUser.js b/dev/Common/UtilsUser.js index 71b3ceb9b..2713ac10a 100644 --- a/dev/Common/UtilsUser.js +++ b/dev/Common/UtilsUser.js @@ -214,7 +214,6 @@ rl.Utils = { }; /** - * @param {Array} aSystem * @param {Array=} aDisabled * @param {Array=} aHeaderLines * @param {Function=} fDisableCallback @@ -223,7 +222,6 @@ rl.Utils = { * @returns {Array} */ export function folderListOptionsBuilder( - aSystem, aDisabled, aHeaderLines, fRenameCallback, @@ -231,86 +229,51 @@ export function folderListOptionsBuilder( bNoSelectSelectable, aList = FolderUserStore.folderList() ) { - let /** - * @type {?FolderModel} - */ - bSep = false, - aResult = []; +// FolderUserStore.folderListSystem() - const sDeepPrefix = '\u00A0\u00A0\u00A0', + const + aResult = [], + sDeepPrefix = '\u00A0\u00A0\u00A0', // FolderSystemPopupView should always be true - showUnsubscribed = (aSystem.length || bNoSelectSelectable) ? !SettingsUserStore.hideUnsubscribed() : true; + showUnsubscribed = fRenameCallback ? !SettingsUserStore.hideUnsubscribed() : true, + + foldersWalk = folders => { + folders.forEach(oItem => { + if (showUnsubscribed || oItem.subscribed() || !oItem.exists || oItem.hasSubscribedSubfolders()) { + aResult.push({ + id: oItem.fullNameRaw, + name: + sDeepPrefix.repeat(oItem.deep) + + fRenameCallback(oItem), + system: false, + disabled: !bNoSelectSelectable && ( + !oItem.selectable || + aDisabled.includes(oItem.fullNameRaw) || + fDisableCallback(oItem)) + }); + } + + if (oItem.subFolders.length) { + foldersWalk(oItem.subFolders()); + } + }); + }; + fDisableCallback = fDisableCallback || (() => false); fRenameCallback = fRenameCallback || (oItem => oItem.name()); - - if (!isArray(aDisabled)) { - aDisabled = []; - } + isArray(aDisabled) || (aDisabled = []); isArray(aHeaderLines) && aHeaderLines.forEach(line => aResult.push({ id: line[0], name: line[1], system: false, - dividerbar: false, disabled: false }) ); - bSep = true; - aSystem.forEach(oItem => { - aResult.push({ - id: oItem.fullNameRaw, - name: fRenameCallback(oItem), - system: true, - dividerbar: bSep, - disabled: - !oItem.selectable || - aDisabled.includes(oItem.fullNameRaw) || - fDisableCallback(oItem) - }); - bSep = false; - }); - - bSep = true; - aList.forEach(oItem => { -/* - if ((oItem.subscribed() || !oItem.exists || bBuildUnvisible) - && (oItem.selectable || oItem.hasSubscribedSubfolders()) - && (FolderType.User === oItem.type() || !bSystem || oItem.hasSubscribedSubfolders()) { - ) { -*/ - if (showUnsubscribed || oItem.subscribed() || !oItem.exists || oItem.hasSubscribedSubfolders()) { - aResult.push({ - id: oItem.fullNameRaw, - name: - sDeepPrefix.repeat(oItem.deep) + - fRenameCallback(oItem), - system: false, - dividerbar: bSep, - disabled: !bNoSelectSelectable && ( - !oItem.selectable || - aDisabled.includes(oItem.fullNameRaw) || - fDisableCallback(oItem)) - }); - bSep = false; - } - - if (oItem.subFolders.length) { - aResult = aResult.concat( - folderListOptionsBuilder( - [], - aDisabled, - [], - fDisableCallback, - fRenameCallback, - bNoSelectSelectable, - oItem.subFolders() - ) - ); - } - }); + foldersWalk(aList); return aResult; } diff --git a/dev/View/Popup/Filter.js b/dev/View/Popup/Filter.js index b41b472fe..55a4613fb 100644 --- a/dev/View/Popup/Filter.js +++ b/dev/View/Popup/Filter.js @@ -29,7 +29,6 @@ class FilterPopupView extends AbstractViewPopup { this.defaultOptionsAfterRender = defaultOptionsAfterRender; this.folderSelectList = ko.computed(() => folderListOptionsBuilder( - FolderUserStore.folderListSystem(), [FolderUserStore.sieveAllowFileintoInbox ? '' : 'INBOX'], [['', '']], item => item ? item.localName() : '' diff --git a/dev/View/Popup/FolderCreate.js b/dev/View/Popup/FolderCreate.js index 4521c2f7a..8783186c9 100644 --- a/dev/View/Popup/FolderCreate.js +++ b/dev/View/Popup/FolderCreate.js @@ -24,7 +24,6 @@ class FolderCreatePopupView extends AbstractViewPopup { this.parentFolderSelectList = ko.computed(() => folderListOptionsBuilder( - [], [], [['', '']], oItem => diff --git a/dev/View/Popup/FolderSystem.js b/dev/View/Popup/FolderSystem.js index 961b6e36b..31e3e0577 100644 --- a/dev/View/Popup/FolderSystem.js +++ b/dev/View/Popup/FolderSystem.js @@ -29,7 +29,6 @@ class FolderSystemPopupView extends AbstractViewPopup { this.folderSelectList = ko.computed(() => folderListOptionsBuilder( - [], FolderUserStore.folderListSystemNames(), [ ['', this.sChooseOnText], diff --git a/dev/View/User/MailBox/MessageList.js b/dev/View/User/MailBox/MessageList.js index 1fb3ad8cc..f8baa23e0 100644 --- a/dev/View/User/MailBox/MessageList.js +++ b/dev/View/User/MailBox/MessageList.js @@ -80,7 +80,6 @@ export class MessageListMailBoxUserView extends AbstractViewRight { this.messageListError = MessageUserStore.listError; this.folderMenuForMove = ko.computed(() => folderListOptionsBuilder( - FolderUserStore.folderListSystem(), [FolderUserStore.currentFolderFullNameRaw()], [], item => item ? item.localName() : '' 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 d6e9f7406..4cbc25b3a 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 @@ -18,7 +18,7 @@