aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLibravatar Mahadevan Sreenivasan <mahadevan_sv@yahoo.com>2020-10-15 03:29:53 +0530
committerLibravatar GitHub <noreply@github.com>2020-10-14 22:59:53 +0100
commitd97c00f962757210d7ef617c40d4c4e3da37efb1 (patch)
treeaf1941d7abc1b59427bb40d31770437d67a7bc59 /src
parentAdd vertical style and "Always show workspace drawer" setting (#567) (diff)
downloadferdium-app-d97c00f962757210d7ef617c40d4c4e3da37efb1.tar.gz
ferdium-app-d97c00f962757210d7ef617c40d4c4e3da37efb1.tar.zst
ferdium-app-d97c00f962757210d7ef617c40d4c4e3da37efb1.zip
Flash TaskBar (Windows) / Bounce Dock (Mac) on New Message (#1020)
- Add a new Toggle Field for Win32 and MacOS for NotifyTaskBarOnMessage in EditSettingsForm.js - Add notifyTaskbarOnMessage under messages Array in EditSettingsScreen.js - Update appIndicator.js to flash Windows TaskBar or Bounce the Dock on MacOS when a new message arrives - Update en-US.json to include settings.app.form.notifyTaskBarOnMessage string
Diffstat (limited to 'src')
-rw-r--r--src/components/settings/settings/EditSettingsForm.js2
-rw-r--r--src/config.js1
-rw-r--r--src/containers/settings/EditSettingsScreen.js10
-rw-r--r--src/electron/ipc-api/appIndicator.js13
-rw-r--r--src/i18n/locales/en-US.json1
5 files changed, 27 insertions, 0 deletions
diff --git a/src/components/settings/settings/EditSettingsForm.js b/src/components/settings/settings/EditSettingsForm.js
index b1e9a878d..476c4f045 100644
--- a/src/components/settings/settings/EditSettingsForm.js
+++ b/src/components/settings/settings/EditSettingsForm.js
@@ -306,6 +306,8 @@ export default @observer class EditSettingsForm extends Component {
306 <Toggle field={form.$('minimizeToSystemTray')} /> 306 <Toggle field={form.$('minimizeToSystemTray')} />
307 )} 307 )}
308 <Toggle field={form.$('privateNotifications')} /> 308 <Toggle field={form.$('privateNotifications')} />
309 {(process.platform === 'win32' || process.platform === 'darwin') && (
310 <Toggle field={form.$('notifyTaskBarOnMessage')} />)}
309 <Select field={form.$('navigationBarBehaviour')} /> 311 <Select field={form.$('navigationBarBehaviour')} />
310 312
311 <Hr /> 313 <Hr />
diff --git a/src/config.js b/src/config.js
index 8a46d8083..32996a03c 100644
--- a/src/config.js
+++ b/src/config.js
@@ -94,6 +94,7 @@ export const DEFAULT_APP_SETTINGS = {
94 startMinimized: false, 94 startMinimized: false,
95 minimizeToSystemTray: false, 95 minimizeToSystemTray: false,
96 privateNotifications: false, 96 privateNotifications: false,
97 notifyTaskBarOnMessage: false,
97 showDisabledServices: true, 98 showDisabledServices: true,
98 showMessageBadgeWhenMuted: true, 99 showMessageBadgeWhenMuted: true,
99 showDragArea: false, 100 showDragArea: false,
diff --git a/src/containers/settings/EditSettingsScreen.js b/src/containers/settings/EditSettingsScreen.js
index 7078546f9..d87b2512e 100644
--- a/src/containers/settings/EditSettingsScreen.js
+++ b/src/containers/settings/EditSettingsScreen.js
@@ -59,6 +59,10 @@ const messages = defineMessages({
59 id: 'settings.app.form.privateNotifications', 59 id: 'settings.app.form.privateNotifications',
60 defaultMessage: '!!!Don\'t show message content in notifications', 60 defaultMessage: '!!!Don\'t show message content in notifications',
61 }, 61 },
62 notifyTaskBarOnMessage: {
63 id: 'settings.app.form.notifyTaskBarOnMessage',
64 defaultMessage: '!!!Notify TaskBar/Dock on new message',
65 },
62 navigationBarBehaviour: { 66 navigationBarBehaviour: {
63 id: 'settings.app.form.navigationBarBehaviour', 67 id: 'settings.app.form.navigationBarBehaviour',
64 defaultMessage: '!!!Navigation bar behaviour', 68 defaultMessage: '!!!Navigation bar behaviour',
@@ -230,6 +234,7 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e
230 startMinimized: settingsData.startMinimized, 234 startMinimized: settingsData.startMinimized,
231 minimizeToSystemTray: settingsData.minimizeToSystemTray, 235 minimizeToSystemTray: settingsData.minimizeToSystemTray,
232 privateNotifications: settingsData.privateNotifications, 236 privateNotifications: settingsData.privateNotifications,
237 notifyTaskBarOnMessage: settingsData.notifyTaskBarOnMessage,
233 navigationBarBehaviour: settingsData.navigationBarBehaviour, 238 navigationBarBehaviour: settingsData.navigationBarBehaviour,
234 sentry: settingsData.sentry, 239 sentry: settingsData.sentry,
235 hibernate: settingsData.hibernate, 240 hibernate: settingsData.hibernate,
@@ -374,6 +379,11 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e
374 value: settings.all.app.privateNotifications, 379 value: settings.all.app.privateNotifications,
375 default: DEFAULT_APP_SETTINGS.privateNotifications, 380 default: DEFAULT_APP_SETTINGS.privateNotifications,
376 }, 381 },
382 notifyTaskBarOnMessage: {
383 label: intl.formatMessage(messages.notifyTaskBarOnMessage),
384 value: settings.all.app.notifyTaskBarOnMessage,
385 default: DEFAULT_APP_SETTINGS.notifyTaskBarOnMessage,
386 },
377 navigationBarBehaviour: { 387 navigationBarBehaviour: {
378 label: intl.formatMessage(messages.navigationBarBehaviour), 388 label: intl.formatMessage(messages.navigationBarBehaviour),
379 value: settings.all.app.navigationBarBehaviour, 389 value: settings.all.app.navigationBarBehaviour,
diff --git a/src/electron/ipc-api/appIndicator.js b/src/electron/ipc-api/appIndicator.js
index 9957ef5fc..bea8e7751 100644
--- a/src/electron/ipc-api/appIndicator.js
+++ b/src/electron/ipc-api/appIndicator.js
@@ -25,6 +25,19 @@ export default (params) => {
25 }); 25 });
26 26
27 ipcMain.on('updateAppIndicator', (event, args) => { 27 ipcMain.on('updateAppIndicator', (event, args) => {
28
29 // Flash TaskBar for windows, bounce Dock on Mac
30 if (!app.mainWindow.isFocused()) {
31 if (params.settings.app.get('notifyTaskBarOnMessage')) {
32 if (process.platform === 'win32') {
33 app.mainWindow.flashFrame(true);
34 app.mainWindow.once('focus', () => app.mainWindow.flashFrame(false));
35 } else if (process.platform === 'darwin') {
36 app.dock.bounce('informational');
37 }
38 }
39 }
40
28 // Update badge 41 // Update badge
29 if (process.platform === 'darwin' 42 if (process.platform === 'darwin'
30 && typeof (args.indicator) === 'string') { 43 && typeof (args.indicator) === 'string') {
diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json
index 9bf4fcc15..a08dd9bb0 100644
--- a/src/i18n/locales/en-US.json
+++ b/src/i18n/locales/en-US.json
@@ -311,6 +311,7 @@
311 "settings.app.form.navigationBarBehaviour": "Navigation bar behaviour", 311 "settings.app.form.navigationBarBehaviour": "Navigation bar behaviour",
312 "settings.app.form.predefinedTodoServer": "Todo Server", 312 "settings.app.form.predefinedTodoServer": "Todo Server",
313 "settings.app.form.privateNotifications": "Don't show message content in notifications", 313 "settings.app.form.privateNotifications": "Don't show message content in notifications",
314 "settings.app.form.notifyTaskBarOnMessage": "Notify TaskBar/Dock on new message",
314 "settings.app.form.reloadAfterResume": "Reload Ferdi after system resume", 315 "settings.app.form.reloadAfterResume": "Reload Ferdi after system resume",
315 "settings.app.form.runInBackground": "Keep Ferdi in background when closing the window", 316 "settings.app.form.runInBackground": "Keep Ferdi in background when closing the window",
316 "settings.app.form.scheduledDNDEnabled": "Enable scheduled Do-not-Disturb", 317 "settings.app.form.scheduledDNDEnabled": "Enable scheduled Do-not-Disturb",