mirror of
https://github.com/the-djmaze/snappymail.git
synced 2025-03-04 10:43:10 +08:00
Cleanup AppUserStore
Simplify KeyState/Focused as Scope enum
This commit is contained in:
parent
62cb918180
commit
eff92c3152
27 changed files with 177 additions and 232 deletions
|
@ -6,7 +6,7 @@ import { isPosNumeric, delegateRunOnDestroy, mailToHelper } from 'Common/UtilsUs
|
|||
import {
|
||||
Capa,
|
||||
Notification,
|
||||
KeyState
|
||||
Scope
|
||||
} from 'Common/Enums';
|
||||
|
||||
import {
|
||||
|
@ -133,7 +133,7 @@ class AppUser extends AbstractApp {
|
|||
t => doc.addEventListener(t, SettingsUserStore.delayLogout, {passive:true})
|
||||
);
|
||||
|
||||
shortcuts.add('escape,enter', '', KeyState.All, () => rl.Dropdowns.detectVisibility());
|
||||
shortcuts.add('escape,enter', '', Scope.All, () => rl.Dropdowns.detectVisibility());
|
||||
}
|
||||
|
||||
reload() {
|
||||
|
|
|
@ -32,21 +32,21 @@ export const Capa = {
|
|||
/**
|
||||
* @enum {string}
|
||||
*/
|
||||
export const KeyState = {
|
||||
export const Scope = {
|
||||
All: 'all',
|
||||
None: 'none',
|
||||
ContactList: 'contact-list',
|
||||
MessageList: 'message-list',
|
||||
FolderList: 'folder-list',
|
||||
MessageView: 'message-view',
|
||||
Compose: 'compose',
|
||||
Settings: 'settings',
|
||||
Menu: 'menu',
|
||||
PopupComposeOpenPGP: 'compose-open-pgp',
|
||||
PopupMessageOpenPGP: 'message-open-pgp',
|
||||
PopupViewOpenPGP: 'view-open-pgp',
|
||||
PopupKeyboardShortcutsHelp: 'popup-keyboard-shortcuts-help',
|
||||
PopupAsk: 'popup-ask'
|
||||
Contacts: 'Contacts',
|
||||
MessageList: 'MessageList',
|
||||
FolderList: 'FolderList',
|
||||
MessageView: 'MessageView',
|
||||
Compose: 'Compose',
|
||||
Settings: 'Settings',
|
||||
Menu: 'Menu',
|
||||
ComposeOpenPgp: 'ComposeOpenPgp',
|
||||
MessageOpenPgp: 'MessageOpenPgp',
|
||||
ViewOpenPgpKey: 'ViewOpenPgpKey',
|
||||
KeyboardShortcutsHelp: 'KeyboardShortcutsHelp',
|
||||
Ask: 'Ask'
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,15 +1,5 @@
|
|||
/* eslint quote-props: 0 */
|
||||
|
||||
/**
|
||||
* @enum {string}
|
||||
*/
|
||||
export const Focused = {
|
||||
None: 'none',
|
||||
MessageList: 'message-list',
|
||||
MessageView: 'message-view',
|
||||
FolderList: 'folder-list'
|
||||
};
|
||||
|
||||
/**
|
||||
* @enum {number}
|
||||
*/
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import ko from 'ko';
|
||||
import { KeyState } from 'Common/Enums';
|
||||
import { Scope } from 'Common/Enums';
|
||||
|
||||
export const doc = document;
|
||||
|
||||
|
@ -29,24 +29,24 @@ leftPanelDisabled.subscribe(value => {
|
|||
moveAction.subscribe(value => value && leftPanelDisabled() && leftPanelDisabled(false));
|
||||
|
||||
// keys
|
||||
export const keyScopeReal = ko.observable(KeyState.All);
|
||||
export const keyScopeReal = ko.observable(Scope.All);
|
||||
|
||||
export const keyScope = (()=>{
|
||||
let keyScopeFake = KeyState.All;
|
||||
let keyScopeFake = Scope.All;
|
||||
dropdownVisibility.subscribe(value => {
|
||||
if (value) {
|
||||
keyScope(KeyState.Menu);
|
||||
} else if (KeyState.Menu === shortcuts.getScope()) {
|
||||
keyScope(Scope.Menu);
|
||||
} else if (Scope.Menu === shortcuts.getScope()) {
|
||||
keyScope(keyScopeFake);
|
||||
}
|
||||
});
|
||||
return ko.computed({
|
||||
read: () => keyScopeFake,
|
||||
write: value => {
|
||||
if (KeyState.Menu !== value) {
|
||||
if (Scope.Menu !== value) {
|
||||
keyScopeFake = value;
|
||||
if (dropdownVisibility()) {
|
||||
value = KeyState.Menu;
|
||||
value = Scope.Menu;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,41 +1,41 @@
|
|||
import ko from 'ko';
|
||||
|
||||
import { inFocus, addObservablesTo, addComputablesTo, addSubscribablesTo } from 'Common/Utils';
|
||||
import { KeyState } from 'Common/Enums';
|
||||
import { Scope } from 'Common/Enums';
|
||||
import { keyScope } from 'Common/Globals';
|
||||
import { ViewType } from 'Knoin/Knoin';
|
||||
|
||||
class AbstractView {
|
||||
bDisabeCloseOnEsc = false;
|
||||
sDefaultKeyScope = KeyState.None;
|
||||
sCurrentKeyScope = KeyState.None;
|
||||
|
||||
viewModelVisible = false;
|
||||
modalVisibility = ko.observable(false).extend({ rateLimit: 0 });
|
||||
|
||||
viewModelName = '';
|
||||
viewModelDom = null;
|
||||
|
||||
constructor(name, templateID, type)
|
||||
{
|
||||
this.viewModelName = 'View/' + name;
|
||||
this.viewModelTemplateID = templateID;
|
||||
this.viewModelPosition = type;
|
||||
|
||||
this.bDisabeCloseOnEsc = false;
|
||||
this.sDefaultScope = Scope.None;
|
||||
this.sCurrentScope = Scope.None;
|
||||
|
||||
this.viewModelVisible = false;
|
||||
this.modalVisibility = ko.observable(false).extend({ rateLimit: 0 });
|
||||
|
||||
this.viewModelName = '';
|
||||
this.viewModelDom = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {void}
|
||||
*/
|
||||
storeAndSetKeyScope() {
|
||||
this.sCurrentKeyScope = keyScope();
|
||||
keyScope(this.sDefaultKeyScope);
|
||||
storeAndSetScope() {
|
||||
this.sCurrentScope = keyScope();
|
||||
keyScope(this.sDefaultScope);
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {void}
|
||||
*/
|
||||
restoreKeyScope() {
|
||||
keyScope(this.sCurrentKeyScope);
|
||||
restoreScope() {
|
||||
keyScope(this.sCurrentScope);
|
||||
}
|
||||
|
||||
cancelCommand() {}
|
||||
|
@ -64,6 +64,9 @@ export class AbstractViewPopup extends AbstractView
|
|||
constructor(name)
|
||||
{
|
||||
super('Popup/' + name, 'Popups' + name, ViewType.Popup);
|
||||
if (name in Scope) {
|
||||
this.sDefaultScope = Scope[name];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -111,7 +111,7 @@ function buildViewModel(ViewModelClass, vmScreen) {
|
|||
if (value) {
|
||||
vmDom.style.zIndex = 3000 + popupVisibilityNames.length + 10;
|
||||
vmDom.hidden = false;
|
||||
vm.storeAndSetKeyScope();
|
||||
vm.storeAndSetScope();
|
||||
popupVisibilityNames.push(vm.viewModelName);
|
||||
requestAnimationFrame(() => { // wait just before the next paint
|
||||
vmDom.offsetHeight; // force a reflow
|
||||
|
@ -120,7 +120,7 @@ function buildViewModel(ViewModelClass, vmScreen) {
|
|||
} else {
|
||||
vm.onHide && vm.onHide();
|
||||
vmDom.classList.remove('show');
|
||||
vm.restoreKeyScope();
|
||||
vm.restoreScope();
|
||||
popupVisibilityNames = popupVisibilityNames.filter(v=>v!==vm.viewModelName);
|
||||
}
|
||||
vmDom.setAttribute('aria-hidden', !value);
|
||||
|
|
|
@ -322,7 +322,7 @@ class RemoteUserFetch extends AbstractFetchRemote {
|
|||
iOffset,
|
||||
iLimit,
|
||||
sSearch,
|
||||
AppUserStore.projectHash(),
|
||||
SettingsGet('ProjectHash'),
|
||||
folderHash,
|
||||
inboxUidNext,
|
||||
useThreads ? 1 : 0,
|
||||
|
@ -387,7 +387,7 @@ class RemoteUserFetch extends AbstractFetchRemote {
|
|||
urlsafeArray([
|
||||
sFolderFullNameRaw,
|
||||
iUid,
|
||||
AppUserStore.projectHash(),
|
||||
SettingsGet('ProjectHash'),
|
||||
AppUserStore.threadsAllowed() && SettingsUserStore.useThreads() ? 1 : 0
|
||||
]),
|
||||
['Message']
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { Focused } from 'Common/EnumsUser';
|
||||
import { Scope } from 'Common/Enums';
|
||||
import { doc, leftPanelDisabled, moveAction, Settings } from 'Common/Globals';
|
||||
import { pString, pInt } from 'Common/Utils';
|
||||
import { getFolderFromCacheList, getFolderFullNameRaw, getFolderInboxName } from 'Common/Cache';
|
||||
|
@ -53,8 +53,8 @@ export class MailBoxUserScreen extends AbstractScreen {
|
|||
onShow() {
|
||||
this.updateWindowTitle();
|
||||
|
||||
AppUserStore.focusedState(Focused.None);
|
||||
AppUserStore.focusedState(Focused.MessageList);
|
||||
AppUserStore.focusedState(Scope.None);
|
||||
AppUserStore.focusedState(Scope.MessageList);
|
||||
|
||||
ThemeStore.isMobile() && leftPanelDisabled(true);
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { Capa, KeyState } from 'Common/Enums';
|
||||
import { Capa, Scope } from 'Common/Enums';
|
||||
import { keyScope, leftPanelDisabled, Settings } from 'Common/Globals';
|
||||
import { runSettingsViewModelHooks } from 'Common/Plugins';
|
||||
import { initOnStartOrLangChange, i18n } from 'Common/Translator';
|
||||
|
@ -96,7 +96,7 @@ export class SettingsUserScreen extends AbstractSettingsScreen {
|
|||
|
||||
onShow() {
|
||||
this.setSettingsTitle();
|
||||
keyScope(KeyState.Settings);
|
||||
keyScope(Scope.Settings);
|
||||
ThemeStore.isMobile() && leftPanelDisabled(true);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
import ko from 'ko';
|
||||
|
||||
import { AppUserStore } from 'Stores/User/App';
|
||||
import { SettingsGet } from 'Common/Globals';
|
||||
import { ContactUserStore } from 'Stores/User/Contact';
|
||||
import Remote from 'Remote/User/Fetch';
|
||||
|
||||
export class ContactsUserSettings {
|
||||
constructor() {
|
||||
this.contactsAutosave = AppUserStore.contactsAutosave;
|
||||
this.contactsAutosave = ko.observable(!!SettingsGet('ContactsAutosave'));
|
||||
|
||||
this.allowContactsSync = ContactUserStore.allowSync;
|
||||
this.enableContactsSync = ContactUserStore.enableSync;
|
||||
|
|
|
@ -1,63 +1,33 @@
|
|||
import ko from 'ko';
|
||||
import { KeyState } from 'Common/Enums';
|
||||
import { Focused } from 'Common/EnumsUser';
|
||||
import { keyScope, leftPanelDisabled, Settings, SettingsGet } from 'Common/Globals';
|
||||
import { Scope } from 'Common/Enums';
|
||||
import { keyScope, leftPanelDisabled, SettingsGet } from 'Common/Globals';
|
||||
import { addObservablesTo } from 'Common/Utils';
|
||||
import { ThemeStore } from 'Stores/Theme';
|
||||
|
||||
export const AppUserStore = {
|
||||
attachmentsActions: ko.observableArray(),
|
||||
|
||||
devEmail: '',
|
||||
devPassword: '',
|
||||
|
||||
populate: () => {
|
||||
AppUserStore.projectHash(SettingsGet('ProjectHash'));
|
||||
|
||||
AppUserStore.contactsAutosave(!!SettingsGet('ContactsAutosave'));
|
||||
AppUserStore.useLocalProxyForExternalImages(!!SettingsGet('UseLocalProxyForExternalImages'));
|
||||
|
||||
AppUserStore.contactsIsAllowed(!!SettingsGet('ContactsIsAllowed'));
|
||||
|
||||
const attachmentsActions = Settings.app('attachmentsActions');
|
||||
AppUserStore.attachmentsActions(Array.isNotEmpty(attachmentsActions) ? attachmentsActions : []);
|
||||
|
||||
AppUserStore.devEmail = SettingsGet('DevEmail');
|
||||
AppUserStore.devPassword = SettingsGet('DevPassword');
|
||||
}
|
||||
};
|
||||
|
||||
addObservablesTo(AppUserStore, {
|
||||
currentAudio: '',
|
||||
|
||||
focusedState: Focused.None,
|
||||
focusedState: Scope.None,
|
||||
|
||||
projectHash: '',
|
||||
threadsAllowed: false,
|
||||
|
||||
composeInEdit: false,
|
||||
|
||||
contactsAutosave: false,
|
||||
useLocalProxyForExternalImages: false,
|
||||
|
||||
contactsIsAllowed: false
|
||||
});
|
||||
|
||||
AppUserStore.focusedState.subscribe(value => {
|
||||
switch (value) {
|
||||
case Focused.MessageList:
|
||||
keyScope(KeyState.MessageList);
|
||||
ThemeStore.isMobile() && leftPanelDisabled(true);
|
||||
break;
|
||||
case Focused.MessageView:
|
||||
keyScope(KeyState.MessageView);
|
||||
ThemeStore.isMobile() && leftPanelDisabled(true);
|
||||
break;
|
||||
case Focused.FolderList:
|
||||
keyScope(KeyState.FolderList);
|
||||
ThemeStore.isMobile() && leftPanelDisabled(false);
|
||||
break;
|
||||
default:
|
||||
case Scope.MessageList:
|
||||
case Scope.MessageView:
|
||||
case Scope.FolderList:
|
||||
keyScope(value);
|
||||
ThemeStore.isMobile() && leftPanelDisabled(Scope.FolderList !== value);
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import ko from 'ko';
|
||||
|
||||
import { Notification } from 'Common/Enums';
|
||||
import { Focused, MessageSetAction } from 'Common/EnumsUser';
|
||||
import { Scope, Notification } from 'Common/Enums';
|
||||
import { MessageSetAction } from 'Common/EnumsUser';
|
||||
import { doc, elementById } from 'Common/Globals';
|
||||
import { pInt, pString, addObservablesTo, addSubscribablesTo } from 'Common/Utils';
|
||||
import { plainToHtml } from 'Common/UtilsUser';
|
||||
|
@ -202,10 +202,10 @@ export const MessageUserStore = new class {
|
|||
message: message => {
|
||||
if (message) {
|
||||
if (!SettingsUserStore.usePreviewPane()) {
|
||||
AppUserStore.focusedState(Focused.MessageView);
|
||||
AppUserStore.focusedState(Scope.MessageView);
|
||||
}
|
||||
} else {
|
||||
AppUserStore.focusedState(Focused.MessageList);
|
||||
AppUserStore.focusedState(Scope.MessageList);
|
||||
|
||||
this.messageFullScreenMode(false);
|
||||
this.hideMessageBodies();
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { KeyState } from 'Common/Enums';
|
||||
import { Scope } from 'Common/Enums';
|
||||
|
||||
import { settingsMenuKeysHandler } from 'Knoin/Knoin';
|
||||
import { AbstractViewLeft } from 'Knoin/AbstractViews';
|
||||
|
@ -18,7 +18,7 @@ class MenuSettingsAdminView extends AbstractViewLeft {
|
|||
}
|
||||
|
||||
onBuild(dom) {
|
||||
shortcuts.add('arrowup,arrowdown', '', KeyState.Settings,
|
||||
shortcuts.add('arrowup,arrowdown', '', Scope.Settings,
|
||||
settingsMenuKeysHandler(dom.querySelectorAll('.b-admin-menu .e-item')));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { KeyState } from 'Common/Enums';
|
||||
import { Scope } from 'Common/Enums';
|
||||
import { i18n } from 'Common/Translator';
|
||||
|
||||
import { AbstractViewPopup } from 'Knoin/AbstractViews';
|
||||
|
@ -18,7 +18,6 @@ class AskPopupView extends AbstractViewPopup {
|
|||
|
||||
this.bFocusYesOnShow = true;
|
||||
this.bDisabeCloseOnEsc = true;
|
||||
this.sDefaultKeyScope = KeyState.PopupAsk;
|
||||
}
|
||||
|
||||
clearPopup() {
|
||||
|
@ -81,8 +80,8 @@ class AskPopupView extends AbstractViewPopup {
|
|||
}
|
||||
|
||||
onBuild() {
|
||||
// shortcuts.add('tab', 'shift', KeyState.PopupAsk, () => {
|
||||
shortcuts.add('tab,arrowright,arrowleft', '', KeyState.PopupAsk, () => {
|
||||
// shortcuts.add('tab', 'shift', Scope.Ask, () => {
|
||||
shortcuts.add('tab,arrowright,arrowleft', '', Scope.Ask, () => {
|
||||
let btn = this.querySelector('.buttonYes');
|
||||
if (btn.matches(':focus')) {
|
||||
btn = this.querySelector('.buttonNo');
|
||||
|
@ -91,7 +90,7 @@ class AskPopupView extends AbstractViewPopup {
|
|||
return false;
|
||||
});
|
||||
|
||||
shortcuts.add('escape', '', KeyState.PopupAsk, () => {
|
||||
shortcuts.add('escape', '', Scope.Ask, () => {
|
||||
this.noClick();
|
||||
return false;
|
||||
});
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import ko from 'ko';
|
||||
|
||||
import {
|
||||
KeyState,
|
||||
Scope,
|
||||
Notification,
|
||||
UploadErrorCode
|
||||
} from 'Common/Enums';
|
||||
|
@ -125,10 +125,9 @@ class ComposePopupView extends AbstractViewPopup {
|
|||
|
||||
this.sLastFocusedField = 'to';
|
||||
|
||||
this.allowContacts = !!AppUserStore.contactsIsAllowed();
|
||||
this.allowContacts = AppUserStore.contactsIsAllowed();
|
||||
|
||||
this.bSkipNextHide = false;
|
||||
this.composeInEdit = AppUserStore.composeInEdit;
|
||||
this.editorDefaultType = SettingsUserStore.editorDefaultType;
|
||||
|
||||
this.capaOpenPGP = PgpUserStore.capaOpenPGP;
|
||||
|
@ -218,7 +217,6 @@ class ComposePopupView extends AbstractViewPopup {
|
|||
});
|
||||
|
||||
this.bDisabeCloseOnEsc = true;
|
||||
this.sDefaultKeyScope = KeyState.Compose;
|
||||
|
||||
this.tryToClosePopup = this.tryToClosePopup.debounce(200);
|
||||
|
||||
|
@ -1133,42 +1131,42 @@ class ComposePopupView extends AbstractViewPopup {
|
|||
onBuild(dom) {
|
||||
this.initUploader();
|
||||
|
||||
shortcuts.add('q', 'meta', KeyState.Compose, ()=>false);
|
||||
shortcuts.add('w', 'meta', KeyState.Compose, ()=>false);
|
||||
shortcuts.add('q', 'meta', Scope.Compose, ()=>false);
|
||||
shortcuts.add('w', 'meta', Scope.Compose, ()=>false);
|
||||
|
||||
shortcuts.add('m,contextmenu', '', KeyState.Compose, e => this.popupMenu(e));
|
||||
shortcuts.add('m', 'ctrl', KeyState.Compose, e => this.popupMenu(e));
|
||||
shortcuts.add('m,contextmenu', '', Scope.Compose, e => this.popupMenu(e));
|
||||
shortcuts.add('m', 'ctrl', Scope.Compose, e => this.popupMenu(e));
|
||||
|
||||
shortcuts.add('escape,close', '', KeyState.Compose, () => {
|
||||
shortcuts.add('escape,close', '', Scope.Compose, () => {
|
||||
this.skipCommand();
|
||||
return false;
|
||||
});
|
||||
shortcuts.add('arrowdown', 'meta', KeyState.Compose, () => {
|
||||
shortcuts.add('arrowdown', 'meta', Scope.Compose, () => {
|
||||
this.skipCommand();
|
||||
return false;
|
||||
});
|
||||
|
||||
shortcuts.add('s', 'meta', KeyState.Compose, () => {
|
||||
shortcuts.add('s', 'meta', Scope.Compose, () => {
|
||||
this.saveCommand();
|
||||
return false;
|
||||
});
|
||||
shortcuts.add('save', KeyState.Compose, () => {
|
||||
shortcuts.add('save', Scope.Compose, () => {
|
||||
this.saveCommand();
|
||||
return false;
|
||||
});
|
||||
|
||||
if (Settings.app('allowCtrlEnterOnCompose')) {
|
||||
shortcuts.add('enter', 'meta', KeyState.Compose, () => {
|
||||
shortcuts.add('enter', 'meta', Scope.Compose, () => {
|
||||
this.sendCommand();
|
||||
return false;
|
||||
});
|
||||
}
|
||||
shortcuts.add('mailsend', '', KeyState.Compose, () => {
|
||||
shortcuts.add('mailsend', '', Scope.Compose, () => {
|
||||
this.sendCommand();
|
||||
return false;
|
||||
});
|
||||
|
||||
shortcuts.add('escape,close', 'shift', KeyState.Compose, () => {
|
||||
shortcuts.add('escape,close', 'shift', Scope.Compose, () => {
|
||||
this.modalVisibility() && this.tryToClosePopup();
|
||||
return false;
|
||||
});
|
||||
|
|
|
@ -2,7 +2,7 @@ import ko from 'ko';
|
|||
|
||||
import { pString, defaultOptionsAfterRender } from 'Common/Utils';
|
||||
|
||||
import { KeyState } from 'Common/Enums';
|
||||
import { Scope } from 'Common/Enums';
|
||||
import { i18n } from 'Common/Translator';
|
||||
|
||||
import { PgpUserStore } from 'Stores/User/Pgp';
|
||||
|
@ -88,8 +88,6 @@ class ComposeOpenPgpPopupView extends AbstractViewPopup {
|
|||
}
|
||||
});
|
||||
|
||||
this.sDefaultKeyScope = KeyState.PopupComposeOpenPGP;
|
||||
|
||||
this.defaultOptionsAfterRender = defaultOptionsAfterRender;
|
||||
|
||||
this.deletePublickKey = this.deletePublickKey.bind(this);
|
||||
|
@ -290,8 +288,8 @@ class ComposeOpenPgpPopupView extends AbstractViewPopup {
|
|||
}
|
||||
|
||||
onBuild() {
|
||||
// shortcuts.add('tab', 'shift', KeyState.PopupComposeOpenPGP, () => {
|
||||
shortcuts.add('tab', '', KeyState.PopupComposeOpenPGP, () => {
|
||||
// shortcuts.add('tab', 'shift', Scope.ComposeOpenPgp, () => {
|
||||
shortcuts.add('tab', '', Scope.ComposeOpenPgp, () => {
|
||||
let btn = this.querySelector('.inputPassword');
|
||||
if (btn.matches(':focus')) {
|
||||
btn = this.querySelector('.buttonDo');
|
||||
|
|
|
@ -3,7 +3,7 @@ import ko from 'ko';
|
|||
import {
|
||||
SaveSettingsStep,
|
||||
Notification,
|
||||
KeyState
|
||||
Scope
|
||||
} from 'Common/Enums';
|
||||
|
||||
import { ComposeType } from 'Common/EnumsUser';
|
||||
|
@ -94,8 +94,6 @@ class ContactsPopupView extends AbstractViewPopup {
|
|||
|
||||
// this.saveCommandDebounce = _.debounce(this.saveCommand.bind(this), 1000);
|
||||
|
||||
this.sDefaultKeyScope = KeyState.ContactList;
|
||||
|
||||
const
|
||||
// propertyFocused = property => !property.isValid() && !property.focused(),
|
||||
pagecount = () => Math.max(1, Math.ceil(this.contactsCount() / CONTACTS_PER_PAGE));
|
||||
|
@ -490,14 +488,14 @@ class ContactsPopupView extends AbstractViewPopup {
|
|||
}
|
||||
|
||||
onBuild(dom) {
|
||||
this.selector.init(dom.querySelector('.b-list-content'), KeyState.ContactList);
|
||||
this.selector.init(dom.querySelector('.b-list-content'), Scope.Contacts);
|
||||
|
||||
shortcuts.add('delete', '', KeyState.ContactList, () => {
|
||||
shortcuts.add('delete', '', Scope.Contacts, () => {
|
||||
this.deleteCommand();
|
||||
return false;
|
||||
});
|
||||
|
||||
shortcuts.add('c,w', '', KeyState.ContactList, () => {
|
||||
shortcuts.add('c,w', '', Scope.Contacts, () => {
|
||||
this.newMessageCommand();
|
||||
return false;
|
||||
});
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
import { KeyState } from 'Common/Enums';
|
||||
import { Scope } from 'Common/Enums';
|
||||
|
||||
import { AbstractViewPopup } from 'Knoin/AbstractViews';
|
||||
|
||||
class KeyboardShortcutsHelpPopupView extends AbstractViewPopup {
|
||||
constructor() {
|
||||
super('KeyboardShortcutsHelp');
|
||||
this.sDefaultKeyScope = KeyState.PopupKeyboardShortcutsHelp;
|
||||
}
|
||||
|
||||
onBuild(dom) {
|
||||
|
@ -13,7 +12,7 @@ class KeyboardShortcutsHelpPopupView extends AbstractViewPopup {
|
|||
|
||||
// shortcuts.add('tab', 'shift',
|
||||
shortcuts.add('tab,arrowleft,arrowright', '',
|
||||
KeyState.PopupKeyboardShortcutsHelp,
|
||||
Scope.KeyboardShortcutsHelp,
|
||||
((event, handler)=>{
|
||||
if (event && handler) {
|
||||
const tabs = dom.querySelectorAll('.nav.nav-tabs > li'),
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import ko from 'ko';
|
||||
|
||||
import { pString } from 'Common/Utils';
|
||||
import { KeyState } from 'Common/Enums';
|
||||
import { Scope } from 'Common/Enums';
|
||||
|
||||
import { decorateKoCommands } from 'Knoin/Knoin';
|
||||
import { AbstractViewPopup } from 'Knoin/AbstractViews';
|
||||
|
@ -20,8 +20,6 @@ class MessageOpenPgpPopupView extends AbstractViewPopup {
|
|||
|
||||
this.resultCallback = null;
|
||||
|
||||
this.sDefaultKeyScope = KeyState.PopupMessageOpenPGP;
|
||||
|
||||
decorateKoCommands(this, {
|
||||
doCommand: self => !self.submitRequest()
|
||||
});
|
||||
|
@ -77,8 +75,8 @@ class MessageOpenPgpPopupView extends AbstractViewPopup {
|
|||
}
|
||||
|
||||
onBuild(oDom) {
|
||||
// shortcuts.add('tab', 'shift', KeyState.PopupMessageOpenPGP, () => {
|
||||
shortcuts.add('tab', '', KeyState.PopupMessageOpenPGP, () => {
|
||||
// shortcuts.add('tab', 'shift', Scope.MessageOpenPgp, () => {
|
||||
shortcuts.add('tab', '', Scope.MessageOpenPgp, () => {
|
||||
let btn = this.querySelector('.inputPassword');
|
||||
if (btn.matches(':focus')) {
|
||||
btn = this.querySelector('.buttonDo');
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import ko from 'ko';
|
||||
|
||||
import { KeyState, Notification } from 'Common/Enums';
|
||||
import { Scope, Notification } from 'Common/Enums';
|
||||
import { getNotification, i18n } from 'Common/Translator';
|
||||
|
||||
import Remote from 'Remote/Admin/Fetch';
|
||||
|
@ -27,7 +27,7 @@ class PluginPopupView extends AbstractViewPopup {
|
|||
this.hasConfiguration = ko.computed(() => 0 < this.configures().length);
|
||||
|
||||
this.bDisabeCloseOnEsc = true;
|
||||
this.sDefaultKeyScope = KeyState.All;
|
||||
this.sDefaultScope = Scope.All;
|
||||
|
||||
this.tryToClosePopup = this.tryToClosePopup.debounce(200);
|
||||
|
||||
|
@ -101,7 +101,7 @@ class PluginPopupView extends AbstractViewPopup {
|
|||
}
|
||||
|
||||
onBuild() {
|
||||
shortcuts.add('escape', '', KeyState.All, () => {
|
||||
shortcuts.add('escape', '', Scope.All, () => {
|
||||
if (this.modalVisibility()) {
|
||||
this.tryToClosePopup();
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { KeyState } from 'Common/Enums';
|
||||
import { Scope } from 'Common/Enums';
|
||||
import { doc } from 'Common/Globals';
|
||||
import { AbstractViewPopup } from 'Knoin/AbstractViews';
|
||||
|
||||
|
@ -10,8 +10,6 @@ class ViewOpenPgpKeyPopupView extends AbstractViewPopup {
|
|||
key: '',
|
||||
keyDom: null
|
||||
});
|
||||
|
||||
this.sDefaultKeyScope = KeyState.PopupViewOpenPGP;
|
||||
}
|
||||
|
||||
clearPopup() {
|
||||
|
@ -38,7 +36,7 @@ class ViewOpenPgpKeyPopupView extends AbstractViewPopup {
|
|||
}
|
||||
|
||||
onBuild() {
|
||||
shortcuts.add('a', 'meta', KeyState.PopupViewOpenPGP, () => {
|
||||
shortcuts.add('a', 'meta', Scope.ViewOpenPgpKey, () => {
|
||||
this.selectKey();
|
||||
return false;
|
||||
});
|
||||
|
|
|
@ -2,7 +2,7 @@ import { AppUserStore } from 'Stores/User/App';
|
|||
import { AccountUserStore } from 'Stores/User/Account';
|
||||
import { MessageUserStore } from 'Stores/User/Message';
|
||||
|
||||
import { Capa, KeyState } from 'Common/Enums';
|
||||
import { Capa, Scope } from 'Common/Enums';
|
||||
import { settings } from 'Common/Links';
|
||||
|
||||
import { showScreenPopup } from 'Knoin/Knoin';
|
||||
|
@ -36,7 +36,7 @@ export class AbstractSystemDropDownUserView extends AbstractViewRight {
|
|||
capaAdditionalAccounts: Settings.capa(Capa.AdditionalAccounts)
|
||||
});
|
||||
|
||||
this.allowContacts = !!AppUserStore.contactsIsAllowed();
|
||||
this.allowContacts = AppUserStore.contactsIsAllowed();
|
||||
|
||||
this.addAccountClick = this.addAccountClick.bind(this);
|
||||
|
||||
|
@ -106,7 +106,7 @@ export class AbstractSystemDropDownUserView extends AbstractViewRight {
|
|||
}
|
||||
|
||||
onBuild() {
|
||||
shortcuts.add('m,contextmenu', '', [KeyState.MessageList, KeyState.MessageView, KeyState.Settings], () => {
|
||||
shortcuts.add('m,contextmenu', '', [Scope.MessageList, Scope.MessageView, Scope.Settings], () => {
|
||||
if (this.viewModelVisible) {
|
||||
MessageUserStore.messageFullScreenMode(false);
|
||||
this.accountMenuDropdownTrigger(true);
|
||||
|
@ -115,7 +115,7 @@ export class AbstractSystemDropDownUserView extends AbstractViewRight {
|
|||
});
|
||||
|
||||
// shortcuts help
|
||||
shortcuts.add('?,f1,help', '', [KeyState.MessageList, KeyState.MessageView, KeyState.Settings], () => {
|
||||
shortcuts.add('?,f1,help', '', [Scope.MessageList, Scope.MessageView, Scope.Settings], () => {
|
||||
if (this.viewModelVisible) {
|
||||
showScreenPopup(KeyboardShortcutsHelpPopupView);
|
||||
return false;
|
||||
|
|
|
@ -8,7 +8,6 @@ import { ClientSideKeyName } from 'Common/EnumsUser';
|
|||
|
||||
import { getNotification, getNotificationFromResponse, reload as translatorReload, convertLangName } from 'Common/Translator';
|
||||
|
||||
import { AppUserStore } from 'Stores/User/App';
|
||||
import { LanguageStore } from 'Stores/Language';
|
||||
|
||||
import * as Local from 'Storage/Client';
|
||||
|
@ -45,8 +44,8 @@ class LoginUserView extends AbstractViewCenter {
|
|||
this.addObservables({
|
||||
loadingDesc: SettingsGet('LoadingDescription'),
|
||||
|
||||
email: '',
|
||||
password: '',
|
||||
email: SettingsGet('DevEmail'),
|
||||
password: SettingsGet('DevPassword'),
|
||||
signMe: false,
|
||||
additionalCode: '',
|
||||
|
||||
|
@ -232,9 +231,6 @@ class LoginUserView extends AbstractViewCenter {
|
|||
break;
|
||||
}
|
||||
|
||||
this.email(AppUserStore.devEmail);
|
||||
this.password(AppUserStore.devPassword);
|
||||
|
||||
setTimeout(() => {
|
||||
LanguageStore.language.subscribe((value) => {
|
||||
this.langRequest(true);
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
import ko from 'ko';
|
||||
|
||||
import { Capa, KeyState } from 'Common/Enums';
|
||||
import { Focused } from 'Common/EnumsUser';
|
||||
import { Capa, Scope } from 'Common/Enums';
|
||||
import { leftPanelDisabled, moveAction, Settings } from 'Common/Globals';
|
||||
import { mailBox, settings } from 'Common/Links';
|
||||
import { setFolderHash } from 'Common/Cache';
|
||||
|
@ -39,9 +38,9 @@ export class FolderListMailBoxUserView extends AbstractViewLeft {
|
|||
this.leftPanelDisabled = leftPanelDisabled;
|
||||
|
||||
this.allowComposer = Settings.capa(Capa.Composer);
|
||||
this.allowContacts = !!AppUserStore.contactsIsAllowed();
|
||||
this.allowContacts = AppUserStore.contactsIsAllowed();
|
||||
|
||||
this.folderListFocused = ko.computed(() => Focused.FolderList === AppUserStore.focusedState());
|
||||
this.folderListFocused = ko.computed(() => Scope.FolderList === AppUserStore.focusedState());
|
||||
|
||||
this.isInboxStarred = ko.computed(
|
||||
() =>
|
||||
|
@ -89,7 +88,7 @@ export class FolderListMailBoxUserView extends AbstractViewLeft {
|
|||
);
|
||||
}
|
||||
|
||||
AppUserStore.focusedState(Focused.MessageList);
|
||||
AppUserStore.focusedState(Scope.MessageList);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -117,7 +116,7 @@ export class FolderListMailBoxUserView extends AbstractViewLeft {
|
|||
el && fSelectFolder(el, event, false);
|
||||
});
|
||||
|
||||
shortcuts.add('arrowup,arrowdown', '', KeyState.FolderList, event => {
|
||||
shortcuts.add('arrowup,arrowdown', '', Scope.FolderList, event => {
|
||||
let items = [], index = 0;
|
||||
dom.querySelectorAll('.b-folders .e-item .e-link:not(.hidden)').forEach(node => {
|
||||
if (node.offsetHeight || node.getClientRects().length) {
|
||||
|
@ -141,17 +140,17 @@ export class FolderListMailBoxUserView extends AbstractViewLeft {
|
|||
return false;
|
||||
});
|
||||
|
||||
shortcuts.add('enter,open', '', KeyState.FolderList, () => {
|
||||
shortcuts.add('enter,open', '', Scope.FolderList, () => {
|
||||
const item = qs('.b-folders .e-item .e-link:not(.hidden).focused');
|
||||
if (item) {
|
||||
AppUserStore.focusedState(Focused.MessageList);
|
||||
AppUserStore.focusedState(Scope.MessageList);
|
||||
item.click();
|
||||
}
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
shortcuts.add('space', '', KeyState.FolderList, () => {
|
||||
shortcuts.add('space', '', Scope.FolderList, () => {
|
||||
const item = qs('.b-folders .e-item .e-link:not(.hidden).focused'),
|
||||
folder = item && ko.dataFor(item);
|
||||
if (folder) {
|
||||
|
@ -163,9 +162,9 @@ export class FolderListMailBoxUserView extends AbstractViewLeft {
|
|||
return false;
|
||||
});
|
||||
|
||||
// shortcuts.add('tab', 'shift', KeyState.FolderList, () => {
|
||||
shortcuts.add('escape,tab,arrowright', '', KeyState.FolderList, () => {
|
||||
AppUserStore.focusedState(Focused.MessageList);
|
||||
// shortcuts.add('tab', 'shift', Scope.FolderList, () => {
|
||||
shortcuts.add('escape,tab,arrowright', '', Scope.FolderList, () => {
|
||||
AppUserStore.focusedState(Scope.MessageList);
|
||||
moveAction(false);
|
||||
return false;
|
||||
});
|
||||
|
@ -173,7 +172,7 @@ export class FolderListMailBoxUserView extends AbstractViewLeft {
|
|||
AppUserStore.focusedState.subscribe(value => {
|
||||
let el = qs('.b-folders .e-item .e-link.focused');
|
||||
el && qs('.b-folders .e-item .e-link.focused').classList.remove('focused');
|
||||
if (Focused.FolderList === value) {
|
||||
if (Scope.FolderList === value) {
|
||||
el = qs('.b-folders .e-item .e-link.selected');
|
||||
el && qs('.b-folders .e-item .e-link.selected').classList.add('focused');
|
||||
}
|
||||
|
|
|
@ -2,11 +2,10 @@ import ko from 'ko';
|
|||
|
||||
import {
|
||||
Capa,
|
||||
KeyState
|
||||
Scope
|
||||
} from 'Common/Enums';
|
||||
|
||||
import {
|
||||
Focused,
|
||||
ComposeType,
|
||||
FolderType,
|
||||
MessageSetAction
|
||||
|
@ -175,7 +174,7 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
|
|||
|
||||
mobileCheckedStateHide: () => ThemeStore.isMobile() ? !MessageUserStore.listChecked().length : true,
|
||||
|
||||
messageListFocused: () => Focused.MessageList === AppUserStore.focusedState()
|
||||
messageListFocused: () => Scope.MessageList === AppUserStore.focusedState()
|
||||
});
|
||||
|
||||
this.hasCheckedOrSelectedLines = MessageUserStore.hasCheckedOrSelected,
|
||||
|
@ -324,7 +323,7 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
|
|||
}
|
||||
|
||||
let b = moveAction();
|
||||
AppUserStore.focusedState(b ? Focused.MessageList : Focused.FolderList);
|
||||
AppUserStore.focusedState(b ? Scope.MessageList : Scope.FolderList);
|
||||
moveAction(!b);
|
||||
}
|
||||
}
|
||||
|
@ -666,13 +665,13 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
|
|||
onBuild(dom) {
|
||||
const eqs = (ev, s) => ev.target.closestWithin(s, dom);
|
||||
|
||||
this.selector.init(dom.querySelector('.b-content'), KeyState.MessageList);
|
||||
this.selector.init(dom.querySelector('.b-content'), Scope.MessageList);
|
||||
|
||||
dom.addEventListener('click', event => {
|
||||
ThemeStore.isMobile() && leftPanelDisabled(true);
|
||||
|
||||
if (eqs(event, '.messageList .b-message-list-wrapper') && Focused.MessageView === AppUserStore.focusedState()) {
|
||||
AppUserStore.focusedState(Focused.MessageList);
|
||||
if (eqs(event, '.messageList .b-message-list-wrapper') && Scope.MessageView === AppUserStore.focusedState()) {
|
||||
AppUserStore.focusedState(Scope.MessageList);
|
||||
}
|
||||
|
||||
let el = eqs(event, '.e-paginator .e-page');
|
||||
|
@ -701,7 +700,7 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
|
|||
}
|
||||
|
||||
initShortcuts() {
|
||||
shortcuts.add('enter,open', '', KeyState.MessageList, () => {
|
||||
shortcuts.add('enter,open', '', Scope.MessageList, () => {
|
||||
if (this.message() && this.useAutoSelect()) {
|
||||
dispatchEvent(new CustomEvent('mailbox.message-view.toggle-full-screen'));
|
||||
return false;
|
||||
|
@ -712,18 +711,18 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
|
|||
|
||||
if (Settings.capa(Capa.MessageListActions)) {
|
||||
// archive (zip)
|
||||
shortcuts.add('z', '', [KeyState.MessageList, KeyState.MessageView], () => {
|
||||
shortcuts.add('z', '', [Scope.MessageList, Scope.MessageView], () => {
|
||||
this.archiveCommand();
|
||||
return false;
|
||||
});
|
||||
|
||||
// delete
|
||||
shortcuts.add('delete', 'shift', KeyState.MessageList, () => {
|
||||
shortcuts.add('delete', 'shift', Scope.MessageList, () => {
|
||||
MessageUserStore.listCheckedOrSelected().length && this.deleteWithoutMoveCommand();
|
||||
return false;
|
||||
});
|
||||
// shortcuts.add('3', 'shift', KeyState.MessageList, () => {
|
||||
shortcuts.add('delete', '', KeyState.MessageList, () => {
|
||||
// shortcuts.add('3', 'shift', Scope.MessageList, () => {
|
||||
shortcuts.add('delete', '', Scope.MessageList, () => {
|
||||
MessageUserStore.listCheckedOrSelected().length && this.deleteCommand();
|
||||
return false;
|
||||
});
|
||||
|
@ -731,33 +730,33 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
|
|||
|
||||
if (Settings.capa(Capa.Reload)) {
|
||||
// check mail
|
||||
shortcuts.add('r', 'meta', [KeyState.FolderList, KeyState.MessageList, KeyState.MessageView], () => {
|
||||
shortcuts.add('r', 'meta', [Scope.FolderList, Scope.MessageList, Scope.MessageView], () => {
|
||||
this.reloadCommand();
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
// check all
|
||||
shortcuts.add('a', 'meta', KeyState.MessageList, () => {
|
||||
shortcuts.add('a', 'meta', Scope.MessageList, () => {
|
||||
this.checkAll(!(this.checkAll() && !this.isIncompleteChecked()));
|
||||
return false;
|
||||
});
|
||||
|
||||
// write/compose (open compose popup)
|
||||
shortcuts.add('w,c,new', '', [KeyState.MessageList, KeyState.MessageView], () => {
|
||||
shortcuts.add('w,c,new', '', [Scope.MessageList, Scope.MessageView], () => {
|
||||
showMessageComposer();
|
||||
return false;
|
||||
});
|
||||
|
||||
if (Settings.capa(Capa.MessageListActions)) {
|
||||
// important - star/flag messages
|
||||
shortcuts.add('i', '', [KeyState.MessageList, KeyState.MessageView], () => {
|
||||
shortcuts.add('i', '', [Scope.MessageList, Scope.MessageView], () => {
|
||||
this.flagMessagesFast();
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
shortcuts.add('t', '', [KeyState.MessageList], () => {
|
||||
shortcuts.add('t', '', [Scope.MessageList], () => {
|
||||
let message = this.selectorMessageSelected();
|
||||
if (!message) {
|
||||
message = this.selectorMessageFocused();
|
||||
|
@ -772,7 +771,7 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
|
|||
|
||||
if (Settings.capa(Capa.MessageListActions)) {
|
||||
// move
|
||||
shortcuts.add('insert', '', KeyState.MessageList, () => {
|
||||
shortcuts.add('insert', '', Scope.MessageList, () => {
|
||||
if (this.newMoveToFolder) {
|
||||
this.moveNewCommand();
|
||||
} else {
|
||||
|
@ -785,33 +784,33 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
|
|||
|
||||
if (Settings.capa(Capa.MessageListActions)) {
|
||||
// read
|
||||
shortcuts.add('q', '', [KeyState.MessageList, KeyState.MessageView], () => {
|
||||
shortcuts.add('q', '', [Scope.MessageList, Scope.MessageView], () => {
|
||||
this.seenMessagesFast(true);
|
||||
return false;
|
||||
});
|
||||
|
||||
// unread
|
||||
shortcuts.add('u', '', [KeyState.MessageList, KeyState.MessageView], () => {
|
||||
shortcuts.add('u', '', [Scope.MessageList, Scope.MessageView], () => {
|
||||
this.seenMessagesFast(false);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
shortcuts.add('f,mailforward', 'shift', [KeyState.MessageList, KeyState.MessageView], () => {
|
||||
shortcuts.add('f,mailforward', 'shift', [Scope.MessageList, Scope.MessageView], () => {
|
||||
this.multyForwardCommand();
|
||||
return false;
|
||||
});
|
||||
|
||||
if (Settings.capa(Capa.Search)) {
|
||||
// search input focus
|
||||
shortcuts.add('/', '', [KeyState.MessageList, KeyState.MessageView], () => {
|
||||
shortcuts.add('/', '', [Scope.MessageList, Scope.MessageView], () => {
|
||||
this.inputMessageListSearchFocus(true);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
// cancel search
|
||||
shortcuts.add('escape', '', KeyState.MessageList, () => {
|
||||
shortcuts.add('escape', '', Scope.MessageList, () => {
|
||||
if (this.messageListSearchDesc()) {
|
||||
this.cancelSearch();
|
||||
return false;
|
||||
|
@ -824,21 +823,21 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
|
|||
});
|
||||
|
||||
// change focused state
|
||||
shortcuts.add('tab', 'shift', KeyState.MessageList, () => {
|
||||
AppUserStore.focusedState(Focused.FolderList);
|
||||
shortcuts.add('tab', 'shift', Scope.MessageList, () => {
|
||||
AppUserStore.focusedState(Scope.FolderList);
|
||||
return false;
|
||||
});
|
||||
shortcuts.add('arrowleft', '', KeyState.MessageList, () => {
|
||||
AppUserStore.focusedState(Focused.FolderList);
|
||||
shortcuts.add('arrowleft', '', Scope.MessageList, () => {
|
||||
AppUserStore.focusedState(Scope.FolderList);
|
||||
return false;
|
||||
});
|
||||
shortcuts.add('tab,arrowright', '', KeyState.MessageList, () => {
|
||||
this.message() && AppUserStore.focusedState(Focused.MessageView);
|
||||
shortcuts.add('tab,arrowright', '', Scope.MessageList, () => {
|
||||
this.message() && AppUserStore.focusedState(Scope.MessageView);
|
||||
return false;
|
||||
});
|
||||
|
||||
shortcuts.add('arrowleft', 'meta', KeyState.MessageView, ()=>false);
|
||||
shortcuts.add('arrowright', 'meta', KeyState.MessageView, ()=>false);
|
||||
shortcuts.add('arrowleft', 'meta', Scope.MessageView, ()=>false);
|
||||
shortcuts.add('arrowright', 'meta', Scope.MessageView, ()=>false);
|
||||
}
|
||||
|
||||
prefetchNextTick() {
|
||||
|
|
|
@ -4,14 +4,13 @@ import { UNUSED_OPTION_VALUE } from 'Common/Consts';
|
|||
|
||||
import {
|
||||
Capa,
|
||||
KeyState
|
||||
Scope
|
||||
} from 'Common/Enums';
|
||||
|
||||
import {
|
||||
ComposeType,
|
||||
ClientSideKeyName,
|
||||
FolderType,
|
||||
Focused,
|
||||
MessageSetAction
|
||||
} from 'Common/EnumsUser';
|
||||
|
||||
|
@ -80,7 +79,8 @@ class MessageViewMailBoxUserView extends AbstractViewRight {
|
|||
this.allowMessageActions = Settings.capa(Capa.MessageActions);
|
||||
this.allowMessageListActions = Settings.capa(Capa.MessageListActions);
|
||||
|
||||
this.attachmentsActions = AppUserStore.attachmentsActions;
|
||||
const attachmentsActions = Settings.app('attachmentsActions');
|
||||
this.attachmentsActions = ko.observableArray(Array.isNotEmpty(attachmentsActions) ? attachmentsActions : []);
|
||||
|
||||
this.message = MessageUserStore.message;
|
||||
this.hasCheckedMessages = MessageUserStore.hasCheckedMessages;
|
||||
|
@ -186,7 +186,7 @@ class MessageViewMailBoxUserView extends AbstractViewRight {
|
|||
return '';
|
||||
},
|
||||
|
||||
messageFocused: () => Focused.MessageView === AppUserStore.focusedState(),
|
||||
messageFocused: () => Scope.MessageView === AppUserStore.focusedState(),
|
||||
|
||||
messageListAndMessageViewLoading:
|
||||
() => MessageUserStore.listCompleteLoading() || MessageUserStore.messageLoading()
|
||||
|
@ -364,7 +364,7 @@ class MessageViewMailBoxUserView extends AbstractViewRight {
|
|||
}
|
||||
|
||||
onBuild(dom) {
|
||||
this.fullScreenMode.subscribe(value => value && this.message() && AppUserStore.focusedState(Focused.MessageView));
|
||||
this.fullScreenMode.subscribe(value => value && this.message() && AppUserStore.focusedState(Scope.MessageView));
|
||||
|
||||
this.showFullInfo.subscribe(value => Local.set(ClientSideKeyName.MessageHeaderFullInfo, value ? '1' : '0'));
|
||||
|
||||
|
@ -462,13 +462,13 @@ class MessageViewMailBoxUserView extends AbstractViewRight {
|
|||
});
|
||||
|
||||
AppUserStore.focusedState.subscribe((value) => {
|
||||
if (Focused.MessageView !== value) {
|
||||
if (Scope.MessageView !== value) {
|
||||
this.scrollMessageToTop();
|
||||
this.scrollMessageToLeft();
|
||||
}
|
||||
});
|
||||
|
||||
keyScopeReal.subscribe(value => this.messageDomFocused(KeyState.MessageView === value && !inFocus()));
|
||||
keyScopeReal.subscribe(value => this.messageDomFocused(Scope.MessageView === value && !inFocus()));
|
||||
|
||||
this.oMessageScrollerDom = dom.querySelector('.messageItem');
|
||||
|
||||
|
@ -485,12 +485,12 @@ class MessageViewMailBoxUserView extends AbstractViewRight {
|
|||
this.fullScreenMode(false);
|
||||
|
||||
if (preview) {
|
||||
AppUserStore.focusedState(Focused.MessageList);
|
||||
AppUserStore.focusedState(Scope.MessageList);
|
||||
}
|
||||
} else if (!preview) {
|
||||
this.message(null);
|
||||
} else {
|
||||
AppUserStore.focusedState(Focused.MessageList);
|
||||
AppUserStore.focusedState(Scope.MessageList);
|
||||
}
|
||||
|
||||
return false;
|
||||
|
@ -501,16 +501,16 @@ class MessageViewMailBoxUserView extends AbstractViewRight {
|
|||
|
||||
initShortcuts() {
|
||||
// exit fullscreen, back
|
||||
shortcuts.add('escape,backspace', '', KeyState.MessageView, this.escShortcuts.bind(this));
|
||||
shortcuts.add('escape,backspace', '', Scope.MessageView, this.escShortcuts.bind(this));
|
||||
|
||||
// fullscreen
|
||||
shortcuts.add('enter,open', '', KeyState.MessageView, () => {
|
||||
shortcuts.add('enter,open', '', Scope.MessageView, () => {
|
||||
this.toggleFullScreen();
|
||||
return false;
|
||||
});
|
||||
|
||||
// reply
|
||||
shortcuts.add('r,mailreply', '', [KeyState.MessageList, KeyState.MessageView], () => {
|
||||
shortcuts.add('r,mailreply', '', [Scope.MessageList, Scope.MessageView], () => {
|
||||
if (MessageUserStore.message()) {
|
||||
this.replyCommand();
|
||||
return false;
|
||||
|
@ -519,14 +519,14 @@ class MessageViewMailBoxUserView extends AbstractViewRight {
|
|||
});
|
||||
|
||||
// replaAll
|
||||
shortcuts.add('a', '', [KeyState.MessageList, KeyState.MessageView], () => {
|
||||
shortcuts.add('a', '', [Scope.MessageList, Scope.MessageView], () => {
|
||||
if (MessageUserStore.message()) {
|
||||
this.replyAllCommand();
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
shortcuts.add('mailreply', 'shift', [KeyState.MessageList, KeyState.MessageView], () => {
|
||||
shortcuts.add('mailreply', 'shift', [Scope.MessageList, Scope.MessageView], () => {
|
||||
if (MessageUserStore.message()) {
|
||||
this.replyAllCommand();
|
||||
return false;
|
||||
|
@ -535,7 +535,7 @@ class MessageViewMailBoxUserView extends AbstractViewRight {
|
|||
});
|
||||
|
||||
// forward
|
||||
shortcuts.add('f,mailforward', '', [KeyState.MessageList, KeyState.MessageView], () => {
|
||||
shortcuts.add('f,mailforward', '', [Scope.MessageList, Scope.MessageView], () => {
|
||||
if (MessageUserStore.message()) {
|
||||
this.forwardCommand();
|
||||
return false;
|
||||
|
@ -545,7 +545,7 @@ class MessageViewMailBoxUserView extends AbstractViewRight {
|
|||
});
|
||||
|
||||
// message information
|
||||
shortcuts.add('i', 'meta', [KeyState.MessageList, KeyState.MessageView], () => {
|
||||
shortcuts.add('i', 'meta', [Scope.MessageList, Scope.MessageView], () => {
|
||||
if (MessageUserStore.message()) {
|
||||
this.showFullInfo(!this.showFullInfo());
|
||||
}
|
||||
|
@ -553,7 +553,7 @@ class MessageViewMailBoxUserView extends AbstractViewRight {
|
|||
});
|
||||
|
||||
// toggle message blockquotes
|
||||
shortcuts.add('b', '', [KeyState.MessageList, KeyState.MessageView], () => {
|
||||
shortcuts.add('b', '', [Scope.MessageList, Scope.MessageView], () => {
|
||||
const message = MessageUserStore.message();
|
||||
if (message && message.body) {
|
||||
message.body.querySelectorAll('.rlBlockquoteSwitcher').forEach(node => node.click());
|
||||
|
@ -562,46 +562,46 @@ class MessageViewMailBoxUserView extends AbstractViewRight {
|
|||
return true;
|
||||
});
|
||||
|
||||
shortcuts.add('arrowup,arrowleft', 'meta', [KeyState.MessageList, KeyState.MessageView], () => {
|
||||
shortcuts.add('arrowup,arrowleft', 'meta', [Scope.MessageList, Scope.MessageView], () => {
|
||||
this.goUpCommand();
|
||||
return false;
|
||||
});
|
||||
|
||||
shortcuts.add('arrowdown,arrowright', 'meta', [KeyState.MessageList, KeyState.MessageView], () => {
|
||||
shortcuts.add('arrowdown,arrowright', 'meta', [Scope.MessageList, Scope.MessageView], () => {
|
||||
this.goDownCommand();
|
||||
return false;
|
||||
});
|
||||
|
||||
// print
|
||||
shortcuts.add('p,printscreen', 'meta', [KeyState.MessageView, KeyState.MessageList], () => {
|
||||
shortcuts.add('p,printscreen', 'meta', [Scope.MessageView, Scope.MessageList], () => {
|
||||
this.message() && this.message().printMessage();
|
||||
return false;
|
||||
});
|
||||
|
||||
// delete
|
||||
shortcuts.add('delete', '', KeyState.MessageView, () => {
|
||||
shortcuts.add('delete', '', Scope.MessageView, () => {
|
||||
this.deleteCommand();
|
||||
return false;
|
||||
});
|
||||
shortcuts.add('delete', 'shift', KeyState.MessageView, () => {
|
||||
shortcuts.add('delete', 'shift', Scope.MessageView, () => {
|
||||
this.deleteWithoutMoveCommand();
|
||||
return false;
|
||||
});
|
||||
|
||||
// change focused state
|
||||
shortcuts.add('arrowleft', '', KeyState.MessageView, () => {
|
||||
shortcuts.add('arrowleft', '', Scope.MessageView, () => {
|
||||
if (!this.fullScreenMode() && this.message() && SettingsUserStore.usePreviewPane()) {
|
||||
if (this.oMessageScrollerDom && 0 < this.oMessageScrollerDom.scrollLeft) {
|
||||
return true;
|
||||
}
|
||||
AppUserStore.focusedState(Focused.MessageList);
|
||||
AppUserStore.focusedState(Scope.MessageList);
|
||||
return false;
|
||||
}
|
||||
});
|
||||
// shortcuts.add('tab', 'shift', KeyState.MessageView, (event, handler) => {
|
||||
shortcuts.add('tab', '', KeyState.MessageView, () => {
|
||||
// shortcuts.add('tab', 'shift', Scope.MessageView, (event, handler) => {
|
||||
shortcuts.add('tab', '', Scope.MessageView, () => {
|
||||
if (!this.fullScreenMode() && this.message() && SettingsUserStore.usePreviewPane()) {
|
||||
AppUserStore.focusedState(Focused.MessageList);
|
||||
AppUserStore.focusedState(Scope.MessageList);
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { KeyState } from 'Common/Enums';
|
||||
import { Scope } from 'Common/Enums';
|
||||
import { leftPanelDisabled } from 'Common/Globals';
|
||||
import { settings, mailbox } from 'Common/Links';
|
||||
import { getFolderInboxName } from 'Common/Cache';
|
||||
|
@ -27,7 +27,7 @@ export class MenuSettingsUserView extends AbstractViewLeft {
|
|||
&& leftPanelDisabled(true)
|
||||
);
|
||||
|
||||
shortcuts.add('arrowup,arrowdown', '', KeyState.Settings,
|
||||
shortcuts.add('arrowup,arrowdown', '', Scope.Settings,
|
||||
settingsMenuKeysHandler(dom.querySelectorAll('.b-settings-menu .e-item')));
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue