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

@ -2,10 +2,11 @@ import ko from 'ko';
class AccountUserStore {
constructor() {
this.email = ko.observable('');
this.parentEmail = ko.observable('');
this.signature = ko.observable('');
ko.addObservablesTo(this, {
email: '',
parentEmail: '',
signature: ''
});
this.accounts = ko.observableArray([]);
this.accounts.loading = ko.observable(false).extend({ throttle: 100 });

View file

@ -7,9 +7,21 @@ const Settings = rl.settings;
class AppUserStore {
constructor() {
this.currentAudio = ko.observable('');
ko.addObservablesTo(this, {
currentAudio: '',
this.focusedState = ko.observable(Focused.None);
focusedState: Focused.None,
projectHash: '',
threadsAllowed: false,
composeInEdit: false,
contactsAutosave: false,
useLocalProxyForExternalImages: false,
contactsIsAllowed: false
});
const isMobile = Settings.app('mobile');
@ -38,16 +50,6 @@ class AppUserStore {
}
});
this.projectHash = ko.observable('');
this.threadsAllowed = ko.observable(false);
this.composeInEdit = ko.observable(false);
this.contactsAutosave = ko.observable(false);
this.useLocalProxyForExternalImages = ko.observable(false);
this.contactsIsAllowed = ko.observable(false);
this.attachmentsActions = ko.observableArray([]);
this.devEmail = '';

View file

@ -9,11 +9,13 @@ class ContactUserStore {
this.contacts.exportingVcf = ko.observable(false).extend({ throttle: 200 });
this.contacts.exportingCsv = ko.observable(false).extend({ throttle: 200 });
this.allowContactsSync = ko.observable(false);
this.enableContactsSync = ko.observable(false);
this.contactsSyncUrl = ko.observable('');
this.contactsSyncUser = ko.observable('');
this.contactsSyncPass = ko.observable('');
ko.addObservablesTo(this, {
allowContactsSync: false,
enableContactsSync: false,
contactsSyncUrl: '',
contactsSyncUser: '',
contactsSyncPass: ''
});
}
populate() {

View file

@ -2,15 +2,16 @@ import ko from 'ko';
class FilterUserStore {
constructor() {
this.capa = ko.observable('');
this.modules = ko.observable({});
ko.addObservablesTo(this, {
capa: '',
modules: {},
raw: ''
});
this.filters = ko.observableArray([]);
this.filters.loading = ko.observable(false).extend({ throttle: 200 });
this.filters.saving = ko.observable(false).extend({ throttle: 200 });
this.raw = ko.observable('');
}
}

View file

@ -7,26 +7,29 @@ import { getFolderInboxName, getFolderFromCacheList } from 'Common/Cache';
class FolderUserStore {
constructor() {
this.displaySpecSetting = ko.observable(true);
ko.addObservablesTo(this, {
displaySpecSetting: true,
this.sentFolder = ko.observable('');
this.draftFolder = ko.observable('');
this.spamFolder = ko.observable('');
this.trashFolder = ko.observable('');
this.archiveFolder = ko.observable('');
sentFolder: '',
draftFolder: '',
spamFolder: '',
trashFolder: '',
archiveFolder: '',
folderListOptimized: false,
folderListError: '',
foldersLoading: false,
foldersCreating: false,
foldersDeleting: false,
foldersRenaming: false,
foldersInboxUnreadCount: 0
});
this.namespace = '';
this.folderList = ko.observableArray([]);
this.folderList.optimized = ko.observable(false);
this.folderList.error = ko.observable('');
this.foldersLoading = ko.observable(false);
this.foldersCreating = ko.observable(false);
this.foldersDeleting = ko.observable(false);
this.foldersRenaming = ko.observable(false);
this.foldersInboxUnreadCount = ko.observable(0);
this.currentFolder = ko.observable(null).extend({ toggleSubscribeProperty: [this, 'selected'] });

View file

@ -59,44 +59,47 @@ class MessageUserStore {
this.messageList = ko.observableArray([]).extend({ rateLimit: 0 });
this.messageListCount = ko.observable(0);
this.messageListSearch = ko.observable('');
this.messageListThreadUid = ko.observable('');
this.messageListPage = ko.observable(1);
this.messageListPageBeforeThread = ko.observable(1);
this.messageListError = ko.observable('');
ko.addObservablesTo(this, {
messageListCount: 0,
messageListSearch: '',
messageListThreadUid: '',
messageListPage: 1,
messageListPageBeforeThread: 1,
messageListError: '',
this.messageListEndFolder = ko.observable('');
this.messageListEndSearch = ko.observable('');
this.messageListEndThreadUid = ko.observable('');
this.messageListEndPage = ko.observable(1);
messageListEndFolder: '',
messageListEndSearch: '',
messageListEndThreadUid: '',
messageListEndPage: 1,
messageListLoading: false,
messageListIsNotCompleted: false,
selectorMessageSelected: null,
selectorMessageFocused: null,
// message viewer
message: null,
messageViewTrigger: false,
messageError: '',
messageCurrentLoading: false,
messageFullScreenMode: false,
messagesBodiesDom: null,
messageActiveDom: null
});
this.messageListLoading = ko.observable(false);
this.messageListIsNotCompleted = ko.observable(false);
this.messageListCompleteLoadingThrottle = ko.observable(false).extend({ throttle: 200 });
this.messageListCompleteLoadingThrottleForAnimation = ko.observable(false).extend({ specialThrottle: 700 });
this.messageListDisableAutoSelect = ko.observable(false).extend({ falseTimeout: 500 });
this.selectorMessageSelected = ko.observable(null);
this.selectorMessageFocused = ko.observable(null);
// message viewer
this.message = ko.observable(null);
this.message.viewTrigger = ko.observable(false);
this.messageError = ko.observable('');
this.messageCurrentLoading = ko.observable(false);
this.messageLoadingThrottle = ko.observable(false).extend({ throttle: 50 });
this.messageFullScreenMode = ko.observable(false);
this.messagesBodiesDom = ko.observable(null);
this.messageActiveDom = ko.observable(null);
this.messageLoading = ko.computed(() => this.messageCurrentLoading());
this.messageListEndHash = ko.computed(

View file

@ -23,13 +23,15 @@ class SettingsUserStore {
this.messagesPerPage = ko.observable(20).extend({ limitedList: MESSAGES_PER_PAGE_VALUES });
this.showImages = ko.observable(false);
this.useCheckboxesInList = ko.observable(true);
this.allowDraftAutosave = ko.observable(true);
this.useThreads = ko.observable(false);
this.replySameFolder = ko.observable(false);
ko.addObservablesTo(this, {
showImages: false,
useCheckboxesInList: true,
allowDraftAutosave: true,
useThreads: false,
replySameFolder: false,
this.autoLogout = ko.observable(30);
autoLogout: 30
});
this.usePreviewPane = ko.computed(() => Layout.NoPreview !== this.layout());