Better Remote.saveAdminConfig() and better idleTrigger for them

This commit is contained in:
djmaze 2021-12-03 12:32:21 +01:00
parent 2588e5b328
commit 3b40f86c33
11 changed files with 76 additions and 81 deletions

View file

@ -1,4 +1,4 @@
import 'External/Admin/ko'; import 'External/ko';
import { Settings, SettingsGet } from 'Common/Globals'; import { Settings, SettingsGet } from 'Common/Globals';

View file

@ -1,10 +0,0 @@
import 'External/ko';
import ko from 'ko';
import { SaveSettingsStep } from 'Common/Enums';
// functions
ko.observable.fn.idleTrigger = function() {
this.trigger = ko.observable(SaveSettingsStep.Idle);
return this;
};

View file

@ -6,7 +6,7 @@ class RemoteAdminFetch extends AbstractFetchRemote {
* @param {?Function} fCallback * @param {?Function} fCallback
* @param {?} oData * @param {?} oData
*/ */
saveAdminConfig(fCallback, oData) { saveConfig(oData, fCallback) {
this.request('AdminSettingsUpdate', fCallback, oData); this.request('AdminSettingsUpdate', fCallback, oData);
} }

View file

@ -1,32 +1,39 @@
import ko from 'ko'; import { SaveSettingsStep } from 'Common/Enums';
import { SettingsGet } from 'Common/Globals'; import { SettingsGet } from 'Common/Globals';
import { settingsSaveHelperSimpleFunction } from 'Common/Utils'; import { settingsSaveHelperSimpleFunction, addObservablesTo, addSubscribablesTo } from 'Common/Utils';
import Remote from 'Remote/Admin/Fetch'; import Remote from 'Remote/Admin/Fetch';
export class BrandingAdminSettings /*extends AbstractViewSettings*/ { export class BrandingAdminSettings /*extends AbstractViewSettings*/ {
constructor() { constructor() {
this.title = ko.observable(SettingsGet('Title')).idleTrigger(); addObservablesTo(this, {
this.loadingDesc = ko.observable(SettingsGet('LoadingDescription')).idleTrigger(); title: SettingsGet('Title'),
this.faviconUrl = ko.observable(SettingsGet('FaviconUrl')).idleTrigger(); loadingDesc: SettingsGet('LoadingDescription'),
faviconUrl: SettingsGet('FaviconUrl'),
this.title.subscribe(value => titleTrigger: SaveSettingsStep.Idle,
Remote.saveAdminConfig(settingsSaveHelperSimpleFunction(this.title.trigger, this), { loadingDescTrigger: SaveSettingsStep.Idle,
Title: value.trim() faviconUrlTrigger: SaveSettingsStep.Idle
}) });
);
this.loadingDesc.subscribe(value => addSubscribablesTo(this, {
Remote.saveAdminConfig(settingsSaveHelperSimpleFunction(this.loadingDesc.trigger, this), { title: (value =>
LoadingDescription: value.trim() Remote.saveConfig({
}) Title: value.trim()
); }, settingsSaveHelperSimpleFunction(this.titleTrigger, this))
).debounce(999),
this.faviconUrl.subscribe(value => loadingDesc: (value =>
Remote.saveAdminConfig(settingsSaveHelperSimpleFunction(this.faviconUrl.trigger, this), { Remote.saveConfig({
FaviconUrl: value.trim() LoadingDescription: value.trim()
}) }, settingsSaveHelperSimpleFunction(this.loadingDescTrigger, this))
); ).debounce(999),
faviconUrl: (value =>
Remote.saveConfig({
FaviconUrl: value.trim()
}, settingsSaveHelperSimpleFunction(this.faviconUrlTrigger, this))
).debounce(999)
});
} }
} }

View file

@ -71,12 +71,12 @@ export class ContactsAdminSettings /*extends AbstractViewSettings*/ {
addSubscribablesTo(this, { addSubscribablesTo(this, {
enableContacts: value => enableContacts: value =>
Remote.saveAdminConfig(null, { Remote.saveConfig({
ContactsEnable: value ? 1 : 0 ContactsEnable: value ? 1 : 0
}), }),
contactsSync: value => contactsSync: value =>
Remote.saveAdminConfig(null, { Remote.saveConfig({
ContactsSync: value ? 1 : 0 ContactsSync: value ? 1 : 0
}), }),
@ -84,25 +84,25 @@ export class ContactsAdminSettings /*extends AbstractViewSettings*/ {
this.testContactsSuccess(false); this.testContactsSuccess(false);
this.testContactsError(false); this.testContactsError(false);
this.testContactsErrorMessage(''); this.testContactsErrorMessage('');
Remote.saveAdminConfig(settingsSaveHelperSimpleFunction(this.contactsTypeTrigger, this), { Remote.saveConfig({
ContactsPdoType: value.trim() ContactsPdoType: value.trim()
}) }, settingsSaveHelperSimpleFunction(this.contactsTypeTrigger, this))
}, },
pdoDsn: value => pdoDsn: value =>
Remote.saveAdminConfig(settingsSaveHelperSimpleFunction(this.pdoDsnTrigger, this), { Remote.saveConfig({
ContactsPdoDsn: value.trim() ContactsPdoDsn: value.trim()
}), }, settingsSaveHelperSimpleFunction(this.pdoDsnTrigger, this)),
pdoUser: value => pdoUser: value =>
Remote.saveAdminConfig(settingsSaveHelperSimpleFunction(this.pdoUserTrigger, this), { Remote.saveConfig({
ContactsPdoUser: value.trim() ContactsPdoUser: value.trim()
}), }, settingsSaveHelperSimpleFunction(this.pdoUserTrigger, this)),
pdoPassword: value => pdoPassword: value =>
Remote.saveAdminConfig(settingsSaveHelperSimpleFunction(this.pdoPasswordTrigger, this), { Remote.saveConfig({
ContactsPdoPassword: value.trim() ContactsPdoPassword: value.trim()
}) }, settingsSaveHelperSimpleFunction(this.pdoPasswordTrigger, this))
}) })
decorateKoCommands(this, { decorateKoCommands(this, {

View file

@ -87,38 +87,34 @@ export class GeneralAdminSettings /*extends AbstractViewSettings*/ {
this.languageAdminTrigger(saveSettingsStep); this.languageAdminTrigger(saveSettingsStep);
setTimeout(() => this.languageAdminTrigger(SaveSettingsStep.Idle), 1000); setTimeout(() => this.languageAdminTrigger(SaveSettingsStep.Idle), 1000);
}, },
fSaveBoolHelper = (key, fn) => fSaveBoolHelper = key =>
value => { value => Remote.saveConfig({[key]: value ? 1 : 0});
const data = {};
data[key] = value ? 1 : 0;
Remote.saveAdminConfig(fn, data);
};
addSubscribablesTo(this, { addSubscribablesTo(this, {
mainAttachmentLimit: value => mainAttachmentLimit: value =>
Remote.saveAdminConfig(settingsSaveHelperSimpleFunction(this.attachmentLimitTrigger, this), { Remote.saveConfig({
AttachmentLimit: pInt(value) AttachmentLimit: pInt(value)
}), }, settingsSaveHelperSimpleFunction(this.attachmentLimitTrigger, this)),
language: value => language: value =>
Remote.saveAdminConfig(settingsSaveHelperSimpleFunction(this.languageTrigger, this), { Remote.saveConfig({
Language: value.trim() Language: value.trim()
}), }, settingsSaveHelperSimpleFunction(this.languageTrigger, this)),
languageAdmin: value => { languageAdmin: value => {
this.languageAdminTrigger(SaveSettingsStep.Animate); this.languageAdminTrigger(SaveSettingsStep.Animate);
translatorReload(true, value) translatorReload(true, value)
.then(fReloadLanguageHelper(SaveSettingsStep.TrueResult), fReloadLanguageHelper(SaveSettingsStep.FalseResult)) .then(fReloadLanguageHelper(SaveSettingsStep.TrueResult), fReloadLanguageHelper(SaveSettingsStep.FalseResult))
.then(() => Remote.saveAdminConfig(null, { .then(() => Remote.saveConfig({
LanguageAdmin: value.trim() LanguageAdmin: value.trim()
})); }));
}, },
theme: value => { theme: value => {
changeTheme(value, this.themeTrigger); changeTheme(value, this.themeTrigger);
Remote.saveAdminConfig(settingsSaveHelperSimpleFunction(this.themeTrigger, this), { Remote.saveConfig({
Theme: value.trim() Theme: value.trim()
}); }, settingsSaveHelperSimpleFunction(this.themeTrigger, this));
}, },
capaAdditionalAccounts: fSaveBoolHelper('CapaAdditionalAccounts'), capaAdditionalAccounts: fSaveBoolHelper('CapaAdditionalAccounts'),

View file

@ -1,5 +1,4 @@
import ko from 'ko'; import { SaveSettingsStep } from 'Common/Enums';
import { Settings, SettingsGet } from 'Common/Globals'; import { Settings, SettingsGet } from 'Common/Globals';
import { settingsSaveHelperSimpleFunction, addObservablesTo, addSubscribablesTo } from 'Common/Utils'; import { settingsSaveHelperSimpleFunction, addObservablesTo, addSubscribablesTo } from 'Common/Utils';
@ -11,36 +10,37 @@ export class LoginAdminSettings /*extends AbstractViewSettings*/ {
determineUserLanguage: !!SettingsGet('DetermineUserLanguage'), determineUserLanguage: !!SettingsGet('DetermineUserLanguage'),
determineUserDomain: !!SettingsGet('DetermineUserDomain'), determineUserDomain: !!SettingsGet('DetermineUserDomain'),
allowLanguagesOnLogin: !!SettingsGet('AllowLanguagesOnLogin'), allowLanguagesOnLogin: !!SettingsGet('AllowLanguagesOnLogin'),
hideSubmitButton: !!Settings.app('hideSubmitButton') hideSubmitButton: !!Settings.app('hideSubmitButton'),
defaultDomain: SettingsGet('LoginDefaultDomain'),
defaultDomainTrigger: SaveSettingsStep.Idle
}); });
this.defaultDomain = ko.observable(SettingsGet('LoginDefaultDomain')).idleTrigger();
addSubscribablesTo(this, { addSubscribablesTo(this, {
determineUserLanguage: value => determineUserLanguage: value =>
Remote.saveAdminConfig(null, { Remote.saveConfig({
DetermineUserLanguage: value ? 1 : 0 DetermineUserLanguage: value ? 1 : 0
}), }),
determineUserDomain: value => determineUserDomain: value =>
Remote.saveAdminConfig(null, { Remote.saveConfig({
DetermineUserDomain: value ? 1 : 0 DetermineUserDomain: value ? 1 : 0
}), }),
allowLanguagesOnLogin: value => allowLanguagesOnLogin: value =>
Remote.saveAdminConfig(null, { Remote.saveConfig({
AllowLanguagesOnLogin: value ? 1 : 0 AllowLanguagesOnLogin: value ? 1 : 0
}), }),
hideSubmitButton: value => hideSubmitButton: value =>
Remote.saveAdminConfig(null, { Remote.saveConfig({
hideSubmitButton: value ? 1 : 0 hideSubmitButton: value ? 1 : 0
}), }),
defaultDomain: value => defaultDomain: (value =>
Remote.saveAdminConfig(settingsSaveHelperSimpleFunction(this.defaultDomain.trigger, this), { Remote.saveConfig({
LoginDefaultDomain: value.trim() LoginDefaultDomain: value.trim()
}) }, settingsSaveHelperSimpleFunction(this.defaultDomainTrigger, this))
).debounce(999)
}); });
} }
} }

View file

@ -9,11 +9,14 @@ import Remote from 'Remote/Admin/Fetch';
import { showScreenPopup } from 'Knoin/Knoin'; import { showScreenPopup } from 'Knoin/Knoin';
import { PluginPopupView } from 'View/Popup/Plugin'; import { PluginPopupView } from 'View/Popup/Plugin';
import { SettingsGet } from 'Common/Globals'; import { SettingsGet } from 'Common/Globals';
import { addComputablesTo } from 'Common/Utils'; import { addObservablesTo, addComputablesTo } from 'Common/Utils';
export class PackagesAdminSettings /*extends AbstractViewSettings*/ { export class PackagesAdminSettings /*extends AbstractViewSettings*/ {
constructor() { constructor() {
this.packagesError = ko.observable(''); addObservablesTo(this, {
packagesError: '',
enabledPlugins: !!SettingsGet('EnabledPlugins')
});
this.packages = PackageAdminStore; this.packages = PackageAdminStore;
@ -25,9 +28,8 @@ export class PackagesAdminSettings /*extends AbstractViewSettings*/ {
visibility: () => (PackageAdminStore.loading() ? 'visible' : 'hidden') visibility: () => (PackageAdminStore.loading() ? 'visible' : 'hidden')
}); });
this.enabledPlugins = ko.observable(!!SettingsGet('EnabledPlugins'));
this.enabledPlugins.subscribe(value => this.enabledPlugins.subscribe(value =>
Remote.saveAdminConfig(null, { Remote.saveConfig({
EnabledPlugins: value ? 1 : 0 EnabledPlugins: value ? 1 : 0
}) })
); );

View file

@ -51,24 +51,24 @@ export class SecurityAdminSettings /*extends AbstractViewSettings*/ {
}, },
capaOpenPGP: value => capaOpenPGP: value =>
Remote.saveAdminConfig(null, { Remote.saveConfig({
CapaOpenPGP: value ? 1 : 0 CapaOpenPGP: value ? 1 : 0
}), }),
useLocalProxyForExternalImages: value => useLocalProxyForExternalImages: value =>
Remote.saveAdminConfig(null, { Remote.saveConfig({
UseLocalProxyForExternalImages: value ? 1 : 0 UseLocalProxyForExternalImages: value ? 1 : 0
}), }),
verifySslCertificate: value => { verifySslCertificate: value => {
value => value || this.allowSelfSigned(true); value || this.allowSelfSigned(true);
Remote.saveAdminConfig(null, { Remote.saveConfig({
VerifySslCertificate: value ? 1 : 0 VerifySslCertificate: value ? 1 : 0
}); });
}, },
allowSelfSigned: value => allowSelfSigned: value =>
Remote.saveAdminConfig(null, { Remote.saveConfig({
AllowSelfSigned: value ? 1 : 0 AllowSelfSigned: value ? 1 : 0
}) })
}); });

View file

@ -6,7 +6,7 @@
name: 'Input', name: 'Input',
params: { params: {
value: title, value: title,
trigger: title.trigger, trigger: titleTrigger,
size: 5 size: 5
} }
}"></div> }"></div>
@ -17,7 +17,7 @@
name: 'Input', name: 'Input',
params: { params: {
value: loadingDesc, value: loadingDesc,
trigger: loadingDesc.trigger, trigger: loadingDescTrigger,
size: 5 size: 5
} }
}"></div> }"></div>
@ -28,7 +28,7 @@
name: 'Input', name: 'Input',
params: { params: {
value: faviconUrl, value: faviconUrl,
trigger: faviconUrl.trigger, trigger: faviconUrlTrigger,
placeholder: 'https://', placeholder: 'https://',
size: 5 size: 5
} }

View file

@ -6,7 +6,7 @@
name: 'Input', name: 'Input',
params: { params: {
value: defaultDomain, value: defaultDomain,
trigger: defaultDomain.trigger, trigger: defaultDomainTrigger,
size: 3 size: 3
} }
}"></div> }"></div>