Improved observables

This commit is contained in:
djmaze 2020-10-27 11:09:24 +01:00
parent 8d7e25fc7c
commit 7db7d5545b
28 changed files with 236 additions and 234 deletions

View file

@ -11,8 +11,26 @@ const settingsGet = rl.settings.get;
class ContactsAdminSettings {
constructor() {
this.defaultOptionsAfterRender = defaultOptionsAfterRender;
this.enableContacts = ko.observable(!!settingsGet('ContactsEnable'));
this.contactsSync = ko.observable(!!settingsGet('ContactsSync'));
ko.addObservablesTo(this, {
enableContacts: !!settingsGet('ContactsEnable'),
contactsSync: !!settingsGet('ContactsSync'),
contactsType: '',
pdoDsn: settingsGet('ContactsPdoDsn'),
pdoUser: settingsGet('ContactsPdoUser'),
pdoPassword: settingsGet('ContactsPdoPassword'),
pdoDsnTrigger: SaveSettingsStep.Idle,
pdoUserTrigger: SaveSettingsStep.Idle,
pdoPasswordTrigger: SaveSettingsStep.Idle,
contactsTypeTrigger: SaveSettingsStep.Idle,
testing: false,
testContactsSuccess: false,
testContactsError: false,
testContactsErrorMessage: ''
});
const supportedTypes = settingsGet('supportedPdoDrivers') || [],
types = [{
@ -30,8 +48,6 @@ class ContactsAdminSettings {
this.contactsTypesOptions = types;
this.contactsType = ko.observable('');
this.mainContactsType = ko
.computed({
read: this.contactsType,
@ -55,20 +71,6 @@ class ContactsAdminSettings {
this.testContactsErrorMessage('');
});
this.pdoDsn = ko.observable(settingsGet('ContactsPdoDsn'));
this.pdoUser = ko.observable(settingsGet('ContactsPdoUser'));
this.pdoPassword = ko.observable(settingsGet('ContactsPdoPassword'));
this.pdoDsnTrigger = ko.observable(SaveSettingsStep.Idle);
this.pdoUserTrigger = ko.observable(SaveSettingsStep.Idle);
this.pdoPasswordTrigger = ko.observable(SaveSettingsStep.Idle);
this.contactsTypeTrigger = ko.observable(SaveSettingsStep.Idle);
this.testing = ko.observable(false);
this.testContactsSuccess = ko.observable(false);
this.testContactsError = ko.observable(false);
this.testContactsErrorMessage = ko.observable('');
this.contactsType(settingsGet('ContactsPdoType'));
this.onTestContactsResponse = this.onTestContactsResponse.bind(this);

View file

@ -39,9 +39,15 @@ class GeneralAdminSettings {
this.capaAttachmentThumbnails = CapaAdminStore.attachmentThumbnails;
this.capaTemplates = CapaAdminStore.templates;
this.allowLanguagesOnSettings = ko.observable(!!settingsGet('AllowLanguagesOnSettings'));
ko.addObservablesTo(this, {
allowLanguagesOnSettings: !!settingsGet('AllowLanguagesOnSettings'),
newMoveToFolder: !!settingsGet('NewMoveToFolder'),
attachmentLimitTrigger: SaveSettingsStep.Idle,
languageTrigger: SaveSettingsStep.Idle,
themeTrigger: SaveSettingsStep.Idle
});
this.weakPassword = AppAdminStore.weakPassword;
this.newMoveToFolder = ko.observable(!!settingsGet('NewMoveToFolder'));
this.dataFolderAccess = AppAdminStore.dataFolderAccess;
@ -67,10 +73,7 @@ class GeneralAdminSettings {
this.languageFullName = ko.computed(() => convertLangName(this.language()));
this.languageAdminFullName = ko.computed(() => convertLangName(this.languageAdmin()));
this.attachmentLimitTrigger = ko.observable(SaveSettingsStep.Idle);
this.languageTrigger = ko.observable(SaveSettingsStep.Idle);
this.languageAdminTrigger = ko.observable(SaveSettingsStep.Idle).extend({ throttle: 100 });
this.themeTrigger = ko.observable(SaveSettingsStep.Idle);
}
onBuild() {

View file

@ -7,13 +7,14 @@ import Remote from 'Remote/Admin/Fetch';
class LoginAdminSettings {
constructor() {
const settingsGet = rl.settings.get;
this.determineUserLanguage = ko.observable(!!settingsGet('DetermineUserLanguage'));
this.determineUserDomain = ko.observable(!!settingsGet('DetermineUserDomain'));
ko.addObservablesTo(this, {
determineUserLanguage: !!settingsGet('DetermineUserLanguage'),
determineUserDomain: !!settingsGet('DetermineUserDomain'),
allowLanguagesOnLogin: !!settingsGet('AllowLanguagesOnLogin'),
dummy: false
});
this.defaultDomain = ko.observable(settingsGet('LoginDefaultDomain')).idleTrigger();
this.allowLanguagesOnLogin = ko.observable(!!settingsGet('AllowLanguagesOnLogin'));
this.dummy = ko.observable(false);
}
onBuild() {

View file

@ -13,8 +13,6 @@ const settingsGet = rl.settings.get;
class SecurityAdminSettings {
constructor() {
this.useLocalProxyForExternalImages = ko.observable(!!rl.settings.get('UseLocalProxyForExternalImages'));
this.weakPassword = AppAdminStore.weakPassword;
this.capaOpenPGP = CapaAdminStore.openPGP;
@ -22,35 +20,39 @@ class SecurityAdminSettings {
this.capaTwoFactorAuth = CapaAdminStore.twoFactorAuth;
this.capaTwoFactorAuthForce = CapaAdminStore.twoFactorAuthForce;
ko.addObservablesTo(this, {
useLocalProxyForExternalImages: !!rl.settings.get('UseLocalProxyForExternalImages'),
verifySslCertificate: !!settingsGet('VerifySslCertificate'),
allowSelfSigned: !!settingsGet('AllowSelfSigned'),
isTwoFactorDropperShown: false,
twoFactorDropperUser: '',
twoFactorDropperUserFocused: false,
adminLogin: settingsGet('AdminLogin'),
adminLoginError: false,
adminPassword: '',
adminPasswordNew: '',
adminPasswordNew2: '',
adminPasswordNewError: false,
adminPasswordUpdateError: false,
adminPasswordUpdateSuccess: false
});
this.capaTwoFactorAuth.subscribe(value => {
if (!value) {
this.capaTwoFactorAuthForce(false);
}
});
this.verifySslCertificate = ko.observable(!!settingsGet('VerifySslCertificate'));
this.allowSelfSigned = ko.observable(!!settingsGet('AllowSelfSigned'));
this.verifySslCertificate.subscribe(value => {
if (!value) {
this.allowSelfSigned(true);
}
});
this.isTwoFactorDropperShown = ko.observable(false);
this.twoFactorDropperUser = ko.observable('');
this.twoFactorDropperUser.focused = ko.observable(false);
this.adminLogin = ko.observable(settingsGet('AdminLogin'));
this.adminLoginError = ko.observable(false);
this.adminPassword = ko.observable('');
this.adminPasswordNew = ko.observable('');
this.adminPasswordNew2 = ko.observable('');
this.adminPasswordNewError = ko.observable(false);
this.adminPasswordUpdateError = ko.observable(false);
this.adminPasswordUpdateSuccess = ko.observable(false);
this.adminPassword.subscribe(() => {
this.adminPasswordUpdateError(false);
this.adminPasswordUpdateSuccess(false);
@ -104,7 +106,7 @@ class SecurityAdminSettings {
this.isTwoFactorDropperShown(true);
setTimeout(() => {
this.twoFactorDropperUser.focused(true);
this.twoFactorDropperUserFocused(true);
}, 50);
}
@ -167,7 +169,7 @@ class SecurityAdminSettings {
this.isTwoFactorDropperShown(false);
this.twoFactorDropperUser('');
this.twoFactorDropperUser.focused(false);
this.twoFactorDropperUserFocused(false);
}
}

View file

@ -16,12 +16,14 @@ class FiltersUserSettings {
this.modules = FilterStore.modules;
this.filters = FilterStore.filters;
this.inited = ko.observable(false);
this.serverError = ko.observable(false);
this.serverErrorDesc = ko.observable('');
this.haveChanges = ko.observable(false);
ko.addObservablesTo(this, {
inited: false,
serverError: false,
serverErrorDesc: '',
haveChanges: false,
this.saveErrorText = ko.observable('');
saveErrorText: ''
});
this.serverError.subscribe((value) => {
if (!value) {
@ -37,18 +39,14 @@ class FiltersUserSettings {
this.filterForDeletion = ko.observable(null).deleteAccessHelper();
this.filters.subscribe(() => {
this.haveChanges(true);
});
this.filters.subscribe(() => this.haveChanges(true));
this.filterRaw.subscribe(() => {
this.haveChanges(true);
this.filterRaw.error(false);
});
this.haveChanges.subscribe(() => {
this.saveErrorText('');
});
this.haveChanges.subscribe(() => this.saveErrorText(''));
this.filterRaw.active.subscribe(() => {
this.haveChanges(true);

View file

@ -62,7 +62,7 @@ class FoldersUserSettings {
}
onShow() {
FolderStore.folderList.error('');
FolderStore.folderListError('');
}
onBuild(oDom) {
@ -113,7 +113,7 @@ class FoldersUserSettings {
removeFolderFromCacheList(folderToRemove.fullNameRaw);
}
} else if (0 < folderToRemove.privateMessageCountAll()) {
FolderStore.folderList.error(getNotification(Notification.CantDeleteNonEmptyFolder));
FolderStore.folderListError(getNotification(Notification.CantDeleteNonEmptyFolder));
}
}

View file

@ -47,9 +47,11 @@ class GeneralUserSettings {
this.languageFullName = ko.computed(() => convertLangName(this.language()));
this.languageTrigger = ko.observable(SaveSettingsStep.Idle).extend({ throttle: 100 });
this.mppTrigger = ko.observable(SaveSettingsStep.Idle);
this.editorDefaultTypeTrigger = ko.observable(SaveSettingsStep.Idle);
this.layoutTrigger = ko.observable(SaveSettingsStep.Idle);
ko.addObservablesTo(this, {
mppTrigger: SaveSettingsStep.Idle,
editorDefaultTypeTrigger: SaveSettingsStep.Idle,
layoutTrigger: SaveSettingsStep.Idle
});
this.identities = IdentityStore.identities;