mirror of
https://github.com/the-djmaze/snappymail.git
synced 2025-01-01 04:22:15 +08:00
Move addObservablesTo, addComputablesTo & addSubscribablesTo to Common/Utils
This commit is contained in:
parent
eda0ee695d
commit
4b6f6b1bfc
18 changed files with 55 additions and 46 deletions
|
@ -136,3 +136,16 @@ export function changeTheme(value, themeTrigger = ()=>{}) {
|
|||
.then(clearTimer, clearTimer);
|
||||
}
|
||||
}
|
||||
|
||||
export function addObservablesTo(target, observables) {
|
||||
Object.entries(observables).forEach(([key, value]) =>
|
||||
target[key] = /*Array.isArray(value) ? ko.observableArray(value) :*/ ko.observable(value) );
|
||||
}
|
||||
|
||||
export function addComputablesTo(target, computables) {
|
||||
Object.entries(computables).forEach(([key, fn]) => target[key] = ko.computed(fn));
|
||||
}
|
||||
|
||||
export function addSubscribablesTo(target, subscribables) {
|
||||
Object.entries(subscribables).forEach(([key, fn]) => target[key].subscribe(fn));
|
||||
}
|
||||
|
|
11
dev/External/ko.js
vendored
11
dev/External/ko.js
vendored
|
@ -197,14 +197,3 @@ ko.extenders.falseTimeout = (target, option) => {
|
|||
ko.observable.fn.deleteAccessHelper = function() {
|
||||
return this.extend({ falseTimeout: 3000, toggleSubscribeProperty: [this, 'deleteAccess'] });
|
||||
};
|
||||
|
||||
ko.addObservablesTo = (target, observables) => {
|
||||
Object.entries(observables).forEach(([key, value]) =>
|
||||
target[key] = /*Array.isArray(value) ? ko.observableArray(value) :*/ ko.observable(value) );
|
||||
};
|
||||
|
||||
ko.addComputablesTo = (target, computables) =>
|
||||
Object.entries(computables).forEach(([key, fn]) => target[key] = ko.computed(fn));
|
||||
|
||||
ko.addSubscribablesTo = (target, subscribables) =>
|
||||
Object.entries(subscribables).forEach(([key, fn]) => target[key].subscribe(fn));
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import { addObservablesTo, addComputablesTo } from 'Common/Utils';
|
||||
|
||||
function dispose(disposable) {
|
||||
if (disposable && 'function' === typeof disposable.dispose) {
|
||||
|
@ -33,11 +34,11 @@ export class AbstractModel {
|
|||
}
|
||||
|
||||
addObservables(observables) {
|
||||
ko.addObservablesTo(this, observables);
|
||||
addObservablesTo(this, observables);
|
||||
}
|
||||
|
||||
addComputables(computables) {
|
||||
ko.addComputablesTo(this, computables);
|
||||
addComputablesTo(this, computables);
|
||||
}
|
||||
|
||||
addSubscribables(subscribables) {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import ko from 'ko';
|
||||
|
||||
import { inFocus } from 'Common/Utils';
|
||||
import { inFocus, addObservablesTo, addComputablesTo, addSubscribablesTo } from 'Common/Utils';
|
||||
import { KeyState } from 'Common/Enums';
|
||||
import { keyScope } from 'Common/Globals';
|
||||
import { ViewType } from 'Knoin/Knoin';
|
||||
|
@ -46,15 +46,15 @@ class AbstractView {
|
|||
}
|
||||
|
||||
addObservables(observables) {
|
||||
ko.addObservablesTo(this, observables);
|
||||
addObservablesTo(this, observables);
|
||||
}
|
||||
|
||||
addComputables(computables) {
|
||||
ko.addComputablesTo(this, computables);
|
||||
addComputablesTo(this, computables);
|
||||
}
|
||||
|
||||
addSubscribables(subscribables) {
|
||||
ko.addSubscribablesTo(this, subscribables);
|
||||
addSubscribablesTo(this, subscribables);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@ import ko from 'ko';
|
|||
|
||||
import { SaveSettingsStep } from 'Common/Enums';
|
||||
import { SettingsGet } from 'Common/Globals';
|
||||
import { settingsSaveHelperSimpleFunction, defaultOptionsAfterRender } from 'Common/Utils';
|
||||
import { settingsSaveHelperSimpleFunction, defaultOptionsAfterRender, addObservablesTo } from 'Common/Utils';
|
||||
|
||||
import Remote from 'Remote/Admin/Fetch';
|
||||
import { decorateKoCommands } from 'Knoin/Knoin';
|
||||
|
@ -11,7 +11,7 @@ export class ContactsAdminSettings {
|
|||
constructor() {
|
||||
this.defaultOptionsAfterRender = defaultOptionsAfterRender;
|
||||
|
||||
ko.addObservablesTo(this, {
|
||||
addObservablesTo(this, {
|
||||
enableContacts: !!SettingsGet('ContactsEnable'),
|
||||
contactsSync: !!SettingsGet('ContactsSync'),
|
||||
contactsType: '',
|
||||
|
|
|
@ -4,7 +4,9 @@ import {
|
|||
pInt,
|
||||
settingsSaveHelperSimpleFunction,
|
||||
changeTheme,
|
||||
convertThemeName
|
||||
convertThemeName,
|
||||
addObservablesTo,
|
||||
addSubscribablesTo
|
||||
} from 'Common/Utils';
|
||||
|
||||
import { Capa, SaveSettingsStep } from 'Common/Enums';
|
||||
|
@ -34,7 +36,7 @@ export class GeneralAdminSettings {
|
|||
this.theme = ThemeStore.theme;
|
||||
this.themes = ThemeStore.themes;
|
||||
|
||||
ko.addObservablesTo(this, {
|
||||
addObservablesTo(this, {
|
||||
allowLanguagesOnSettings: !!SettingsGet('AllowLanguagesOnSettings'),
|
||||
newMoveToFolder: !!SettingsGet('NewMoveToFolder'),
|
||||
attachmentLimitTrigger: SaveSettingsStep.Idle,
|
||||
|
@ -87,7 +89,7 @@ export class GeneralAdminSettings {
|
|||
Remote.saveAdminConfig(fn, data);
|
||||
};
|
||||
|
||||
ko.addSubscribablesTo(this, {
|
||||
addSubscribablesTo(this, {
|
||||
mainAttachmentLimit: value =>
|
||||
Remote.saveAdminConfig(settingsSaveHelperSimpleFunction(this.attachmentLimitTrigger, this), {
|
||||
'AttachmentLimit': pInt(value)
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
import ko from 'ko';
|
||||
|
||||
import { Settings, SettingsGet } from 'Common/Globals';
|
||||
import { settingsSaveHelperSimpleFunction } from 'Common/Utils';
|
||||
import { settingsSaveHelperSimpleFunction, addObservablesTo } from 'Common/Utils';
|
||||
|
||||
import Remote from 'Remote/Admin/Fetch';
|
||||
|
||||
export class LoginAdminSettings {
|
||||
constructor() {
|
||||
ko.addObservablesTo(this, {
|
||||
addObservablesTo(this, {
|
||||
determineUserLanguage: !!SettingsGet('DetermineUserLanguage'),
|
||||
determineUserDomain: !!SettingsGet('DetermineUserDomain'),
|
||||
allowLanguagesOnLogin: !!SettingsGet('AllowLanguagesOnLogin'),
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
import ko from 'ko';
|
||||
|
||||
import { Capa } from 'Common/Enums';
|
||||
import { Settings, SettingsGet } from 'Common/Globals';
|
||||
import { addObservablesTo, addSubscribablesTo } from 'Common/Utils';
|
||||
|
||||
import { AppAdminStore } from 'Stores/Admin/App';
|
||||
|
||||
|
@ -13,7 +12,7 @@ export class SecurityAdminSettings {
|
|||
constructor() {
|
||||
this.weakPassword = AppAdminStore.weakPassword;
|
||||
|
||||
ko.addObservablesTo(this, {
|
||||
addObservablesTo(this, {
|
||||
useLocalProxyForExternalImages: !!SettingsGet('UseLocalProxyForExternalImages'),
|
||||
|
||||
verifySslCertificate: !!SettingsGet('VerifySslCertificate'),
|
||||
|
@ -38,7 +37,7 @@ export class SecurityAdminSettings {
|
|||
capaTwoFactorAuthForce: Settings.capa(Capa.TwoFactorForce)
|
||||
});
|
||||
|
||||
ko.addSubscribablesTo(this, {
|
||||
addSubscribablesTo(this, {
|
||||
adminPassword: () => {
|
||||
this.adminPasswordUpdateError(false);
|
||||
this.adminPasswordUpdateSuccess(false);
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
import ko from 'ko';
|
||||
|
||||
import { delegateRunOnDestroy } from 'Common/UtilsUser';
|
||||
import { Notification } from 'Common/Enums';
|
||||
import { getNotification } from 'Common/Translator';
|
||||
import { addObservablesTo } from 'Common/Utils';
|
||||
import { delegateRunOnDestroy } from 'Common/UtilsUser';
|
||||
|
||||
import { SieveUserStore } from 'Stores/User/Sieve';
|
||||
import Remote from 'Remote/User/Fetch';
|
||||
|
@ -18,7 +19,7 @@ export class FiltersUserSettings {
|
|||
this.scripts = SieveUserStore.scripts;
|
||||
this.loading = ko.observable(false).extend({ debounce: 200 });
|
||||
|
||||
ko.addObservablesTo(this, {
|
||||
addObservablesTo(this, {
|
||||
serverError: false,
|
||||
serverErrorDesc: ''
|
||||
});
|
||||
|
|
|
@ -4,7 +4,7 @@ import { MESSAGES_PER_PAGE_VALUES } from 'Common/Consts';
|
|||
import { SaveSettingsStep } from 'Common/Enums';
|
||||
import { EditorDefaultType, Layout } from 'Common/EnumsUser';
|
||||
import { SettingsGet } from 'Common/Globals';
|
||||
import { settingsSaveHelperSimpleFunction } from 'Common/Utils';
|
||||
import { settingsSaveHelperSimpleFunction, addObservablesTo } from 'Common/Utils';
|
||||
import { i18n, trigger as translatorTrigger, reload as translatorReload, convertLangName } from 'Common/Translator';
|
||||
|
||||
import { showScreenPopup } from 'Knoin/Knoin';
|
||||
|
@ -47,7 +47,7 @@ export class GeneralUserSettings {
|
|||
this.languageFullName = ko.computed(() => convertLangName(this.language()));
|
||||
this.languageTrigger = ko.observable(SaveSettingsStep.Idle).extend({ debounce: 100 });
|
||||
|
||||
ko.addObservablesTo(this, {
|
||||
addObservablesTo(this, {
|
||||
mppTrigger: SaveSettingsStep.Idle,
|
||||
editorDefaultTypeTrigger: SaveSettingsStep.Idle,
|
||||
layoutTrigger: SaveSettingsStep.Idle
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import ko from 'ko';
|
||||
import { SettingsGet } from 'Common/Globals';
|
||||
import { addObservablesTo } from 'Common/Utils';
|
||||
|
||||
export const AccountUserStore = {
|
||||
accounts: ko.observableArray(),
|
||||
|
@ -24,7 +25,7 @@ export const AccountUserStore = {
|
|||
}
|
||||
};
|
||||
|
||||
ko.addObservablesTo(AccountUserStore, {
|
||||
addObservablesTo(AccountUserStore, {
|
||||
email: '',
|
||||
parentEmail: '',
|
||||
signature: ''
|
||||
|
|
|
@ -2,6 +2,7 @@ import ko from 'ko';
|
|||
import { KeyState } from 'Common/Enums';
|
||||
import { Focused } from 'Common/EnumsUser';
|
||||
import { keyScope, leftPanelDisabled, Settings, SettingsGet } from 'Common/Globals';
|
||||
import { addObservablesTo } from 'Common/Utils';
|
||||
import { ThemeStore } from 'Stores/Theme';
|
||||
|
||||
export const AppUserStore = {
|
||||
|
@ -26,7 +27,7 @@ export const AppUserStore = {
|
|||
}
|
||||
};
|
||||
|
||||
ko.addObservablesTo(AppUserStore, {
|
||||
addObservablesTo(AppUserStore, {
|
||||
currentAudio: '',
|
||||
|
||||
focusedState: Focused.None,
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import ko from 'ko';
|
||||
import { SettingsGet } from 'Common/Globals';
|
||||
import { addObservablesTo } from 'Common/Utils';
|
||||
|
||||
export const ContactUserStore = ko.observableArray();
|
||||
|
||||
|
@ -7,7 +8,7 @@ ContactUserStore.loading = ko.observable(false).extend({ debounce: 200 });
|
|||
ContactUserStore.importing = ko.observable(false).extend({ debounce: 200 });
|
||||
ContactUserStore.syncing = ko.observable(false).extend({ debounce: 200 });
|
||||
|
||||
ko.addObservablesTo(ContactUserStore, {
|
||||
addObservablesTo(ContactUserStore, {
|
||||
allowSync: false,
|
||||
enableSync: false,
|
||||
syncUrl: '',
|
||||
|
|
|
@ -2,13 +2,14 @@ import ko from 'ko';
|
|||
|
||||
import { FolderType } from 'Common/EnumsUser';
|
||||
import { UNUSED_OPTION_VALUE } from 'Common/Consts';
|
||||
import { addObservablesTo } from 'Common/Utils';
|
||||
import { folderListOptionsBuilder } from 'Common/UtilsUser';
|
||||
import { getFolderInboxName, getFolderFromCacheList } from 'Common/Cache';
|
||||
import { SettingsGet } from 'Common/Globals';
|
||||
|
||||
export const FolderUserStore = new class {
|
||||
constructor() {
|
||||
ko.addObservablesTo(this, {
|
||||
addObservablesTo(this, {
|
||||
/**
|
||||
* To use "checkable" option in /#/settings/folders
|
||||
* When true, getNextFolderNames only lists system and "checkable" folders
|
||||
|
|
|
@ -3,7 +3,7 @@ import ko from 'ko';
|
|||
import { Notification } from 'Common/Enums';
|
||||
import { Focused, MessageSetAction } from 'Common/EnumsUser';
|
||||
import { doc, elementById } from 'Common/Globals';
|
||||
import { pInt, pString } from 'Common/Utils';
|
||||
import { pInt, pString, addObservablesTo } from 'Common/Utils';
|
||||
import { plainToHtml } from 'Common/UtilsUser';
|
||||
|
||||
import {
|
||||
|
@ -72,7 +72,7 @@ export const MessageUserStore = new class {
|
|||
|
||||
this.list = ko.observableArray().extend({ debounce: 0 });
|
||||
|
||||
ko.addObservablesTo(this, {
|
||||
addObservablesTo(this, {
|
||||
listCount: 0,
|
||||
listSearch: '',
|
||||
listThreadUid: '',
|
||||
|
|
|
@ -2,7 +2,7 @@ import ko from 'ko';
|
|||
|
||||
import { MESSAGES_PER_PAGE_VALUES } from 'Common/Consts';
|
||||
import { Layout, EditorDefaultType } from 'Common/EnumsUser';
|
||||
import { pInt } from 'Common/Utils';
|
||||
import { pInt, addObservablesTo } from 'Common/Utils';
|
||||
import { $htmlCL, SettingsGet } from 'Common/Globals';
|
||||
import { ThemeStore } from 'Stores/Theme';
|
||||
|
||||
|
@ -23,7 +23,7 @@ export const SettingsUserStore = new class {
|
|||
|
||||
this.messagesPerPage = ko.observable(20).extend({ limitedList: MESSAGES_PER_PAGE_VALUES });
|
||||
|
||||
ko.addObservablesTo(this, {
|
||||
addObservablesTo(this, {
|
||||
showImages: false,
|
||||
removeColors: false,
|
||||
useCheckboxesInList: true,
|
||||
|
|
|
@ -3,7 +3,7 @@ import ko from 'ko';
|
|||
import { SetSystemFoldersNotification } from 'Common/EnumsUser';
|
||||
import { UNUSED_OPTION_VALUE } from 'Common/Consts';
|
||||
import { Settings } from 'Common/Globals';
|
||||
import { defaultOptionsAfterRender } from 'Common/Utils';
|
||||
import { defaultOptionsAfterRender, addSubscribablesTo } from 'Common/Utils';
|
||||
import { folderListOptionsBuilder } from 'Common/UtilsUser';
|
||||
import { initOnStartOrLangChange, i18n } from 'Common/Translator';
|
||||
|
||||
|
@ -75,7 +75,7 @@ class FolderSystemPopupView extends AbstractViewPopup {
|
|||
fSaveSystemFolders();
|
||||
};
|
||||
|
||||
ko.addSubscribablesTo(FolderUserStore, {
|
||||
addSubscribablesTo(FolderUserStore, {
|
||||
sentFolder: fCallback,
|
||||
draftFolder: fCallback,
|
||||
spamFolder: fCallback,
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
import ko from 'ko';
|
||||
|
||||
import { delegateRunOnDestroy } from 'Common/UtilsUser';
|
||||
import { Notification } from 'Common/Enums';
|
||||
import { getNotification } from 'Common/Translator';
|
||||
import { i18nToNodes } from 'Common/Translator';
|
||||
import { getNotification, i18nToNodes } from 'Common/Translator';
|
||||
import { addObservablesTo } from 'Common/Utils';
|
||||
import { delegateRunOnDestroy } from 'Common/UtilsUser';
|
||||
|
||||
import Remote from 'Remote/User/Fetch';
|
||||
import { FilterModel } from 'Model/Filter';
|
||||
|
@ -18,7 +18,7 @@ class SieveScriptPopupView extends AbstractViewPopup {
|
|||
constructor() {
|
||||
super('SieveScript');
|
||||
|
||||
ko.addObservablesTo(this, {
|
||||
addObservablesTo(this, {
|
||||
saveError: false,
|
||||
saveErrorText: '',
|
||||
rawActive: false,
|
||||
|
|
Loading…
Reference in a new issue