aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Vijay A <avijayr@protonmail.com>2021-08-10 19:22:48 +0530
committerLibravatar Vijay A <avijayr@protonmail.com>2021-08-10 19:56:53 +0530
commit9ba6631b9353e408d7cefe85372666f6011d4928 (patch)
tree6a0fa5c77ee863e40c0c6477990d266fd976069e
parentbuild: add Ferdi snap package (#1767) (diff)
downloadferdium-app-9ba6631b9353e408d7cefe85372666f6011d4928.tar.gz
ferdium-app-9ba6631b9353e408d7cefe85372666f6011d4928.tar.zst
ferdium-app-9ba6631b9353e408d7cefe85372666f6011d4928.zip
refactor: Move platform-specific logic for shortcut keys into common location.
-rw-r--r--src/components/layout/Sidebar.js12
-rw-r--r--src/components/settings/settings/EditSettingsForm.js6
-rw-r--r--src/environment.js8
-rw-r--r--src/lib/Menu.js14
4 files changed, 23 insertions, 17 deletions
diff --git a/src/components/layout/Sidebar.js b/src/components/layout/Sidebar.js
index a6f5adce8..a3dbc3539 100644
--- a/src/components/layout/Sidebar.js
+++ b/src/components/layout/Sidebar.js
@@ -6,7 +6,7 @@ import { inject, observer } from 'mobx-react';
6import { Link } from 'react-router'; 6import { Link } from 'react-router';
7 7
8import Tabbar from '../services/tabs/Tabbar'; 8import Tabbar from '../services/tabs/Tabbar';
9import { ctrlKey, shiftKey, settingsShortcutKey } from '../../environment'; 9import { settingsShortcutKey, lockFerdiShortcutKey, todosToggleShortcutKey, workspaceToggleShortcutKey, addNewServiceShortcutKey, muteFerdiShortcutKey } from '../../environment';
10import { workspaceStore } from '../../features/workspaces'; 10import { workspaceStore } from '../../features/workspaces';
11import { todosStore } from '../../features/todos'; 11import { todosStore } from '../../features/todos';
12import { todoActions } from '../../features/todos/actions'; 12import { todoActions } from '../../features/todos/actions';
@@ -148,7 +148,7 @@ export default @inject('stores', 'actions') @observer class Sidebar extends Comp
148 }, 148 },
149 }); 149 });
150 }} 150 }}
151 data-tip={`${intl.formatMessage(messages.lockFerdi)} (${ctrlKey}+${shiftKey}+L)`} 151 data-tip={`${intl.formatMessage(messages.lockFerdi)} (${lockFerdiShortcutKey(false)})`}
152 > 152 >
153 <i className="mdi mdi-lock" /> 153 <i className="mdi mdi-lock" />
154 </button> 154 </button>
@@ -162,7 +162,7 @@ export default @inject('stores', 'actions') @observer class Sidebar extends Comp
162 }} 162 }}
163 disabled={isTodosServiceActive} 163 disabled={isTodosServiceActive}
164 className={`sidebar__button sidebar__button--todos ${todosStore.isTodosPanelVisible ? 'is-active' : ''}`} 164 className={`sidebar__button sidebar__button--todos ${todosStore.isTodosPanelVisible ? 'is-active' : ''}`}
165 data-tip={`${intl.formatMessage(todosToggleMessage)} (${ctrlKey}+T)`} 165 data-tip={`${intl.formatMessage(todosToggleMessage)} (${todosToggleShortcutKey(false)})`}
166 > 166 >
167 <i className="mdi mdi-check-all" /> 167 <i className="mdi mdi-check-all" />
168 </button> 168 </button>
@@ -175,7 +175,7 @@ export default @inject('stores', 'actions') @observer class Sidebar extends Comp
175 this.updateToolTip(); 175 this.updateToolTip();
176 }} 176 }}
177 className={`sidebar__button sidebar__button--workspaces ${isWorkspaceDrawerOpen ? 'is-active' : ''}`} 177 className={`sidebar__button sidebar__button--workspaces ${isWorkspaceDrawerOpen ? 'is-active' : ''}`}
178 data-tip={`${intl.formatMessage(workspaceToggleMessage)} (${ctrlKey}+D)`} 178 data-tip={`${intl.formatMessage(workspaceToggleMessage)} (${workspaceToggleShortcutKey(false)})`}
179 > 179 >
180 <i className="mdi mdi-view-grid" /> 180 <i className="mdi mdi-view-grid" />
181 </button> 181 </button>
@@ -187,7 +187,7 @@ export default @inject('stores', 'actions') @observer class Sidebar extends Comp
187 this.updateToolTip(); 187 this.updateToolTip();
188 }} 188 }}
189 className={`sidebar__button sidebar__button--audio ${isAppMuted ? 'is-muted' : ''}`} 189 className={`sidebar__button sidebar__button--audio ${isAppMuted ? 'is-muted' : ''}`}
190 data-tip={`${intl.formatMessage(isAppMuted ? messages.unmute : messages.mute)} (${ctrlKey}+${shiftKey}+M)`} 190 data-tip={`${intl.formatMessage(isAppMuted ? messages.unmute : messages.mute)} (${muteFerdiShortcutKey(false)})`}
191 > 191 >
192 <i className={`mdi mdi-bell${isAppMuted ? '-off' : ''}`} /> 192 <i className={`mdi mdi-bell${isAppMuted ? '-off' : ''}`} />
193 </button> 193 </button>
@@ -195,7 +195,7 @@ export default @inject('stores', 'actions') @observer class Sidebar extends Comp
195 type="button" 195 type="button"
196 onClick={() => openSettings({ path: 'recipes' })} 196 onClick={() => openSettings({ path: 'recipes' })}
197 className="sidebar__button sidebar__button--new-service" 197 className="sidebar__button sidebar__button--new-service"
198 data-tip={`${intl.formatMessage(messages.addNewService)} (${ctrlKey}+N)`} 198 data-tip={`${intl.formatMessage(messages.addNewService)} (${addNewServiceShortcutKey(false)})`}
199 > 199 >
200 <i className="mdi mdi-plus-box" /> 200 <i className="mdi mdi-plus-box" />
201 </button> 201 </button>
diff --git a/src/components/settings/settings/EditSettingsForm.js b/src/components/settings/settings/EditSettingsForm.js
index a4381e37d..87a4ada27 100644
--- a/src/components/settings/settings/EditSettingsForm.js
+++ b/src/components/settings/settings/EditSettingsForm.js
@@ -1,5 +1,5 @@
1import { app, systemPreferences } from '@electron/remote'; 1import { app, systemPreferences } from '@electron/remote';
2import React, { Component, Fragment } from 'react'; 2import React, { Component } from 'react';
3import PropTypes from 'prop-types'; 3import PropTypes from 'prop-types';
4import { observer } from 'mobx-react'; 4import { observer } from 'mobx-react';
5import prettyBytes from 'pretty-bytes'; 5import prettyBytes from 'pretty-bytes';
@@ -16,7 +16,7 @@ import {
16 FRANZ_TRANSLATION, 16 FRANZ_TRANSLATION,
17 GITHUB_FRANZ_URL, 17 GITHUB_FRANZ_URL,
18} from '../../../config'; 18} from '../../../config';
19import { cmdKey, shiftKey, DEFAULT_APP_SETTINGS, isMac, isWindows } from '../../../environment'; 19import { DEFAULT_APP_SETTINGS, isMac, isWindows, lockFerdiShortcutKey } from '../../../environment';
20import globalMessages from '../../../i18n/globalMessages'; 20import globalMessages from '../../../i18n/globalMessages';
21 21
22const messages = defineMessages({ 22const messages = defineMessages({
@@ -548,7 +548,7 @@ export default @observer class EditSettingsForm extends Component {
548 }} 548 }}
549 > 549 >
550 <span> 550 <span>
551 { intl.formatMessage(messages.lockInfo, { lockShortcut: `${cmdKey}+${shiftKey}+L` }) } 551 { intl.formatMessage(messages.lockInfo, { lockShortcut: `${lockFerdiShortcutKey(false)}` }) }
552 </span> 552 </span>
553 </p> 553 </p>
554 </div> 554 </div>
diff --git a/src/environment.js b/src/environment.js
index 923754048..39b854db4 100644
--- a/src/environment.js
+++ b/src/environment.js
@@ -82,7 +82,13 @@ export const altKey = isMac ? '⌥' : 'Alt';
82export const shiftKey = isMac ? '⇧' : 'Shift'; 82export const shiftKey = isMac ? '⇧' : 'Shift';
83 83
84// Platform specific shortcut keys 84// Platform specific shortcut keys
85export const settingsShortcutKey = (isAccelerator = true) => `${isAccelerator ? cmdKey : ctrlKey}+${isMac ? ',' : 'P'}`; 85const shortcutKey = (isAccelerator) => `${isAccelerator ? cmdKey : ctrlKey}`;
86export const lockFerdiShortcutKey = (isAccelerator = true) => `${shortcutKey(isAccelerator)}+${shiftKey}+L`;
87export const todosToggleShortcutKey = (isAccelerator = true) => `${shortcutKey(isAccelerator)}+T`;
88export const workspaceToggleShortcutKey = (isAccelerator = true) => `${shortcutKey(isAccelerator)}+D`;
89export const muteFerdiShortcutKey = (isAccelerator = true) => `${shortcutKey(isAccelerator)}+${shiftKey}+M`;
90export const addNewServiceShortcutKey = (isAccelerator = true) => `${shortcutKey(isAccelerator)}+N`;
91export const settingsShortcutKey = (isAccelerator = true) => `${shortcutKey(isAccelerator)}+${isMac ? ',' : 'P'}`;
86 92
87let api; 93let api;
88let wsApi; 94let wsApi;
diff --git a/src/lib/Menu.js b/src/lib/Menu.js
index e8d3e79b4..21133bfde 100644
--- a/src/lib/Menu.js
+++ b/src/lib/Menu.js
@@ -6,7 +6,7 @@ import { autorun, observable } from 'mobx';
6import { defineMessages } from 'react-intl'; 6import { defineMessages } from 'react-intl';
7import { CUSTOM_WEBSITE_RECIPE_ID, GITHUB_FERDI_URL, LIVE_API_FERDI_WEBSITE } from '../config'; 7import { CUSTOM_WEBSITE_RECIPE_ID, GITHUB_FERDI_URL, LIVE_API_FERDI_WEBSITE } from '../config';
8import { 8import {
9 cmdKey, altKey, shiftKey, settingsShortcutKey, isLinux, isMac, aboutAppDetails, 9 cmdKey, altKey, shiftKey, settingsShortcutKey, isLinux, isMac, aboutAppDetails, lockFerdiShortcutKey, todosToggleShortcutKey, workspaceToggleShortcutKey, addNewServiceShortcutKey, muteFerdiShortcutKey,
10} from '../environment'; 10} from '../environment';
11import { announcementsStore } from '../features/announcements'; 11import { announcementsStore } from '../features/announcements';
12import { announcementActions } from '../features/announcements/actions'; 12import { announcementActions } from '../features/announcements/actions';
@@ -668,7 +668,7 @@ export default class FranzMenu {
668 type: 'separator', 668 type: 'separator',
669 }, { 669 }, {
670 label: intl.formatMessage(menuItems.lockFerdi), 670 label: intl.formatMessage(menuItems.lockFerdi),
671 accelerator: `${cmdKey}+${shiftKey}+L`, 671 accelerator: `${lockFerdiShortcutKey()}`,
672 enabled: this.stores.user.isLoggedIn && this.stores.settings.app.lockingFeatureEnabled, 672 enabled: this.stores.user.isLoggedIn && this.stores.settings.app.lockingFeatureEnabled,
673 click() { 673 click() {
674 actions.settings.update({ 674 actions.settings.update({
@@ -696,7 +696,7 @@ export default class FranzMenu {
696 696
697 tpl[0].submenu.unshift({ 697 tpl[0].submenu.unshift({
698 label: intl.formatMessage(menuItems.touchId), 698 label: intl.formatMessage(menuItems.touchId),
699 accelerator: `${cmdKey}+${shiftKey}+L`, 699 accelerator: `${lockFerdiShortcutKey()}`,
700 visible: touchIdEnabled, 700 visible: touchIdEnabled,
701 click() { 701 click() {
702 systemPreferences.promptTouchID(intl.formatMessage(menuItems.touchIdPrompt)).then(() => { 702 systemPreferences.promptTouchID(intl.formatMessage(menuItems.touchIdPrompt)).then(() => {
@@ -875,7 +875,7 @@ export default class FranzMenu {
875 875
876 menu.push({ 876 menu.push({
877 label: intl.formatMessage(menuItems.addNewService), 877 label: intl.formatMessage(menuItems.addNewService),
878 accelerator: `${cmdKey}+N`, 878 accelerator: `${addNewServiceShortcutKey()}`,
879 click: () => { 879 click: () => {
880 this.actions.ui.openSettings({ path: 'recipes' }); 880 this.actions.ui.openSettings({ path: 'recipes' });
881 }, 881 },
@@ -905,7 +905,7 @@ export default class FranzMenu {
905 label: intl.formatMessage( 905 label: intl.formatMessage(
906 settings.all.app.isAppMuted ? menuItems.unmuteApp : menuItems.muteApp, 906 settings.all.app.isAppMuted ? menuItems.unmuteApp : menuItems.muteApp,
907 ).replace('&', '&&'), 907 ).replace('&', '&&'),
908 accelerator: `${cmdKey}+${shiftKey}+m`, 908 accelerator: `${muteFerdiShortcutKey()}`,
909 click: () => this.actions.app.toggleMuteApp(), 909 click: () => this.actions.app.toggleMuteApp(),
910 }, { 910 }, {
911 type: 'separator', 911 type: 'separator',
@@ -960,7 +960,7 @@ export default class FranzMenu {
960 ); 960 );
961 menu.push({ 961 menu.push({
962 label: intl.formatMessage(drawerLabel), 962 label: intl.formatMessage(drawerLabel),
963 accelerator: `${cmdKey}+D`, 963 accelerator: `${workspaceToggleShortcutKey()}`,
964 click: () => { 964 click: () => {
965 workspaceActions.toggleWorkspaceDrawer(); 965 workspaceActions.toggleWorkspaceDrawer();
966 }, 966 },
@@ -1006,7 +1006,7 @@ export default class FranzMenu {
1006 1006
1007 menu.push({ 1007 menu.push({
1008 label: intl.formatMessage(drawerLabel), 1008 label: intl.formatMessage(drawerLabel),
1009 accelerator: `${cmdKey}+T`, 1009 accelerator: `${todosToggleShortcutKey()}`,
1010 click: () => { 1010 click: () => {
1011 todoActions.toggleTodosPanel(); 1011 todoActions.toggleTodosPanel();
1012 }, 1012 },