mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-08-28 03:29:20 +03:00
*.jsx -> *.js
This commit is contained in:
parent
0a2b826f71
commit
e88c193334
98 changed files with 341 additions and 340 deletions
188
dev/Settings/User/General.js
Normal file
188
dev/Settings/User/General.js
Normal file
|
|
@ -0,0 +1,188 @@
|
|||
|
||||
import _ from '_';
|
||||
import ko from 'ko';
|
||||
|
||||
import {MESSAGES_PER_PAGE_VALUES} from 'Common/Consts';
|
||||
import {bAnimationSupported} from 'Common/Globals';
|
||||
|
||||
import {SaveSettingsStep, Magics, EditorDefaultType, Layout} from 'Common/Enums';
|
||||
|
||||
import {
|
||||
settingsSaveHelperSimpleFunction,
|
||||
convertLangName, isArray, timeOutAction, boolToAjax
|
||||
} from 'Common/Utils';
|
||||
|
||||
import {i18n, trigger as translatorTrigger, reload as translatorReload} from 'Common/Translator';
|
||||
|
||||
import {showScreenPopup} from 'Knoin/Knoin';
|
||||
|
||||
import AppStore from 'Stores/User/App';
|
||||
import LanguageStore from 'Stores/Language';
|
||||
import SettingsStore from 'Stores/User/Settings';
|
||||
import IdentityStore from 'Stores/User/Identity';
|
||||
import NotificationStore from 'Stores/User/Notification';
|
||||
import MessageStore from 'Stores/User/Message';
|
||||
|
||||
import Remote from 'Remote/User/Ajax';
|
||||
|
||||
class GeneralUserSettings
|
||||
{
|
||||
constructor() {
|
||||
this.language = LanguageStore.language;
|
||||
this.languages = LanguageStore.languages;
|
||||
this.messagesPerPage = SettingsStore.messagesPerPage;
|
||||
this.messagesPerPageArray = MESSAGES_PER_PAGE_VALUES;
|
||||
|
||||
this.editorDefaultType = SettingsStore.editorDefaultType;
|
||||
this.layout = SettingsStore.layout;
|
||||
this.usePreviewPane = SettingsStore.usePreviewPane;
|
||||
|
||||
this.soundNotificationIsSupported = NotificationStore.soundNotificationIsSupported;
|
||||
this.enableSoundNotification = NotificationStore.enableSoundNotification;
|
||||
|
||||
this.enableDesktopNotification = NotificationStore.enableDesktopNotification;
|
||||
this.isDesktopNotificationSupported = NotificationStore.isDesktopNotificationSupported;
|
||||
this.isDesktopNotificationDenied = NotificationStore.isDesktopNotificationDenied;
|
||||
|
||||
this.showImages = SettingsStore.showImages;
|
||||
this.useCheckboxesInList = SettingsStore.useCheckboxesInList;
|
||||
this.threadsAllowed = AppStore.threadsAllowed;
|
||||
this.useThreads = SettingsStore.useThreads;
|
||||
this.replySameFolder = SettingsStore.replySameFolder;
|
||||
this.allowLanguagesOnSettings = AppStore.allowLanguagesOnSettings;
|
||||
|
||||
this.languageFullName = ko.computed(() => convertLangName(this.language()));
|
||||
this.languageTrigger = ko.observable(SaveSettingsStep.Idle).extend({throttle: Magics.Time100ms});
|
||||
|
||||
this.mppTrigger = ko.observable(SaveSettingsStep.Idle);
|
||||
this.editorDefaultTypeTrigger = ko.observable(SaveSettingsStep.Idle);
|
||||
this.layoutTrigger = ko.observable(SaveSettingsStep.Idle);
|
||||
|
||||
this.isAnimationSupported = bAnimationSupported;
|
||||
|
||||
this.identities = IdentityStore.identities;
|
||||
|
||||
this.identityMain = ko.computed(() => {
|
||||
const list = this.identities();
|
||||
return isArray(list) ? _.find(list, (item) => item && '' === item.id()) : null;
|
||||
});
|
||||
|
||||
this.identityMainDesc = ko.computed(() => {
|
||||
const identity = this.identityMain();
|
||||
return identity ? identity.formattedName() : '---';
|
||||
});
|
||||
|
||||
this.editorDefaultTypes = ko.computed(() => {
|
||||
translatorTrigger();
|
||||
return [
|
||||
{'id': EditorDefaultType.Html, 'name': i18n('SETTINGS_GENERAL/LABEL_EDITOR_HTML')},
|
||||
{'id': EditorDefaultType.Plain, 'name': i18n('SETTINGS_GENERAL/LABEL_EDITOR_PLAIN')},
|
||||
{'id': EditorDefaultType.HtmlForced, 'name': i18n('SETTINGS_GENERAL/LABEL_EDITOR_HTML_FORCED')},
|
||||
{'id': EditorDefaultType.PlainForced, 'name': i18n('SETTINGS_GENERAL/LABEL_EDITOR_PLAIN_FORCED')}
|
||||
];
|
||||
});
|
||||
|
||||
this.layoutTypes = ko.computed(() => {
|
||||
translatorTrigger();
|
||||
return [
|
||||
{'id': Layout.NoPreview, 'name': i18n('SETTINGS_GENERAL/LABEL_LAYOUT_NO_SPLIT')},
|
||||
{'id': Layout.SidePreview, 'name': i18n('SETTINGS_GENERAL/LABEL_LAYOUT_VERTICAL_SPLIT')},
|
||||
{'id': Layout.BottomPreview, 'name': i18n('SETTINGS_GENERAL/LABEL_LAYOUT_HORIZONTAL_SPLIT')}
|
||||
];
|
||||
});
|
||||
}
|
||||
|
||||
editMainIdentity() {
|
||||
const identity = this.identityMain();
|
||||
if (identity)
|
||||
{
|
||||
showScreenPopup(require('View/Popup/Identity'), [identity]);
|
||||
}
|
||||
}
|
||||
|
||||
testSoundNotification() {
|
||||
NotificationStore.playSoundNotification(true);
|
||||
}
|
||||
|
||||
onBuild() {
|
||||
_.delay(() => {
|
||||
const
|
||||
f0 = settingsSaveHelperSimpleFunction(this.editorDefaultTypeTrigger, this),
|
||||
f1 = settingsSaveHelperSimpleFunction(this.mppTrigger, this),
|
||||
f2 = settingsSaveHelperSimpleFunction(this.layoutTrigger, this),
|
||||
fReloadLanguageHelper = (saveSettingsStep) => () => {
|
||||
this.languageTrigger(saveSettingsStep);
|
||||
_.delay(() => this.languageTrigger(SaveSettingsStep.Idle), Magics.Time1s);
|
||||
};
|
||||
|
||||
this.language.subscribe((value) => {
|
||||
this.languageTrigger(SaveSettingsStep.Animate);
|
||||
translatorReload(false, value).then(
|
||||
fReloadLanguageHelper(SaveSettingsStep.TrueResult),
|
||||
fReloadLanguageHelper(SaveSettingsStep.FalseResult)
|
||||
).then(() => {
|
||||
Remote.saveSettings(null, {
|
||||
'Language': value
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
this.editorDefaultType.subscribe(Remote.saveSettingsHelper('EditorDefaultType', null, f0));
|
||||
this.messagesPerPage.subscribe(Remote.saveSettingsHelper('MPP', null, f1));
|
||||
this.showImages.subscribe(Remote.saveSettingsHelper('ShowImages', boolToAjax));
|
||||
|
||||
this.useCheckboxesInList.subscribe(Remote.saveSettingsHelper('UseCheckboxesInList', boolToAjax));
|
||||
|
||||
this.enableDesktopNotification.subscribe((value) => {
|
||||
timeOutAction('SaveDesktopNotifications', () => {
|
||||
Remote.saveSettings(null, {
|
||||
'DesktopNotifications': boolToAjax(value)
|
||||
});
|
||||
}, Magics.Time3s);
|
||||
});
|
||||
|
||||
this.enableSoundNotification.subscribe((value) => {
|
||||
timeOutAction('SaveSoundNotification', () => {
|
||||
Remote.saveSettings(null, {
|
||||
'SoundNotification': boolToAjax(value)
|
||||
});
|
||||
}, Magics.Time3s);
|
||||
});
|
||||
|
||||
this.replySameFolder.subscribe((value) => {
|
||||
timeOutAction('SaveReplySameFolder', () => {
|
||||
Remote.saveSettings(null, {
|
||||
'ReplySameFolder': boolToAjax(value)
|
||||
});
|
||||
}, Magics.Time3s);
|
||||
});
|
||||
|
||||
this.useThreads.subscribe((value) => {
|
||||
MessageStore.messageList([]);
|
||||
Remote.saveSettings(null, {
|
||||
'UseThreads': boolToAjax(value)
|
||||
});
|
||||
});
|
||||
|
||||
this.layout.subscribe(function(value) {
|
||||
MessageStore.messageList([]);
|
||||
Remote.saveSettings(f2, {
|
||||
'Layout': value
|
||||
});
|
||||
});
|
||||
}, Magics.Time50ms);
|
||||
}
|
||||
|
||||
onShow() {
|
||||
this.enableDesktopNotification.valueHasMutated();
|
||||
}
|
||||
|
||||
selectLanguage() {
|
||||
showScreenPopup(require('View/Popup/Languages'), [
|
||||
this.language, this.languages(), LanguageStore.userLanguage()
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
export {GeneralUserSettings, GeneralUserSettings as default};
|
||||
Loading…
Add table
Add a link
Reference in a new issue