TODO: Sieve issue on account switch

When current domain has sieve but the new has not, or current has not and the new has
This commit is contained in:
the-djmaze 2023-04-24 12:01:09 +02:00
parent 80d64574a6
commit 1883b407a6
3 changed files with 36 additions and 22 deletions

View file

@ -25,31 +25,33 @@ export class AbstractSettingsScreen extends AbstractScreen {
let settingsScreen = null, let settingsScreen = null,
viewModelDom = null, viewModelDom = null,
RoutedSettingsViewModel = VIEW_MODELS.find( RoutedSettingsViewModel = VIEW_MODELS.find(
SettingsViewModel => subName === SettingsViewModel.__rlSettingsData.route SettingsViewModel => subName === SettingsViewModel.route
); );
if (RoutedSettingsViewModel) { if (RoutedSettingsViewModel) {
// const vmPlace = elementById('V-SettingsPane') || elementById('V-AdminPane); // const vmPlace = elementById('V-SettingsPane') || elementById('V-AdminPane);
const vmPlace = this.viewModels[1].__dom; const vmPlace = this.viewModels[1].__dom,
if (RoutedSettingsViewModel.__vm) { SettingsViewModelClass = RoutedSettingsViewModel.vmc;
settingsScreen = RoutedSettingsViewModel.__vm; if (SettingsViewModelClass.__vm) {
settingsScreen = SettingsViewModelClass.__vm;
viewModelDom = settingsScreen.viewModelDom;
} else if (vmPlace) { } else if (vmPlace) {
viewModelDom = createElement('div',{ viewModelDom = createElement('div',{
id: 'V-Settings-' + RoutedSettingsViewModel.name.replace(/(User|Admin)Settings/,''), id: 'V-Settings-' + SettingsViewModelClass.name.replace(/(User|Admin)Settings/,''),
hidden: '' hidden: ''
}) })
vmPlace.append(viewModelDom); vmPlace.append(viewModelDom);
settingsScreen = new RoutedSettingsViewModel(); settingsScreen = new SettingsViewModelClass();
settingsScreen.viewModelDom = viewModelDom; settingsScreen.viewModelDom = viewModelDom;
RoutedSettingsViewModel.__dom = viewModelDom; SettingsViewModelClass.__dom = viewModelDom;
RoutedSettingsViewModel.__vm = settingsScreen; SettingsViewModelClass.__vm = settingsScreen;
ko.applyBindingAccessorsToNode( ko.applyBindingAccessorsToNode(
viewModelDom, viewModelDom,
{ {
template: () => ({ name: RoutedSettingsViewModel.__rlSettingsData.template }) template: () => ({ name: RoutedSettingsViewModel.template })
}, },
settingsScreen settingsScreen
); );
@ -69,13 +71,13 @@ export class AbstractSettingsScreen extends AbstractScreen {
// show // show
settingsScreen.beforeShow?.(); settingsScreen.beforeShow?.();
i18nToNodes(settingsScreen.viewModelDom); i18nToNodes(viewModelDom);
settingsScreen.viewModelDom.hidden = false; viewModelDom.hidden = false;
settingsScreen.onShow?.(); settingsScreen.onShow?.();
this.menu.forEach(item => { this.menu.forEach(item => {
item.selected( item.selected(
item.route === RoutedSettingsViewModel.__rlSettingsData.route item.route === RoutedSettingsViewModel.route
); );
}); });
@ -92,20 +94,23 @@ export class AbstractSettingsScreen extends AbstractScreen {
let subScreen = this.oCurrentSubScreen; let subScreen = this.oCurrentSubScreen;
if (subScreen) { if (subScreen) {
subScreen.onHide?.(); subScreen.onHide?.();
subScreen.viewModelDom.hidden = true; subScreen.
.hidden = true;
} }
} }
onBuild() { 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() { routes() {
const DefaultViewModel = VIEW_MODELS.find( const DefaultViewModel = VIEW_MODELS.find(
SettingsViewModel => SettingsViewModel.__rlSettingsData.isDefault SettingsViewModel => SettingsViewModel.isDefault
), ),
defaultRoute = defaultRoute = DefaultViewModel?.route || 'general',
DefaultViewModel ? DefaultViewModel.__rlSettingsData.route : 'general',
rules = { rules = {
subname: /^(.*)$/, subname: /^(.*)$/,
normalize_: (rquest, vals) => { normalize_: (rquest, vals) => {
@ -132,13 +137,12 @@ export class AbstractSettingsScreen extends AbstractScreen {
*/ */
export function settingsAddViewModel(SettingsViewModelClass, template, labelName, route, isDefault = false) { export function settingsAddViewModel(SettingsViewModelClass, template, labelName, route, isDefault = false) {
let name = SettingsViewModelClass.name.replace(/(User|Admin)Settings/, ''); let name = SettingsViewModelClass.name.replace(/(User|Admin)Settings/, '');
SettingsViewModelClass.__rlSettingsData = { VIEW_MODELS.push({
vmc: SettingsViewModelClass,
label: labelName || 'SETTINGS_LABELS/' + name.toUpperCase(), label: labelName || 'SETTINGS_LABELS/' + name.toUpperCase(),
route: route || name.toLowerCase(), route: route || name.toLowerCase(),
selected: ko.observable(false), selected: ko.observable(false),
template: template || SettingsViewModelClass.name, template: template || SettingsViewModelClass.name,
isDefault: !!isDefault isDefault: !!isDefault
}; });
VIEW_MODELS.push(SettingsViewModelClass);
} }

View file

@ -36,6 +36,8 @@ export class SettingsUserScreen extends AbstractSettingsScreen {
views.push(UserSettingsAccounts); 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')) { if (SettingsCapa('Sieve')) {
views.push(UserSettingsFilters); views.push(UserSettingsFilters);
} }

View file

@ -1,6 +1,6 @@
import { koComputable, addObservablesTo } from 'External/ko'; import { koComputable, addObservablesTo } from 'External/ko';
import { FolderUserStore } from 'Stores/User/Folder'; 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*/ {
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(); 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() { addScript() {
this.editScript(); this.editScript();
} }