mirror of
https://github.com/the-djmaze/snappymail.git
synced 2025-01-08 07:48:02 +08:00
17669b7be0
Signature plugin fixes Add view decorator A large number of fixes
187 lines
4.6 KiB
JavaScript
187 lines
4.6 KiB
JavaScript
|
|
import _ from '_';
|
|
|
|
import {Focused, Capa, ClientSideKeyName, Magics} from 'Common/Enums';
|
|
import {leftPanelDisabled, leftPanelType, bMobileDevice} from 'Common/Globals';
|
|
import {pString, pInt, decodeURI, windowResizeCallback} from 'Common/Utils';
|
|
import {getFolderFromCacheList, getFolderFullNameRaw, getFolderInboxName} from 'Common/Cache';
|
|
import {i18n} from 'Common/Translator';
|
|
|
|
import * as Events from 'Common/Events';
|
|
import * as Settings from 'Storage/Settings';
|
|
|
|
import AppStore from 'Stores/User/App';
|
|
import AccountStore from 'Stores/User/Account';
|
|
import SettingsStore from 'Stores/User/Settings';
|
|
import FolderStore from 'Stores/User/Folder';
|
|
import MessageStore from 'Stores/User/Message';
|
|
|
|
import {SystemDropDownMailBoxUserView} from 'View/User/MailBox/SystemDropDown';
|
|
import {FolderListMailBoxUserView} from 'View/User/MailBox/FolderList';
|
|
import {MessageListMailBoxUserView} from 'View/User/MailBox/MessageList';
|
|
import {MessageViewMailBoxUserView} from 'View/User/MailBox/MessageView';
|
|
|
|
import {getApp} from 'Helper/Apps/User';
|
|
|
|
import {warmUpScreenPopup} from 'Knoin/Knoin';
|
|
|
|
import {AbstractScreen} from 'Knoin/AbstractScreen';
|
|
|
|
class MailBoxUserScreen extends AbstractScreen
|
|
{
|
|
constructor() {
|
|
super('mailbox', [
|
|
SystemDropDownMailBoxUserView,
|
|
FolderListMailBoxUserView,
|
|
MessageListMailBoxUserView,
|
|
MessageViewMailBoxUserView
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* @returns {void}
|
|
*/
|
|
updateWindowTitle() {
|
|
let foldersInboxUnreadCount = FolderStore.foldersInboxUnreadCount();
|
|
const email = AccountStore.email();
|
|
|
|
if (Settings.appSettingsGet('listPermanentFiltered'))
|
|
{
|
|
foldersInboxUnreadCount = 0;
|
|
}
|
|
|
|
getApp().setWindowTitle(('' === email ? '' : '' + (0 < foldersInboxUnreadCount ? '(' + foldersInboxUnreadCount + ') ' : ' ') + email + ' - ') + i18n('TITLES/MAILBOX'));
|
|
}
|
|
|
|
/**
|
|
* @returns {void}
|
|
*/
|
|
onShow() {
|
|
this.updateWindowTitle();
|
|
|
|
AppStore.focusedState(Focused.None);
|
|
AppStore.focusedState(Focused.MessageList);
|
|
|
|
if (Settings.appSettingsGet('mobile'))
|
|
{
|
|
leftPanelDisabled(true);
|
|
}
|
|
|
|
if (!Settings.capa(Capa.Folders))
|
|
{
|
|
leftPanelType(Settings.capa(Capa.Composer) || Settings.capa(Capa.Contacts) ? 'short' : 'none');
|
|
}
|
|
else
|
|
{
|
|
leftPanelType('');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @param {string} folderHash
|
|
* @param {number} page
|
|
* @param {string} search
|
|
* @returns {void}
|
|
*/
|
|
onRoute(folderHash, page, search) {
|
|
let threadUid = folderHash.replace(/^(.+)~([\d]+)$/, '$2');
|
|
const folder = getFolderFromCacheList(getFolderFullNameRaw(folderHash.replace(/~([\d]+)$/, '')));
|
|
|
|
if (folder)
|
|
{
|
|
if (folderHash === threadUid)
|
|
{
|
|
threadUid = '';
|
|
}
|
|
|
|
FolderStore.currentFolder(folder);
|
|
|
|
MessageStore.messageListPage(page);
|
|
MessageStore.messageListSearch(search);
|
|
MessageStore.messageListThreadUid(threadUid);
|
|
|
|
getApp().reloadMessageList();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @returns {void}
|
|
*/
|
|
onStart() {
|
|
FolderStore.folderList.subscribe(windowResizeCallback);
|
|
|
|
MessageStore.messageList.subscribe(windowResizeCallback);
|
|
MessageStore.message.subscribe(windowResizeCallback);
|
|
|
|
_.delay(() => SettingsStore.layout.valueHasMutated(), Magics.Time50ms);
|
|
_.delay(() => warmUpScreenPopup(require('View/Popup/Compose')), Magics.Time500ms);
|
|
|
|
Events.sub('mailbox.inbox-unread-count', (count) => {
|
|
FolderStore.foldersInboxUnreadCount(count);
|
|
|
|
const email = AccountStore.email();
|
|
_.each(AccountStore.accounts(), (item) => {
|
|
if (item && email === item.email)
|
|
{
|
|
item.count(count);
|
|
}
|
|
});
|
|
|
|
this.updateWindowTitle();
|
|
});
|
|
}
|
|
|
|
/**
|
|
* @returns {void}
|
|
*/
|
|
onBuild() {
|
|
if (!bMobileDevice && !Settings.appSettingsGet('mobile'))
|
|
{
|
|
_.defer(() => {
|
|
getApp().initHorizontalLayoutResizer(ClientSideKeyName.MessageListSize);
|
|
});
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @returns {Array}
|
|
*/
|
|
routes() {
|
|
const
|
|
inboxFolderName = getFolderInboxName(),
|
|
fNormS = (request, vals) => {
|
|
vals[0] = pString(vals[0]);
|
|
vals[1] = pInt(vals[1]);
|
|
vals[1] = 0 >= vals[1] ? 1 : vals[1];
|
|
vals[2] = pString(vals[2]);
|
|
|
|
if ('' === request)
|
|
{
|
|
vals[0] = inboxFolderName;
|
|
vals[1] = 1;
|
|
}
|
|
|
|
return [decodeURI(vals[0]), vals[1], decodeURI(vals[2])];
|
|
},
|
|
fNormD = (request, vals) => {
|
|
vals[0] = pString(vals[0]);
|
|
vals[1] = pString(vals[1]);
|
|
|
|
if ('' === request)
|
|
{
|
|
vals[0] = inboxFolderName;
|
|
}
|
|
|
|
return [decodeURI(vals[0]), 1, decodeURI(vals[1])];
|
|
};
|
|
|
|
return [
|
|
[/^([a-zA-Z0-9~]+)\/p([1-9][0-9]*)\/(.+)\/?$/, {'normalize_': fNormS}],
|
|
[/^([a-zA-Z0-9~]+)\/p([1-9][0-9]*)$/, {'normalize_': fNormS}],
|
|
[/^([a-zA-Z0-9~]+)\/(.+)\/?$/, {'normalize_': fNormD}],
|
|
[/^([^\/]*)$/, {'normalize_': fNormS}]
|
|
];
|
|
}
|
|
}
|
|
|
|
export {MailBoxUserScreen, MailBoxUserScreen as default};
|