diff --git a/dev/Common/UtilsUser.js b/dev/Common/UtilsUser.js index 386a94356..b0d59ef6e 100644 --- a/dev/Common/UtilsUser.js +++ b/dev/Common/UtilsUser.js @@ -206,7 +206,7 @@ export function folderListOptionsBuilder( fRenameCallback(oItem), system: false, disabled: !bNoSelectSelectable && ( - !oItem.selectable || + !oItem.selectable() || aDisabled.includes(oItem.fullNameRaw) || fDisableCallback(oItem)) }); diff --git a/dev/Model/FolderCollection.js b/dev/Model/FolderCollection.js index 9d427687c..1db706489 100644 --- a/dev/Model/FolderCollection.js +++ b/dev/Model/FolderCollection.js @@ -189,12 +189,12 @@ export class FolderModel extends AbstractModel { this.deep = 0; this.expires = 0; - this.selectable = false; this.exists = true; this.addObservables({ name: '', type: FolderType.User, + selectable: false, focused: false, selected: false, @@ -266,7 +266,7 @@ export class FolderModel extends AbstractModel { hasSubscriptions: () => folder.subscribed() | folder.hasSubscribedSubfolders(), - canBeEdited: () => FolderType.User === folder.type() && folder.exists/* && folder.selectable*/, + canBeEdited: () => FolderType.User === folder.type() && folder.exists/* && folder.selectable()*/, visible: () => folder.hasSubscriptions() | !SettingsUserStore.hideUnsubscribed(), @@ -274,7 +274,7 @@ export class FolderModel extends AbstractModel { hidden: () => { let hasSubFolders = folder.hasSubscribedSubfolders(); - return (folder.isSystemFolder() || !folder.selectable) && !hasSubFolders; + return (folder.isSystemFolder() | !folder.selectable()) && !hasSubFolders; }, printableUnreadCount: () => { @@ -299,14 +299,12 @@ export class FolderModel extends AbstractModel { return null; }, - canBeDeleted: () => !folder.isSystemFolder() && folder.selectable, + canBeDeleted: () => !(folder.isSystemFolder() | !folder.selectable()), - canBeSubscribed: () => !folder.isSystemFolder() - && SettingsUserStore.hideUnsubscribed() - && folder.selectable - && Settings.app('useImapSubscribe'), + canBeSubscribed: () => Settings.app('useImapSubscribe') + && !(folder.isSystemFolder() | !SettingsUserStore.hideUnsubscribed() | !folder.selectable()), - canBeSelected: () => !folder.isSystemFolder() && folder.selectable, + canBeSelected: () => !(folder.isSystemFolder() | !folder.selectable()), localName: () => { let name = folder.name(); diff --git a/dev/Settings/User/Folders.js b/dev/Settings/User/Folders.js index 6404f4007..45b137270 100644 --- a/dev/Settings/User/Folders.js +++ b/dev/Settings/User/Folders.js @@ -94,17 +94,9 @@ export class FoldersUserSettings { this.folderForDeletion(null); if (folderToRemove) { - const fRemoveFolder = function(folder) { - if (folderToRemove === folder) { - return true; - } - //folder.subFolders.remove(fRemoveFolder); - return false; - }; - Local.set(ClientSideKeyName.FoldersLashHash, ''); - FolderUserStore.folderList.remove(fRemoveFolder); + folderToRemove.selectable(false); rl.app.foldersPromisesActionHelper( Remote.folderDelete(folderToRemove.fullNameRaw), diff --git a/dev/Stores/User/Folder.js b/dev/Stores/User/Folder.js index 721dd490d..9f18df18c 100644 --- a/dev/Stores/User/Folder.js +++ b/dev/Stores/User/Folder.js @@ -135,7 +135,7 @@ export const FolderUserStore = new class { list.forEach(folder => { if ( folder && - folder.selectable && + folder.selectable() && folder.exists && timeout > folder.expires && (folder.isSystemFolder() || (folder.subscribed() && (folder.checkable() || !bDisplaySpecSetting)))