From e7b1ce75098f56bdcf2863ce99adccd5e8623e12 Mon Sep 17 00:00:00 2001 From: djmaze Date: Wed, 10 Mar 2021 11:43:23 +0100 Subject: [PATCH] Globalize message composer popup window --- dev/App/User.js | 9 ++--- dev/Common/UtilsUser.js | 15 ++++---- dev/View/Popup/Contacts.js | 18 +++------- dev/View/User/MailBox/FolderList.js | 8 ++--- dev/View/User/MailBox/MessageList.js | 51 ++++++++++++---------------- dev/View/User/MailBox/MessageView.js | 27 ++++++--------- 6 files changed, 51 insertions(+), 77 deletions(-) diff --git a/dev/App/User.js b/dev/App/User.js index 7184a9ff8..a8d1830cc 100644 --- a/dev/App/User.js +++ b/dev/App/User.js @@ -1008,8 +1008,9 @@ class AppUser extends AbstractApp { setTimeout(this.quota, 5000); setTimeout(() => Remote.appDelayStart(()=>{}), 35000); + // When auto-login is active if ( - !!Settings.get('AccountSignMe') && + Settings.get('AccountSignMe') && navigator.registerProtocolHandler && Settings.capa(Capa.Composer) ) { @@ -1023,7 +1024,7 @@ class AppUser extends AbstractApp { } catch (e) {} // eslint-disable-line no-empty if (Settings.get('MailToEmail')) { - mailToHelper(Settings.get('MailToEmail'), ComposePopupView); + mailToHelper(Settings.get('MailToEmail')); } }, 500); } @@ -1047,9 +1048,9 @@ class AppUser extends AbstractApp { setInterval(() => dispatchEvent(new CustomEvent('reload-time')), 60000); } - showComposePopupView(params = []) + showMessageComposer(params = []) { - showScreenPopup(ComposePopupView, params); + Settings.capa(Capa.Composer) && showScreenPopup(ComposePopupView, params); } } diff --git a/dev/Common/UtilsUser.js b/dev/Common/UtilsUser.js index 925bed9d0..db3942b6d 100644 --- a/dev/Common/UtilsUser.js +++ b/dev/Common/UtilsUser.js @@ -1,6 +1,5 @@ import { ComposeType, FolderType } from 'Common/EnumsUser'; import { EmailModel } from 'Model/Email'; -import { showScreenPopup } from 'Knoin/Knoin'; import { encodeHtml } from 'Common/Html'; import { isArray } from 'Common/Utils'; import { doc } from 'Common/Globals'; @@ -433,10 +432,9 @@ export function computedPaginatorHelper(koCurrentPage, koPageCount) { /** * @param {string} mailToUrl - * @param {Function} PopupComposeViewModel * @returns {boolean} */ -export function mailToHelper(mailToUrl, PopupComposeViewModel) { +export function mailToHelper(mailToUrl) { if ( mailToUrl && 'mailto:' === @@ -445,10 +443,6 @@ export function mailToHelper(mailToUrl, PopupComposeViewModel) { .substr(0, 7) .toLowerCase() ) { - if (!PopupComposeViewModel) { - return true; - } - mailToUrl = mailToUrl.toString().substr(7); let to = [], @@ -492,7 +486,7 @@ export function mailToHelper(mailToUrl, PopupComposeViewModel) { bcc = EmailModel.parseEmailLine(decodeURIComponent(params.bcc)); } - showScreenPopup(PopupComposeViewModel, [ + showMessageComposer([ ComposeType.Empty, null, to, @@ -507,3 +501,8 @@ export function mailToHelper(mailToUrl, PopupComposeViewModel) { return false; } + +export function showMessageComposer(params = []) +{ + rl.app.showScreenPopup(params); +} diff --git a/dev/View/Popup/Contacts.js b/dev/View/Popup/Contacts.js index 023f1f8a4..eb022854b 100644 --- a/dev/View/Popup/Contacts.js +++ b/dev/View/Popup/Contacts.js @@ -2,7 +2,6 @@ import ko from 'ko'; import { SaveSettingsStep, - Capa, StorageResultType, Notification, KeyState @@ -11,7 +10,7 @@ import { import { ComposeType } from 'Common/EnumsUser'; import { pInt } from 'Common/Utils'; -import { delegateRunOnDestroy, computedPaginatorHelper } from 'Common/UtilsUser'; +import { delegateRunOnDestroy, computedPaginatorHelper, showMessageComposer } from 'Common/UtilsUser'; import { Selector } from 'Common/Selector'; import { serverRequestRaw, serverRequest } from 'Common/Links'; @@ -29,7 +28,6 @@ import { ContactPropertyModel, ContactPropertyType } from 'Model/ContactProperty import { decorateKoCommands, hideScreenPopup } from 'Knoin/Knoin'; import { AbstractViewPopup } from 'Knoin/AbstractViews'; - const CONTACTS_PER_PAGE = 50, propertyIsMail = prop => prop.isType(ContactPropertyType.Email), propertyIsName = prop => prop.isType(ContactPropertyType.FirstName) || prop.isType(ContactPropertyType.LastName); @@ -164,10 +162,6 @@ class ContactsPopupView extends AbstractViewPopup { } newMessageCommand() { - if (!rl.settings.capa(Capa.Composer)) { - return false; - } - let aE = [], toEmails = null, ccEmails = null, @@ -211,9 +205,9 @@ class ContactsPopupView extends AbstractViewPopup { this.sLastComposeFocusedField = ''; - setTimeout(() => { - rl.app.showComposePopupView([ComposeType.Empty, null, toEmails, ccEmails, bccEmails]); - }, 200); + setTimeout(() => + showMessageComposer([ComposeType.Empty, null, toEmails, ccEmails, bccEmails]) + , 200); } return true; @@ -547,9 +541,7 @@ class ContactsPopupView extends AbstractViewPopup { if (this.bBackToCompose) { this.bBackToCompose = false; - if (rl.settings.capa(Capa.Composer)) { - rl.app.showComposePopupView(); - } + showMessageComposer(); } } } diff --git a/dev/View/User/MailBox/FolderList.js b/dev/View/User/MailBox/FolderList.js index cef159903..70801d055 100644 --- a/dev/View/User/MailBox/FolderList.js +++ b/dev/View/User/MailBox/FolderList.js @@ -15,7 +15,7 @@ import { ThemeStore } from 'Stores/Theme'; import { showScreenPopup } from 'Knoin/Knoin'; import { AbstractViewLeft } from 'Knoin/AbstractViews'; -import { ComposePopupView } from 'View/Popup/Compose'; +import { showMessageComposer } from 'Common/UtilsUser'; import { FolderCreatePopupView } from 'View/Popup/FolderCreate'; import { ContactsPopupView } from 'View/Popup/Contacts'; @@ -38,7 +38,7 @@ export class FolderListMailBoxUserView extends AbstractViewLeft { this.leftPanelDisabled = leftPanelDisabled; - this.allowComposer = !!Settings.capa(Capa.Composer); + this.allowComposer = Settings.capa(Capa.Composer); this.allowContacts = !!AppStore.contactsIsAllowed(); this.folderListFocused = ko.computed(() => Focused.FolderList === AppStore.focusedState()); @@ -198,9 +198,7 @@ export class FolderListMailBoxUserView extends AbstractViewLeft { } composeClick() { - if (Settings.capa(Capa.Composer)) { - showScreenPopup(ComposePopupView); - } + showMessageComposer(); } createFolder() { diff --git a/dev/View/User/MailBox/MessageList.js b/dev/View/User/MailBox/MessageList.js index 3ad98b009..881f1811f 100644 --- a/dev/View/User/MailBox/MessageList.js +++ b/dev/View/User/MailBox/MessageList.js @@ -17,7 +17,7 @@ import { UNUSED_OPTION_VALUE } from 'Common/Consts'; import { doc, leftPanelDisabled, moveAction, Settings } from 'Common/Globals'; -import { computedPaginatorHelper } from 'Common/UtilsUser'; +import { computedPaginatorHelper, showMessageComposer } from 'Common/UtilsUser'; import { FileInfo } from 'Common/File'; import { mailBox, serverRequest } from 'Common/Links'; @@ -45,7 +45,6 @@ import { decorateKoCommands, showScreenPopup, popupVisibility } from 'Knoin/Knoi import { AbstractViewRight } from 'Knoin/AbstractViews'; import { FolderClearPopupView } from 'View/Popup/FolderClear'; -import { ComposePopupView } from 'View/Popup/Compose'; import { AdvancedSearchPopupView } from 'View/Popup/AdvancedSearch'; const @@ -63,12 +62,12 @@ export class MessageListMailBoxUserView extends AbstractViewRight { this.newMoveToFolder = !!Settings.get('NewMoveToFolder'); - this.allowReload = !!Settings.capa(Capa.Reload); - this.allowSearch = !!Settings.capa(Capa.Search); - this.allowSearchAdv = !!Settings.capa(Capa.SearchAdv); - this.allowComposer = !!Settings.capa(Capa.Composer); - this.allowMessageListActions = !!Settings.capa(Capa.MessageListActions); - this.allowDangerousActions = !!Settings.capa(Capa.DangerousActions); + this.allowReload = Settings.capa(Capa.Reload); + this.allowSearch = Settings.capa(Capa.Search); + this.allowSearchAdv = Settings.capa(Capa.SearchAdv); + this.allowComposer = Settings.capa(Capa.Composer); + this.allowMessageListActions = Settings.capa(Capa.MessageListActions); + this.allowDangerousActions = Settings.capa(Capa.DangerousActions); this.popupVisibility = popupVisibility; @@ -264,12 +263,10 @@ export class MessageListMailBoxUserView extends AbstractViewRight { } multyForwardCommand() { - if (Settings.capa(Capa.Composer)) { - showScreenPopup(ComposePopupView, [ - ComposeType.ForwardAsAttachment, - MessageStore.messageListCheckedOrSelected() - ]); - } + showMessageComposer([ + ComposeType.ForwardAsAttachment, + MessageStore.messageListCheckedOrSelected() + ]); } deleteWithoutMoveCommand() { @@ -349,9 +346,7 @@ export class MessageListMailBoxUserView extends AbstractViewRight { } composeClick() { - if (Settings.capa(Capa.Composer)) { - showScreenPopup(ComposePopupView); - } + showMessageComposer(); } goToUpUpOrDownDown(up) { @@ -750,13 +745,11 @@ export class MessageListMailBoxUserView extends AbstractViewRight { return false; }); - if (Settings.capa(Capa.Composer)) { - // write/compose (open compose popup) - shortcuts.add('w,c,new', '', [KeyState.MessageList, KeyState.MessageView], () => { - showScreenPopup(ComposePopupView); - return false; - }); - } + // write/compose (open compose popup) + shortcuts.add('w,c,new', '', [KeyState.MessageList, KeyState.MessageView], () => { + showMessageComposer(); + return false; + }); if (Settings.capa(Capa.MessageListActions)) { // important - star/flag messages @@ -806,12 +799,10 @@ export class MessageListMailBoxUserView extends AbstractViewRight { }); } - if (Settings.capa(Capa.Composer)) { - shortcuts.add('f,mailforward', 'shift', [KeyState.MessageList, KeyState.MessageView], () => { - this.multyForwardCommand(); - return false; - }); - } + shortcuts.add('f,mailforward', 'shift', [KeyState.MessageList, KeyState.MessageView], () => { + this.multyForwardCommand(); + return false; + }); if (Settings.capa(Capa.Search)) { // search input focus diff --git a/dev/View/User/MailBox/MessageView.js b/dev/View/User/MailBox/MessageView.js index 39cb53a70..7da726596 100644 --- a/dev/View/User/MailBox/MessageView.js +++ b/dev/View/User/MailBox/MessageView.js @@ -18,7 +18,7 @@ import { import { doc, $htmlCL, leftPanelDisabled, keyScopeReal, moveAction, Settings } from 'Common/Globals'; import { inFocus } from 'Common/Utils'; -import { mailToHelper } from 'Common/UtilsUser'; +import { mailToHelper, showMessageComposer } from 'Common/UtilsUser'; import Audio from 'Common/Audio'; @@ -38,11 +38,9 @@ import * as Local from 'Storage/Client'; import Remote from 'Remote/User/Fetch'; -import { decorateKoCommands, showScreenPopup, createCommand } from 'Knoin/Knoin'; +import { decorateKoCommands, createCommand } from 'Knoin/Knoin'; import { AbstractViewRight } from 'Knoin/AbstractViews'; -import { ComposePopupView } from 'View/Popup/Compose'; - function isTransparent(color) { return 'rgba(0, 0, 0, 0)' === color || 'transparent' === color; } @@ -82,9 +80,9 @@ class MessageViewMailBoxUserView extends AbstractViewRight { this.moveAction = moveAction; - this.allowComposer = !!Settings.capa(Capa.Composer); - this.allowMessageActions = !!Settings.capa(Capa.MessageActions); - this.allowMessageListActions = !!Settings.capa(Capa.MessageListActions); + this.allowComposer = Settings.capa(Capa.Composer); + this.allowMessageActions = Settings.capa(Capa.MessageActions); + this.allowMessageListActions = Settings.capa(Capa.MessageListActions); this.attachmentsActions = AppStore.attachmentsActions; @@ -338,7 +336,7 @@ class MessageViewMailBoxUserView extends AbstractViewRight { * @returns {void} */ replyOrforward(sType) { - Settings.capa(Capa.Composer) && showScreenPopup(ComposePopupView, [sType, MessageStore.message()]); + showMessageComposer([sType, MessageStore.message()]); } checkHeaderHeight() { @@ -436,10 +434,7 @@ class MessageViewMailBoxUserView extends AbstractViewRight { if (el) { return !( 0 === event.button && - mailToHelper( - el.href, - Settings.capa(Capa.Composer) ? ComposePopupView : null - ) + mailToHelper(el.href) ); } @@ -695,14 +690,12 @@ class MessageViewMailBoxUserView extends AbstractViewRight { } composeClick() { - if (Settings.capa(Capa.Composer)) { - showScreenPopup(ComposePopupView); - } + showMessageComposer(); } editMessage() { - if (Settings.capa(Capa.Composer) && MessageStore.message()) { - showScreenPopup(ComposePopupView, [ComposeType.Draft, MessageStore.message()]); + if (MessageStore.message()) { + showMessageComposer([ComposeType.Draft, MessageStore.message()]); } }