From 1883b407a667d697775a1d0ab9a52712a4e94f16 Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Mon, 24 Apr 2023 12:01:09 +0200 Subject: [PATCH] TODO: Sieve issue on account switch When current domain has sieve but the new has not, or current has not and the new has --- dev/Screen/AbstractSettings.js | 46 ++++++++++++++++++---------------- dev/Screen/User/Settings.js | 2 ++ dev/Settings/User/Filters.js | 10 +++++++- 3 files changed, 36 insertions(+), 22 deletions(-) diff --git a/dev/Screen/AbstractSettings.js b/dev/Screen/AbstractSettings.js index 351453faa..6763ed403 100644 --- a/dev/Screen/AbstractSettings.js +++ b/dev/Screen/AbstractSettings.js @@ -25,31 +25,33 @@ export class AbstractSettingsScreen extends AbstractScreen { let settingsScreen = null, viewModelDom = null, RoutedSettingsViewModel = VIEW_MODELS.find( - SettingsViewModel => subName === SettingsViewModel.__rlSettingsData.route + SettingsViewModel => subName === SettingsViewModel.route ); if (RoutedSettingsViewModel) { // const vmPlace = elementById('V-SettingsPane') || elementById('V-AdminPane); - const vmPlace = this.viewModels[1].__dom; - if (RoutedSettingsViewModel.__vm) { - settingsScreen = RoutedSettingsViewModel.__vm; + const vmPlace = this.viewModels[1].__dom, + SettingsViewModelClass = RoutedSettingsViewModel.vmc; + if (SettingsViewModelClass.__vm) { + settingsScreen = SettingsViewModelClass.__vm; + viewModelDom = settingsScreen.viewModelDom; } else if (vmPlace) { viewModelDom = createElement('div',{ - id: 'V-Settings-' + RoutedSettingsViewModel.name.replace(/(User|Admin)Settings/,''), + id: 'V-Settings-' + SettingsViewModelClass.name.replace(/(User|Admin)Settings/,''), hidden: '' }) vmPlace.append(viewModelDom); - settingsScreen = new RoutedSettingsViewModel(); + settingsScreen = new SettingsViewModelClass(); settingsScreen.viewModelDom = viewModelDom; - RoutedSettingsViewModel.__dom = viewModelDom; - RoutedSettingsViewModel.__vm = settingsScreen; + SettingsViewModelClass.__dom = viewModelDom; + SettingsViewModelClass.__vm = settingsScreen; ko.applyBindingAccessorsToNode( viewModelDom, { - template: () => ({ name: RoutedSettingsViewModel.__rlSettingsData.template }) + template: () => ({ name: RoutedSettingsViewModel.template }) }, settingsScreen ); @@ -69,13 +71,13 @@ export class AbstractSettingsScreen extends AbstractScreen { // show settingsScreen.beforeShow?.(); - i18nToNodes(settingsScreen.viewModelDom); - settingsScreen.viewModelDom.hidden = false; + i18nToNodes(viewModelDom); + viewModelDom.hidden = false; settingsScreen.onShow?.(); this.menu.forEach(item => { item.selected( - item.route === RoutedSettingsViewModel.__rlSettingsData.route + item.route === RoutedSettingsViewModel.route ); }); @@ -92,20 +94,23 @@ export class AbstractSettingsScreen extends AbstractScreen { let subScreen = this.oCurrentSubScreen; if (subScreen) { subScreen.onHide?.(); - subScreen.viewModelDom.hidden = true; + subScreen. + .hidden = true; } } onBuild() { - VIEW_MODELS.forEach(SettingsViewModel => this.menu.push(SettingsViewModel.__rlSettingsData)); + // TODO: issue on account switch + // When current domain has sieve but the new has not, or current has not and the new has + // SettingsViewModel.disabled() || this.menu.push() + VIEW_MODELS.forEach(SettingsViewModel => this.menu.push(SettingsViewModel)); } routes() { const DefaultViewModel = VIEW_MODELS.find( - SettingsViewModel => SettingsViewModel.__rlSettingsData.isDefault + SettingsViewModel => SettingsViewModel.isDefault ), - defaultRoute = - DefaultViewModel ? DefaultViewModel.__rlSettingsData.route : 'general', + defaultRoute = DefaultViewModel?.route || 'general', rules = { subname: /^(.*)$/, normalize_: (rquest, vals) => { @@ -132,13 +137,12 @@ export class AbstractSettingsScreen extends AbstractScreen { */ export function settingsAddViewModel(SettingsViewModelClass, template, labelName, route, isDefault = false) { let name = SettingsViewModelClass.name.replace(/(User|Admin)Settings/, ''); - SettingsViewModelClass.__rlSettingsData = { + VIEW_MODELS.push({ + vmc: SettingsViewModelClass, label: labelName || 'SETTINGS_LABELS/' + name.toUpperCase(), route: route || name.toLowerCase(), selected: ko.observable(false), template: template || SettingsViewModelClass.name, isDefault: !!isDefault - }; - - VIEW_MODELS.push(SettingsViewModelClass); + }); } diff --git a/dev/Screen/User/Settings.js b/dev/Screen/User/Settings.js index 4df2a1574..f4d912c7f 100644 --- a/dev/Screen/User/Settings.js +++ b/dev/Screen/User/Settings.js @@ -36,6 +36,8 @@ export class SettingsUserScreen extends AbstractSettingsScreen { views.push(UserSettingsAccounts); } + // TODO: issue on account switch + // When current domain has sieve but the new has not, or current has not and the new has if (SettingsCapa('Sieve')) { views.push(UserSettingsFilters); } diff --git a/dev/Settings/User/Filters.js b/dev/Settings/User/Filters.js index 602385fea..bb3ea4442 100644 --- a/dev/Settings/User/Filters.js +++ b/dev/Settings/User/Filters.js @@ -1,6 +1,6 @@ import { koComputable, addObservablesTo } from 'External/ko'; import { FolderUserStore } from 'Stores/User/Folder'; -import { SettingsGet } from 'Common/Globals'; +import { SettingsGet/*, SettingsCapa*/ } from 'Common/Globals'; //export class UserSettingsFilters /*extends AbstractViewSettings*/ { export class UserSettingsFilters /*extends AbstractViewSettings*/ { @@ -27,6 +27,14 @@ export class UserSettingsFilters /*extends AbstractViewSettings*/ { this.scriptForDeletion = ko.observable(null).askDeleteHelper(); } +/* + // TODO: issue on account switch + // When current domain has sieve but the new has not, or current has not and the new has + disabled() { + return !SettingsCapa('Sieve'); + } +*/ + addScript() { this.editScript(); }