mirror of
https://github.com/the-djmaze/snappymail.git
synced 2025-01-05 06:22:52 +08:00
151 lines
4.8 KiB
JavaScript
151 lines
4.8 KiB
JavaScript
import ko from 'ko';
|
|
|
|
import {
|
|
isArray,
|
|
pInt,
|
|
settingsSaveHelperSimpleFunction,
|
|
changeTheme,
|
|
convertThemeName,
|
|
addObservablesTo,
|
|
addSubscribablesTo,
|
|
addComputablesTo
|
|
} from 'Common/Utils';
|
|
|
|
import { Capa, SaveSettingsStep } from 'Common/Enums';
|
|
import { Settings, SettingsGet } from 'Common/Globals';
|
|
import { translatorReload, convertLangName } from 'Common/Translator';
|
|
|
|
import { showScreenPopup } from 'Knoin/Knoin';
|
|
|
|
import Remote from 'Remote/Admin/Fetch';
|
|
|
|
import { ThemeStore } from 'Stores/Theme';
|
|
import { LanguageStore } from 'Stores/Language';
|
|
import LanguagesPopupView from 'View/Popup/Languages';
|
|
|
|
export class GeneralAdminSettings /*extends AbstractViewSettings*/ {
|
|
constructor() {
|
|
this.language = LanguageStore.language;
|
|
this.languages = LanguageStore.languages;
|
|
|
|
const aLanguagesAdmin = Settings.app('languagesAdmin');
|
|
this.languagesAdmin = ko.observableArray(isArray(aLanguagesAdmin) ? aLanguagesAdmin : []);
|
|
this.languageAdmin = ko
|
|
.observable(SettingsGet('LanguageAdmin'))
|
|
.extend({ limitedList: this.languagesAdmin });
|
|
|
|
this.theme = ThemeStore.theme;
|
|
this.themes = ThemeStore.themes;
|
|
|
|
addObservablesTo(this, {
|
|
allowLanguagesOnSettings: !!SettingsGet('AllowLanguagesOnSettings'),
|
|
newMoveToFolder: !!SettingsGet('NewMoveToFolder'),
|
|
attachmentLimitTrigger: SaveSettingsStep.Idle,
|
|
languageTrigger: SaveSettingsStep.Idle,
|
|
themeTrigger: SaveSettingsStep.Idle,
|
|
capaThemes: Settings.capa(Capa.Themes),
|
|
capaUserBackground: Settings.capa(Capa.UserBackground),
|
|
capaAdditionalAccounts: Settings.capa(Capa.AdditionalAccounts),
|
|
capaIdentities: Settings.capa(Capa.Identities),
|
|
capaAttachmentThumbnails: Settings.capa(Capa.AttachmentThumbnails),
|
|
dataFolderAccess: false
|
|
});
|
|
|
|
this.weakPassword = rl.app.weakPassword;
|
|
|
|
/** https://github.com/RainLoop/rainloop-webmail/issues/1924
|
|
if (this.weakPassword) {
|
|
fetch('./data/VERSION?' + Math.random()).then(response => this.dataFolderAccess(response.ok));
|
|
}
|
|
*/
|
|
|
|
this.mainAttachmentLimit = ko
|
|
.observable(pInt(SettingsGet('AttachmentLimit')) / (1024 * 1024))
|
|
.extend({ debounce: 500 });
|
|
|
|
this.uploadData = SettingsGet('PhpUploadSizes');
|
|
this.uploadDataDesc =
|
|
this.uploadData && (this.uploadData.upload_max_filesize || this.uploadData.post_max_size)
|
|
? [
|
|
this.uploadData.upload_max_filesize
|
|
? 'upload_max_filesize = ' + this.uploadData.upload_max_filesize + '; '
|
|
: '',
|
|
this.uploadData.post_max_size ? 'post_max_size = ' + this.uploadData.post_max_size : ''
|
|
].join('')
|
|
: '';
|
|
|
|
addComputablesTo(this, {
|
|
themesOptions: () => this.themes.map(theme => ({ optValue: theme, optText: convertThemeName(theme) })),
|
|
|
|
languageFullName: () => convertLangName(this.language()),
|
|
languageAdminFullName: () => convertLangName(this.languageAdmin())
|
|
});
|
|
|
|
this.languageAdminTrigger = ko.observable(SaveSettingsStep.Idle).extend({ debounce: 100 });
|
|
|
|
const fReloadLanguageHelper = (saveSettingsStep) => () => {
|
|
this.languageAdminTrigger(saveSettingsStep);
|
|
setTimeout(() => this.languageAdminTrigger(SaveSettingsStep.Idle), 1000);
|
|
},
|
|
fSaveBoolHelper = (key, fn) =>
|
|
value => {
|
|
const data = {};
|
|
data[key] = value ? 1 : 0;
|
|
Remote.saveAdminConfig(fn, data);
|
|
};
|
|
|
|
addSubscribablesTo(this, {
|
|
mainAttachmentLimit: value =>
|
|
Remote.saveAdminConfig(settingsSaveHelperSimpleFunction(this.attachmentLimitTrigger, this), {
|
|
AttachmentLimit: pInt(value)
|
|
}),
|
|
|
|
language: value =>
|
|
Remote.saveAdminConfig(settingsSaveHelperSimpleFunction(this.languageTrigger, this), {
|
|
Language: value.trim()
|
|
}),
|
|
|
|
languageAdmin: value => {
|
|
this.languageAdminTrigger(SaveSettingsStep.Animate);
|
|
translatorReload(true, value)
|
|
.then(fReloadLanguageHelper(SaveSettingsStep.TrueResult), fReloadLanguageHelper(SaveSettingsStep.FalseResult))
|
|
.then(() => Remote.saveAdminConfig(null, {
|
|
LanguageAdmin: value.trim()
|
|
}));
|
|
},
|
|
|
|
theme: value => {
|
|
changeTheme(value, this.themeTrigger);
|
|
Remote.saveAdminConfig(settingsSaveHelperSimpleFunction(this.themeTrigger, this), {
|
|
Theme: value.trim()
|
|
});
|
|
},
|
|
|
|
capaAdditionalAccounts: fSaveBoolHelper('CapaAdditionalAccounts'),
|
|
|
|
capaIdentities: fSaveBoolHelper('CapaIdentities'),
|
|
|
|
capaAttachmentThumbnails: fSaveBoolHelper('CapaAttachmentThumbnails'),
|
|
|
|
capaThemes: fSaveBoolHelper('CapaThemes'),
|
|
|
|
capaUserBackground: fSaveBoolHelper('CapaUserBackground'),
|
|
|
|
allowLanguagesOnSettings: fSaveBoolHelper('AllowLanguagesOnSettings'),
|
|
|
|
newMoveToFolder: fSaveBoolHelper('NewMoveToFolder')
|
|
});
|
|
}
|
|
|
|
selectLanguage() {
|
|
showScreenPopup(LanguagesPopupView, [this.language, this.languages(), LanguageStore.userLanguage()]);
|
|
}
|
|
|
|
selectLanguageAdmin() {
|
|
showScreenPopup(LanguagesPopupView, [
|
|
this.languageAdmin,
|
|
this.languagesAdmin(),
|
|
SettingsGet('UserLanguageAdmin')
|
|
]);
|
|
}
|
|
}
|