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};