aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/Menu.js
diff options
context:
space:
mode:
authorLibravatar vantezzen <properly@protonmail.com>2019-09-07 15:50:23 +0200
committerLibravatar vantezzen <properly@protonmail.com>2019-09-07 15:50:23 +0200
commite7a74514c1e7c3833dfdcf5900cb87f9e6e8354e (patch)
treeb8314e4155503b135dcb07e8b4a0e847e25c19cf /src/lib/Menu.js
parentUpdate CHANGELOG.md (diff)
parentUpdate CHANGELOG.md (diff)
downloadferdium-app-e7a74514c1e7c3833dfdcf5900cb87f9e6e8354e.tar.gz
ferdium-app-e7a74514c1e7c3833dfdcf5900cb87f9e6e8354e.tar.zst
ferdium-app-e7a74514c1e7c3833dfdcf5900cb87f9e6e8354e.zip
Merge branch 'master' of https://github.com/meetfranz/franz into franz-5.3.0
Diffstat (limited to 'src/lib/Menu.js')
-rw-r--r--src/lib/Menu.js64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/lib/Menu.js b/src/lib/Menu.js
index 7937aede9..13b31bcad 100644
--- a/src/lib/Menu.js
+++ b/src/lib/Menu.js
@@ -7,6 +7,9 @@ import { workspaceStore } from '../features/workspaces/index';
7import { workspaceActions } from '../features/workspaces/actions'; 7import { workspaceActions } from '../features/workspaces/actions';
8import { announcementActions } from '../features/announcements/actions'; 8import { announcementActions } from '../features/announcements/actions';
9import { announcementsStore } from '../features/announcements'; 9import { announcementsStore } from '../features/announcements';
10import TodoStore from '../features/todos/store';
11import { GA_CATEGORY_TODOS, todosStore } from '../features/todos';
12import { todoActions } from '../features/todos/actions';
10 13
11const { app, Menu, dialog } = remote; 14const { app, Menu, dialog } = remote;
12 15
@@ -95,6 +98,10 @@ const menuItems = defineMessages({
95 id: 'menu.view.toggleDevTools', 98 id: 'menu.view.toggleDevTools',
96 defaultMessage: '!!!Toggle Developer Tools', 99 defaultMessage: '!!!Toggle Developer Tools',
97 }, 100 },
101 toggleTodosDevTools: {
102 id: 'menu.view.toggleTodosDevTools',
103 defaultMessage: '!!!Toggle Todos Developer Tools',
104 },
98 toggleServiceDevTools: { 105 toggleServiceDevTools: {
99 id: 'menu.view.toggleServiceDevTools', 106 id: 'menu.view.toggleServiceDevTools',
100 defaultMessage: '!!!Toggle Service Developer Tools', 107 defaultMessage: '!!!Toggle Service Developer Tools',
@@ -239,6 +246,18 @@ const menuItems = defineMessages({
239 id: 'menu.workspaces.defaultWorkspace', 246 id: 'menu.workspaces.defaultWorkspace',
240 defaultMessage: '!!!Default', 247 defaultMessage: '!!!Default',
241 }, 248 },
249 todos: {
250 id: 'menu.todos',
251 defaultMessage: '!!!Todos',
252 },
253 openTodosDrawer: {
254 id: 'menu.Todoss.openTodosDrawer',
255 defaultMessage: '!!!Open Todos drawer',
256 },
257 closeTodosDrawer: {
258 id: 'menu.Todoss.closeTodosDrawer',
259 defaultMessage: '!!!Close Todos drawer',
260 },
242}); 261});
243 262
244function getActiveWebview() { 263function getActiveWebview() {
@@ -347,6 +366,11 @@ const _templateFactory = intl => [
347 visible: workspaceStore.isFeatureEnabled, 366 visible: workspaceStore.isFeatureEnabled,
348 }, 367 },
349 { 368 {
369 label: intl.formatMessage(menuItems.todos),
370 submenu: [],
371 visible: todosStore.isFeatureEnabled,
372 },
373 {
350 label: intl.formatMessage(menuItems.window), 374 label: intl.formatMessage(menuItems.window),
351 role: 'window', 375 role: 'window',
352 submenu: [ 376 submenu: [
@@ -619,6 +643,17 @@ export default class FranzMenu {
619 enabled: this.stores.user.isLoggedIn && this.stores.services.enabled.length > 0, 643 enabled: this.stores.user.isLoggedIn && this.stores.services.enabled.length > 0,
620 }); 644 });
621 645
646 if (this.stores.features.features.isTodosEnabled) {
647 tpl[1].submenu.push({
648 label: intl.formatMessage(menuItems.toggleTodosDevTools),
649 accelerator: `${cmdKey}+Shift+Alt+O`,
650 click: () => {
651 const webview = document.querySelector('webview[partition="persist:todos"]');
652 if (webview) webview.openDevTools();
653 },
654 });
655 }
656
622 tpl[1].submenu.unshift({ 657 tpl[1].submenu.unshift({
623 label: intl.formatMessage(menuItems.reloadService), 658 label: intl.formatMessage(menuItems.reloadService),
624 id: 'reloadService', // TODO: needed? 659 id: 'reloadService', // TODO: needed?
@@ -771,6 +806,10 @@ export default class FranzMenu {
771 tpl[4].submenu = this.workspacesMenu(); 806 tpl[4].submenu = this.workspacesMenu();
772 } 807 }
773 808
809 if (todosStore.isFeatureEnabled) {
810 tpl[5].submenu = this.todosMenu();
811 }
812
774 tpl[tpl.length - 1].submenu.push({ 813 tpl[tpl.length - 1].submenu.push({
775 type: 'separator', 814 type: 'separator',
776 }, this.debugMenu()); 815 }, this.debugMenu());
@@ -882,6 +921,31 @@ export default class FranzMenu {
882 return menu; 921 return menu;
883 } 922 }
884 923
924 todosMenu() {
925 const { isTodosPanelVisible } = TodoStore;
926 const { intl } = window.franz;
927 const menu = [];
928
929 // Open todos drawer:
930 const drawerLabel = (
931 isTodosPanelVisible ? menuItems.closeTodosDrawer : menuItems.openTodosDrawer
932 );
933 menu.push({
934 label: intl.formatMessage(drawerLabel),
935 accelerator: `${cmdKey}+T`,
936 click: () => {
937 todoActions.toggleTodosPanel();
938 gaEvent(GA_CATEGORY_TODOS, 'toggleDrawer', 'menu');
939 },
940 enabled: this.stores.user.isLoggedIn,
941 }, {
942 type: 'separator',
943 });
944
945 return menu;
946 }
947
948
885 debugMenu() { 949 debugMenu() {
886 const { intl } = window.ferdi; 950 const { intl } = window.ferdi;
887 951