diff options
Diffstat (limited to 'src/lib/Menu.js')
-rw-r--r-- | src/lib/Menu.js | 64 |
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'; | |||
7 | import { workspaceActions } from '../features/workspaces/actions'; | 7 | import { workspaceActions } from '../features/workspaces/actions'; |
8 | import { announcementActions } from '../features/announcements/actions'; | 8 | import { announcementActions } from '../features/announcements/actions'; |
9 | import { announcementsStore } from '../features/announcements'; | 9 | import { announcementsStore } from '../features/announcements'; |
10 | import TodoStore from '../features/todos/store'; | ||
11 | import { GA_CATEGORY_TODOS, todosStore } from '../features/todos'; | ||
12 | import { todoActions } from '../features/todos/actions'; | ||
10 | 13 | ||
11 | const { app, Menu, dialog } = remote; | 14 | const { 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 | ||
244 | function getActiveWebview() { | 263 | function 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 | ||