Drop AbstractAppStore and

put the properties/observables where they belong
This commit is contained in:
djmaze 2020-10-12 19:46:41 +02:00
parent 917dfa732e
commit 0eba94f671
12 changed files with 145 additions and 191 deletions

View file

@ -895,16 +895,6 @@ class AppUser extends AbstractApp {
Remote.logout(() => this.logoutReload(0 < (Settings.get('ParentEmail')||{length:0}).length)); Remote.logout(() => this.logoutReload(0 < (Settings.get('ParentEmail')||{length:0}).length));
} }
bootstartTwoFactorScreen() {
showScreenPopup(require('View/Popup/TwoFactorConfiguration'), [true]);
}
bootstartLoginScreen() {
$htmlCL.remove('rl-user-auth');
$htmlCL.add('rl-user-no-auth');
startScreens([LoginUserScreen]);
}
bootend() { bootend() {
if (window.progressJs) { if (window.progressJs) {
progressJs.end(); progressJs.end();
@ -931,21 +921,20 @@ class AppUser extends AbstractApp {
rl.setWindowTitle(); rl.setWindowTitle();
if (Settings.get('Auth')) { if (Settings.get('Auth')) {
$htmlCL.add('rl-user-auth');
if ( if (
Settings.capa(Capa.TwoFactor) && Settings.capa(Capa.TwoFactor) &&
Settings.capa(Capa.TwoFactorForce) && Settings.capa(Capa.TwoFactorForce) &&
Settings.get('RequireTwoFactor') Settings.get('RequireTwoFactor')
) { ) {
this.bootend(); this.bootend();
this.bootstartTwoFactorScreen(); showScreenPopup(require('View/Popup/TwoFactorConfiguration'), [true]);
} else { } else {
rl.setWindowTitle(i18n('TITLES/LOADING')); rl.setWindowTitle(i18n('TITLES/LOADING'));
// require.ensure([], function() { // require code splitting // require.ensure([], function() { // require code splitting
this.foldersReload((value) => { this.foldersReload(value => {
try {
this.bootend(); this.bootend();
if (value) { if (value) {
@ -964,7 +953,7 @@ class AppUser extends AbstractApp {
try { try {
PgpStore.openpgp.initWorker({ path: openPgpWorkerJs() }); PgpStore.openpgp.initWorker({ path: openPgpWorkerJs() });
} catch (e) { } catch (e) {
console.log(e); console.error(e);
} }
} }
@ -1053,13 +1042,16 @@ class AppUser extends AbstractApp {
} else { } else {
this.logout(); this.logout();
} }
} catch (e) {
console.error(e);
}
}); });
// }); // require code splitting // }); // require code splitting
} }
} else { } else {
this.bootend(); this.bootend();
this.bootstartLoginScreen(); startScreens([LoginUserScreen]);
} }
setInterval(() => dispatchEvent(new CustomEvent('reload-time')), 60000); setInterval(() => dispatchEvent(new CustomEvent('reload-time')), 60000);

View file

@ -39,9 +39,9 @@ class GeneralAdminSettings {
this.capaAttachmentThumbnails = CapaAdminStore.attachmentThumbnails; this.capaAttachmentThumbnails = CapaAdminStore.attachmentThumbnails;
this.capaTemplates = CapaAdminStore.templates; this.capaTemplates = CapaAdminStore.templates;
this.allowLanguagesOnSettings = AppAdminStore.allowLanguagesOnSettings; this.allowLanguagesOnSettings = ko.observable(!!settingsGet('AllowLanguagesOnSettings'));
this.weakPassword = AppAdminStore.weakPassword; this.weakPassword = AppAdminStore.weakPassword;
this.newMoveToFolder = AppAdminStore.newMoveToFolder; this.newMoveToFolder = ko.observable(!!settingsGet('NewMoveToFolder'));
this.dataFolderAccess = AppAdminStore.dataFolderAccess; this.dataFolderAccess = AppAdminStore.dataFolderAccess;
@ -83,19 +83,19 @@ class GeneralAdminSettings {
setTimeout(() => this.languageAdminTrigger(SaveSettingsStep.Idle), 1000); setTimeout(() => this.languageAdminTrigger(SaveSettingsStep.Idle), 1000);
}; };
this.mainAttachmentLimit.subscribe((value) => { this.mainAttachmentLimit.subscribe(value => {
Remote.saveAdminConfig(f1, { Remote.saveAdminConfig(f1, {
'AttachmentLimit': pInt(value) 'AttachmentLimit': pInt(value)
}); });
}); });
this.language.subscribe((value) => { this.language.subscribe(value => {
Remote.saveAdminConfig(f2, { Remote.saveAdminConfig(f2, {
'Language': value.trim() 'Language': value.trim()
}); });
}); });
this.languageAdmin.subscribe((value) => { this.languageAdmin.subscribe(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))
@ -106,56 +106,56 @@ class GeneralAdminSettings {
}); });
}); });
this.theme.subscribe((value) => { this.theme.subscribe(value => {
changeTheme(value, this.themeTrigger); changeTheme(value, this.themeTrigger);
Remote.saveAdminConfig(f3, { Remote.saveAdminConfig(f3, {
'Theme': value.trim() 'Theme': value.trim()
}); });
}); });
this.capaAdditionalAccounts.subscribe((value) => { this.capaAdditionalAccounts.subscribe(value => {
Remote.saveAdminConfig(null, { Remote.saveAdminConfig(null, {
'CapaAdditionalAccounts': value ? '1' : '0' 'CapaAdditionalAccounts': value ? '1' : '0'
}); });
}); });
this.capaIdentities.subscribe((value) => { this.capaIdentities.subscribe(value => {
Remote.saveAdminConfig(null, { Remote.saveAdminConfig(null, {
'CapaIdentities': value ? '1' : '0' 'CapaIdentities': value ? '1' : '0'
}); });
}); });
this.capaTemplates.subscribe((value) => { this.capaTemplates.subscribe(value => {
Remote.saveAdminConfig(null, { Remote.saveAdminConfig(null, {
'CapaTemplates': value ? '1' : '0' 'CapaTemplates': value ? '1' : '0'
}); });
}); });
this.capaAttachmentThumbnails.subscribe((value) => { this.capaAttachmentThumbnails.subscribe(value => {
Remote.saveAdminConfig(null, { Remote.saveAdminConfig(null, {
'CapaAttachmentThumbnails': value ? '1' : '0' 'CapaAttachmentThumbnails': value ? '1' : '0'
}); });
}); });
this.capaThemes.subscribe((value) => { this.capaThemes.subscribe(value => {
Remote.saveAdminConfig(null, { Remote.saveAdminConfig(null, {
'CapaThemes': value ? '1' : '0' 'CapaThemes': value ? '1' : '0'
}); });
}); });
this.capaUserBackground.subscribe((value) => { this.capaUserBackground.subscribe(value => {
Remote.saveAdminConfig(null, { Remote.saveAdminConfig(null, {
'CapaUserBackground': value ? '1' : '0' 'CapaUserBackground': value ? '1' : '0'
}); });
}); });
this.allowLanguagesOnSettings.subscribe((value) => { this.allowLanguagesOnSettings.subscribe(value => {
Remote.saveAdminConfig(null, { Remote.saveAdminConfig(null, {
'AllowLanguagesOnSettings': value ? '1' : '0' 'AllowLanguagesOnSettings': value ? '1' : '0'
}); });
}); });
this.newMoveToFolder.subscribe((value) => { this.newMoveToFolder.subscribe(value => {
Remote.saveAdminConfig(null, { Remote.saveAdminConfig(null, {
'NewMoveToFolder': value ? '1' : '0' 'NewMoveToFolder': value ? '1' : '0'
}); });

View file

@ -2,17 +2,16 @@ import ko from 'ko';
import { settingsSaveHelperSimpleFunction } from 'Common/Utils'; import { settingsSaveHelperSimpleFunction } from 'Common/Utils';
import AppStore from 'Stores/Admin/App';
import Remote from 'Remote/Admin/Fetch'; import Remote from 'Remote/Admin/Fetch';
class LoginAdminSettings { class LoginAdminSettings {
constructor() { constructor() {
this.determineUserLanguage = AppStore.determineUserLanguage; const settingsGet = rl.settings.get;
this.determineUserDomain = AppStore.determineUserDomain; this.determineUserLanguage = ko.observable(!!settingsGet('DetermineUserLanguage'));
this.determineUserDomain = ko.observable(!!settingsGet('DetermineUserDomain'));
this.defaultDomain = ko.observable(rl.settings.get('LoginDefaultDomain')).idleTrigger(); this.defaultDomain = ko.observable(settingsGet('LoginDefaultDomain')).idleTrigger();
this.allowLanguagesOnLogin = AppStore.allowLanguagesOnLogin; this.allowLanguagesOnLogin = ko.observable(!!settingsGet('AllowLanguagesOnLogin'));
this.dummy = ko.observable(false); this.dummy = ko.observable(false);
} }
@ -21,25 +20,25 @@ class LoginAdminSettings {
setTimeout(() => { setTimeout(() => {
const f1 = settingsSaveHelperSimpleFunction(this.defaultDomain.trigger, this); const f1 = settingsSaveHelperSimpleFunction(this.defaultDomain.trigger, this);
this.determineUserLanguage.subscribe((value) => { this.determineUserLanguage.subscribe(value => {
Remote.saveAdminConfig(null, { Remote.saveAdminConfig(null, {
'DetermineUserLanguage': value ? '1' : '0' 'DetermineUserLanguage': value ? '1' : '0'
}); });
}); });
this.determineUserDomain.subscribe((value) => { this.determineUserDomain.subscribe(value => {
Remote.saveAdminConfig(null, { Remote.saveAdminConfig(null, {
'DetermineUserDomain': value ? '1' : '0' 'DetermineUserDomain': value ? '1' : '0'
}); });
}); });
this.allowLanguagesOnLogin.subscribe((value) => { this.allowLanguagesOnLogin.subscribe(value => {
Remote.saveAdminConfig(null, { Remote.saveAdminConfig(null, {
'AllowLanguagesOnLogin': value ? '1' : '0' 'AllowLanguagesOnLogin': value ? '1' : '0'
}); });
}); });
this.defaultDomain.subscribe((value) => { this.defaultDomain.subscribe(value => {
Remote.saveAdminConfig(f1, { Remote.saveAdminConfig(f1, {
'LoginDefaultDomain': value.trim() 'LoginDefaultDomain': value.trim()
}); });

View file

@ -13,7 +13,7 @@ const settingsGet = rl.settings.get;
class SecurityAdminSettings { class SecurityAdminSettings {
constructor() { constructor() {
this.useLocalProxyForExternalImages = AppAdminStore.useLocalProxyForExternalImages; this.useLocalProxyForExternalImages = ko.observable(!!rl.settings.get('UseLocalProxyForExternalImages'));
this.weakPassword = AppAdminStore.weakPassword; this.weakPassword = AppAdminStore.weakPassword;
@ -22,7 +22,7 @@ class SecurityAdminSettings {
this.capaTwoFactorAuth = CapaAdminStore.twoFactorAuth; this.capaTwoFactorAuth = CapaAdminStore.twoFactorAuth;
this.capaTwoFactorAuthForce = CapaAdminStore.twoFactorAuthForce; this.capaTwoFactorAuthForce = CapaAdminStore.twoFactorAuthForce;
this.capaTwoFactorAuth.subscribe((value) => { this.capaTwoFactorAuth.subscribe(value => {
if (!value) { if (!value) {
this.capaTwoFactorAuthForce(false); this.capaTwoFactorAuthForce(false);
} }
@ -31,7 +31,7 @@ class SecurityAdminSettings {
this.verifySslCertificate = ko.observable(!!settingsGet('VerifySslCertificate')); this.verifySslCertificate = ko.observable(!!settingsGet('VerifySslCertificate'));
this.allowSelfSigned = ko.observable(!!settingsGet('AllowSelfSigned')); this.allowSelfSigned = ko.observable(!!settingsGet('AllowSelfSigned'));
this.verifySslCertificate.subscribe((value) => { this.verifySslCertificate.subscribe(value => {
if (!value) { if (!value) {
this.allowSelfSigned(true); this.allowSelfSigned(true);
} }
@ -123,37 +123,37 @@ class SecurityAdminSettings {
} }
onBuild() { onBuild() {
this.capaOpenPGP.subscribe((value) => { this.capaOpenPGP.subscribe(value => {
Remote.saveAdminConfig(null, { Remote.saveAdminConfig(null, {
'CapaOpenPGP': value ? '1' : '0' 'CapaOpenPGP': value ? '1' : '0'
}); });
}); });
this.capaTwoFactorAuth.subscribe((value) => { this.capaTwoFactorAuth.subscribe(value => {
Remote.saveAdminConfig(null, { Remote.saveAdminConfig(null, {
'CapaTwoFactorAuth': value ? '1' : '0' 'CapaTwoFactorAuth': value ? '1' : '0'
}); });
}); });
this.capaTwoFactorAuthForce.subscribe((value) => { this.capaTwoFactorAuthForce.subscribe(value => {
Remote.saveAdminConfig(null, { Remote.saveAdminConfig(null, {
'CapaTwoFactorAuthForce': value ? '1' : '0' 'CapaTwoFactorAuthForce': value ? '1' : '0'
}); });
}); });
this.useLocalProxyForExternalImages.subscribe((value) => { this.useLocalProxyForExternalImages.subscribe(value => {
Remote.saveAdminConfig(null, { Remote.saveAdminConfig(null, {
'UseLocalProxyForExternalImages': value ? '1' : '0' 'UseLocalProxyForExternalImages': value ? '1' : '0'
}); });
}); });
this.verifySslCertificate.subscribe((value) => { this.verifySslCertificate.subscribe(value => {
Remote.saveAdminConfig(null, { Remote.saveAdminConfig(null, {
'VerifySslCertificate': value ? '1' : '0' 'VerifySslCertificate': value ? '1' : '0'
}); });
}); });
this.allowSelfSigned.subscribe((value) => { this.allowSelfSigned.subscribe(value => {
Remote.saveAdminConfig(null, { Remote.saveAdminConfig(null, {
'AllowSelfSigned': value ? '1' : '0' 'AllowSelfSigned': value ? '1' : '0'
}); });

View file

@ -42,7 +42,7 @@ class GeneralUserSettings {
this.threadsAllowed = AppStore.threadsAllowed; this.threadsAllowed = AppStore.threadsAllowed;
this.useThreads = SettingsStore.useThreads; this.useThreads = SettingsStore.useThreads;
this.replySameFolder = SettingsStore.replySameFolder; this.replySameFolder = SettingsStore.replySameFolder;
this.allowLanguagesOnSettings = AppStore.allowLanguagesOnSettings; this.allowLanguagesOnSettings = !!rl.settings.get('AllowLanguagesOnSettings');
this.languageFullName = ko.computed(() => convertLangName(this.language())); this.languageFullName = ko.computed(() => convertLangName(this.language()));
this.languageTrigger = ko.observable(SaveSettingsStep.Idle).extend({ throttle: 100 }); this.languageTrigger = ko.observable(SaveSettingsStep.Idle).extend({ throttle: 100 });

View file

@ -1,17 +0,0 @@
import ko from 'ko';
class AbstractAppStore {
constructor() {
this.allowLanguagesOnSettings = ko.observable(true);
this.allowLanguagesOnLogin = ko.observable(true);
this.newMoveToFolder = ko.observable(true);
}
populate() {
this.allowLanguagesOnLogin(!!rl.settings.get('AllowLanguagesOnLogin'));
this.allowLanguagesOnSettings(!!rl.settings.get('AllowLanguagesOnSettings'));
this.newMoveToFolder(!!rl.settings.get('NewMoveToFolder'));
}
}
export { AbstractAppStore, AbstractAppStore as default };

View file

@ -1,28 +1,14 @@
import ko from 'ko'; import ko from 'ko';
import { AbstractAppStore } from 'Stores/AbstractApp';
class AppAdminStore extends AbstractAppStore { class AppAdminStore {
constructor() { constructor() {
super();
this.determineUserLanguage = ko.observable(false);
this.determineUserDomain = ko.observable(false);
this.weakPassword = ko.observable(false); this.weakPassword = ko.observable(false);
this.useLocalProxyForExternalImages = ko.observable(false);
this.dataFolderAccess = ko.observable(false); this.dataFolderAccess = ko.observable(false);
} }
populate() { populate() {
super.populate(); this.weakPassword(!!rl.settings.get('WeakPassword'));
const settingsGet = rl.settings.get;
this.determineUserLanguage(!!settingsGet('DetermineUserLanguage'));
this.determineUserDomain(!!settingsGet('DetermineUserDomain'));
this.weakPassword(!!settingsGet('WeakPassword'));
this.useLocalProxyForExternalImages(!!settingsGet('UseLocalProxyForExternalImages'));
/* /*
if (settingsGet('Auth')) { if (settingsGet('Auth')) {
fetch('./data/VERSION?' + Math.random()).then(() => this.dataFolderAccess(true)); fetch('./data/VERSION?' + Math.random()).then(() => this.dataFolderAccess(true));

View file

@ -3,14 +3,10 @@ import { Focused, KeyState } from 'Common/Enums';
import { keyScope, leftPanelDisabled } from 'Common/Globals'; import { keyScope, leftPanelDisabled } from 'Common/Globals';
import { AbstractAppStore } from 'Stores/AbstractApp';
const Settings = rl.settings; const Settings = rl.settings;
class AppUserStore extends AbstractAppStore { class AppUserStore {
constructor() { constructor() {
super();
this.currentAudio = ko.observable(''); this.currentAudio = ko.observable('');
this.focusedState = ko.observable(Focused.None); this.focusedState = ko.observable(Focused.None);
@ -59,8 +55,6 @@ class AppUserStore extends AbstractAppStore {
} }
populate() { populate() {
super.populate();
this.projectHash(Settings.get('ProjectHash')); this.projectHash(Settings.get('ProjectHash'));
this.contactsAutosave(!!Settings.get('ContactsAutosave')); this.contactsAutosave(!!Settings.get('ContactsAutosave'));

View file

@ -97,7 +97,7 @@ class LoginUserView extends AbstractViewNext {
this.submitError.subscribe(value => value || this.submitErrorAddidional('')); this.submitError.subscribe(value => value || this.submitErrorAddidional(''));
this.allowLanguagesOnLogin = AppStore.allowLanguagesOnLogin; this.allowLanguagesOnLogin = !!Settings.get('AllowLanguagesOnLogin');
this.langRequest = ko.observable(false); this.langRequest = ko.observable(false);
this.language = LanguageStore.language; this.language = LanguageStore.language;

View file

@ -62,7 +62,7 @@ class MessageListMailBoxUserView extends AbstractViewNext {
this.iGoToUpUpOrDownDownTimeout = 0; this.iGoToUpUpOrDownDownTimeout = 0;
this.mobile = !!Settings.app('mobile'); this.mobile = !!Settings.app('mobile');
this.newMoveToFolder = AppStore.newMoveToFolder; this.newMoveToFolder = !!Settings.get('NewMoveToFolder');
this.allowReload = !!Settings.capa(Capa.Reload); this.allowReload = !!Settings.capa(Capa.Reload);
this.allowSearch = !!Settings.capa(Capa.Search); this.allowSearch = !!Settings.capa(Capa.Search);
@ -334,7 +334,7 @@ class MessageListMailBoxUserView extends AbstractViewNext {
@command(canBeMovedHelper) @command(canBeMovedHelper)
moveNewCommand(vm, event) { moveNewCommand(vm, event) {
if (this.newMoveToFolder() && this.mobileCheckedStateShow()) { if (this.newMoveToFolder && this.mobileCheckedStateShow()) {
if (vm && event && event.preventDefault) { if (vm && event && event.preventDefault) {
event.preventDefault(); event.preventDefault();
event.stopPropagation(); event.stopPropagation();
@ -802,7 +802,7 @@ class MessageListMailBoxUserView extends AbstractViewNext {
if (Settings.capa(Capa.MessageListActions)) { if (Settings.capa(Capa.MessageListActions)) {
// move // move
shortcuts.add('insert', '', KeyState.MessageList, () => { shortcuts.add('insert', '', KeyState.MessageList, () => {
if (this.newMoveToFolder()) { if (this.newMoveToFolder) {
this.moveNewCommand(); this.moveNewCommand();
} else { } else {
this.moveDropdownTrigger(true); this.moveDropdownTrigger(true);

View file

@ -89,7 +89,7 @@
<div class="controls clearfix" style="margin-bottom: 10px"> <div class="controls clearfix" style="margin-bottom: 10px">
<div class="pull-right social-buttons"> <div class="pull-right social-buttons">
<a href="#" tabindex="-1" class="language-button" <a href="#" tabindex="-1" class="language-button"
data-bind="visible: allowLanguagesOnLogin(), click: selectLanguage, tooltip: 'POPUPS_LANGUAGES/TITLE_LANGUAGES'"> data-bind="visible: allowLanguagesOnLogin, click: selectLanguage, tooltip: 'POPUPS_LANGUAGES/TITLE_LANGUAGES'">
<i data-bind="css: langRequest() ? 'icon-spinner animated' : 'icon-world'"></i> <i data-bind="css: langRequest() ? 'icon-spinner animated' : 'icon-world'"></i>
</a> </a>
</div> </div>

View file

@ -28,7 +28,7 @@
</a> </a>
</div> </div>
<div class="btn-group" data-bind="visible: allowReload && mobileCheckedStateHide()">&nbsp;</div> <div class="btn-group" data-bind="visible: allowReload && mobileCheckedStateHide()">&nbsp;</div>
<!-- ko if: !newMoveToFolder() --> <!-- ko if: !newMoveToFolder -->
<div class="btn-group dropdown colored-toggle hide-on-mobile" data-bind="visible: allowMessageListActions, registrateBootstrapDropdown: true, openDropdownTrigger: moveDropdownTrigger"> <div class="btn-group dropdown colored-toggle hide-on-mobile" data-bind="visible: allowMessageListActions, registrateBootstrapDropdown: true, openDropdownTrigger: moveDropdownTrigger">
<a id="move-dropdown-id" href="#" tabindex="-1" class="btn single btn-dark-disabled-border dropdown-toggle buttonMove" data-toggle="dropdown" data-bind="command: moveCommand, tooltip: 'MESSAGE_LIST/BUTTON_MOVE_TO'"> <a id="move-dropdown-id" href="#" tabindex="-1" class="btn single btn-dark-disabled-border dropdown-toggle buttonMove" data-toggle="dropdown" data-bind="command: moveCommand, tooltip: 'MESSAGE_LIST/BUTTON_MOVE_TO'">
<i class="icon-copy visible-on-ctrl-btn"></i> <i class="icon-copy visible-on-ctrl-btn"></i>
@ -42,7 +42,7 @@
</ul> </ul>
</div> </div>
<!-- /ko --> <!-- /ko -->
<!-- ko if: newMoveToFolder() --> <!-- ko if: newMoveToFolder -->
<div class="btn-group" data-bind="visible: allowMessageListActions && mobileCheckedStateShow()"> <div class="btn-group" data-bind="visible: allowMessageListActions && mobileCheckedStateShow()">
<a id="move-dropdown-id" href="#" tabindex="-1" class="btn single btn-dark-disabled-border buttonMove" data-bind="command: moveNewCommand, tooltip: 'MESSAGE_LIST/BUTTON_MOVE_TO'"> <a id="move-dropdown-id" href="#" tabindex="-1" class="btn single btn-dark-disabled-border buttonMove" data-bind="command: moveNewCommand, tooltip: 'MESSAGE_LIST/BUTTON_MOVE_TO'">
<i class="icon-copy visible-on-ctrl-btn"></i> <i class="icon-copy visible-on-ctrl-btn"></i>