snappymail/dev/View/Popup/FolderSystem.js
RainLoop Team e6e0b02849 Code refactoring
Flow first look
2016-09-10 02:27:53 +03:00

112 lines
3.5 KiB
JavaScript

import _ from '_';
import ko from 'ko';
import {SetSystemFoldersNotification, Magics} from 'Common/Enums';
import {UNUSED_OPTION_VALUE} from 'Common/Consts';
import {folderListOptionsBuilder, noop, defautOptionsAfterRender} from 'Common/Utils';
import {initOnStartOrLangChange, i18n} from 'Common/Translator';
import FolderStore from 'Stores/User/Folder';
import * as Settings from 'Storage/Settings';
import Remote from 'Remote/User/Ajax';
import {popup} from 'Knoin/Knoin';
import {AbstractViewNext} from 'Knoin/AbstractViewNext';
@popup({
name: 'View/Popup/FolderSystem',
templateID: 'PopupsFolderSystem'
})
class FolderSystemPopupView extends AbstractViewNext
{
constructor() {
super();
this.sChooseOnText = '';
this.sUnuseText = '';
initOnStartOrLangChange(() => {
this.sChooseOnText = i18n('POPUPS_SYSTEM_FOLDERS/SELECT_CHOOSE_ONE');
this.sUnuseText = i18n('POPUPS_SYSTEM_FOLDERS/SELECT_UNUSE_NAME');
});
this.notification = ko.observable('');
this.folderSelectList = ko.computed(
() => folderListOptionsBuilder([], FolderStore.folderList(), FolderStore.folderListSystemNames(), [
['', this.sChooseOnText], [UNUSED_OPTION_VALUE, this.sUnuseText]
], null, null, null, null, null, true)
);
this.sentFolder = FolderStore.sentFolder;
this.draftFolder = FolderStore.draftFolder;
this.spamFolder = FolderStore.spamFolder;
this.trashFolder = FolderStore.trashFolder;
this.archiveFolder = FolderStore.archiveFolder;
const
fSetSystemFolders = () => {
Settings.settingsSet('SentFolder', FolderStore.sentFolder());
Settings.settingsSet('DraftFolder', FolderStore.draftFolder());
Settings.settingsSet('SpamFolder', FolderStore.spamFolder());
Settings.settingsSet('TrashFolder', FolderStore.trashFolder());
Settings.settingsSet('ArchiveFolder', FolderStore.archiveFolder());
},
fSaveSystemFolders = _.debounce(() => {
fSetSystemFolders();
Remote.saveSystemFolders(noop, {
SentFolder: FolderStore.sentFolder(),
DraftFolder: FolderStore.draftFolder(),
SpamFolder: FolderStore.spamFolder(),
TrashFolder: FolderStore.trashFolder(),
ArchiveFolder: FolderStore.archiveFolder(),
NullFolder: 'NullFolder'
});
}, Magics.Time1s),
fCallback = () => {
fSetSystemFolders();
fSaveSystemFolders();
};
FolderStore.sentFolder.subscribe(fCallback);
FolderStore.draftFolder.subscribe(fCallback);
FolderStore.spamFolder.subscribe(fCallback);
FolderStore.trashFolder.subscribe(fCallback);
FolderStore.archiveFolder.subscribe(fCallback);
this.defautOptionsAfterRender = defautOptionsAfterRender;
}
/**
* @param {number=} notificationType = SetSystemFoldersNotification.None
*/
onShow(notificationType = SetSystemFoldersNotification.None) {
let notification = '';
switch (notificationType)
{
case SetSystemFoldersNotification.Sent:
notification = i18n('POPUPS_SYSTEM_FOLDERS/NOTIFICATION_SENT');
break;
case SetSystemFoldersNotification.Draft:
notification = i18n('POPUPS_SYSTEM_FOLDERS/NOTIFICATION_DRAFTS');
break;
case SetSystemFoldersNotification.Spam:
notification = i18n('POPUPS_SYSTEM_FOLDERS/NOTIFICATION_SPAM');
break;
case SetSystemFoldersNotification.Trash:
notification = i18n('POPUPS_SYSTEM_FOLDERS/NOTIFICATION_TRASH');
break;
case SetSystemFoldersNotification.Archive:
notification = i18n('POPUPS_SYSTEM_FOLDERS/NOTIFICATION_ARCHIVE');
break;
// no default
}
this.notification(notification);
}
}
export {FolderSystemPopupView, FolderSystemPopupView as default};