diff options
author | Vijay A <avijayr@protonmail.com> | 2021-08-13 09:07:33 +0530 |
---|---|---|
committer | Vijay Raghavan Aravamudhan <vraravam@users.noreply.github.com> | 2021-08-13 07:32:56 +0000 |
commit | b2eef1daaa41313257e3f439d4d5604314c9ae2c (patch) | |
tree | 5fc0d7ff2d9c94d783ad166307f9e550a34086a2 /src | |
parent | chore: Replace old '@meetfranz/electron-notification-state' with 'macos-notif... (diff) | |
download | ferdium-app-b2eef1daaa41313257e3f439d4d5604314c9ae2c.tar.gz ferdium-app-b2eef1daaa41313257e3f439d4d5604314c9ae2c.tar.zst ferdium-app-b2eef1daaa41313257e3f439d4d5604314c9ae2c.zip |
fix(App): Fix app focus detection
Diffstat (limited to 'src')
-rw-r--r-- | src/electron/ipc-api/focusState.js | 9 | ||||
-rw-r--r-- | src/electron/ipc-api/index.js | 2 | ||||
-rw-r--r-- | src/helpers/visibility-helper.js | 27 | ||||
-rw-r--r-- | src/index.js | 7 | ||||
-rw-r--r-- | src/stores/AppStore.js | 8 |
5 files changed, 20 insertions, 33 deletions
diff --git a/src/electron/ipc-api/focusState.js b/src/electron/ipc-api/focusState.js new file mode 100644 index 000000000..0b4a0d8f3 --- /dev/null +++ b/src/electron/ipc-api/focusState.js | |||
@@ -0,0 +1,9 @@ | |||
1 | export default (params) => { | ||
2 | params.mainWindow.on('focus', () => { | ||
3 | params.mainWindow.webContents.send('isWindowFocused', true); | ||
4 | }); | ||
5 | |||
6 | params.mainWindow.on('blur', () => { | ||
7 | params.mainWindow.webContents.send('isWindowFocused', false); | ||
8 | }); | ||
9 | }; | ||
diff --git a/src/electron/ipc-api/index.js b/src/electron/ipc-api/index.js index 999ac7d2d..5da1edc39 100644 --- a/src/electron/ipc-api/index.js +++ b/src/electron/ipc-api/index.js | |||
@@ -5,6 +5,7 @@ import download from './download'; | |||
5 | import localServer from './localServer'; | 5 | import localServer from './localServer'; |
6 | import cld from './cld'; | 6 | import cld from './cld'; |
7 | import dnd from './dnd'; | 7 | import dnd from './dnd'; |
8 | import focusState from './focusState'; | ||
8 | 9 | ||
9 | export default (params) => { | 10 | export default (params) => { |
10 | settings(params); | 11 | settings(params); |
@@ -14,4 +15,5 @@ export default (params) => { | |||
14 | localServer(params); | 15 | localServer(params); |
15 | cld(params); | 16 | cld(params); |
16 | dnd(); | 17 | dnd(); |
18 | focusState(params); | ||
17 | }; | 19 | }; |
diff --git a/src/helpers/visibility-helper.js b/src/helpers/visibility-helper.js deleted file mode 100644 index 8456c4ecf..000000000 --- a/src/helpers/visibility-helper.js +++ /dev/null | |||
@@ -1,27 +0,0 @@ | |||
1 | export function onVisibilityChange(cb) { | ||
2 | let isVisible = true; | ||
3 | |||
4 | if (!cb) { | ||
5 | throw new Error('no callback given'); | ||
6 | } | ||
7 | |||
8 | function focused() { | ||
9 | if (!isVisible) { | ||
10 | cb(isVisible = true); | ||
11 | } | ||
12 | } | ||
13 | |||
14 | function unfocused() { | ||
15 | if (isVisible) { | ||
16 | cb(isVisible = false); | ||
17 | } | ||
18 | } | ||
19 | |||
20 | document.addEventListener('visibilitychange', () => { (document.hidden ? unfocused : focused)(); }); | ||
21 | |||
22 | window.onpageshow = focused; | ||
23 | window.onfocus = focused; | ||
24 | |||
25 | window.onpagehid = unfocused; | ||
26 | window.onblur = unfocused; | ||
27 | } | ||
diff --git a/src/index.js b/src/index.js index d97f2cf09..b1d4907cc 100644 --- a/src/index.js +++ b/src/index.js | |||
@@ -455,7 +455,12 @@ ipcMain.on('open-browser-window', (e, { url, serviceId }) => { | |||
455 | const serviceSession = session.fromPartition(`persist:service-${serviceId}`); | 455 | const serviceSession = session.fromPartition(`persist:service-${serviceId}`); |
456 | const child = new BrowserWindow({ | 456 | const child = new BrowserWindow({ |
457 | parent: mainWindow, | 457 | parent: mainWindow, |
458 | webPreferences: { session: serviceSession }, | 458 | webPreferences: { |
459 | session: serviceSession, | ||
460 | // TODO: Aren't these needed here? | ||
461 | // contextIsolation: false, | ||
462 | // enableRemoteModule: true, | ||
463 | }, | ||
459 | }); | 464 | }); |
460 | child.show(); | 465 | child.show(); |
461 | child.loadURL(url); | 466 | child.loadURL(url); |
diff --git a/src/stores/AppStore.js b/src/stores/AppStore.js index 180f01af6..72ddc2927 100644 --- a/src/stores/AppStore.js +++ b/src/stores/AppStore.js | |||
@@ -27,7 +27,6 @@ import { | |||
27 | ferdiLocale, | 27 | ferdiLocale, |
28 | } from '../environment'; | 28 | } from '../environment'; |
29 | import locales from '../i18n/translations'; | 29 | import locales from '../i18n/translations'; |
30 | import { onVisibilityChange } from '../helpers/visibility-helper'; | ||
31 | import { getLocale } from '../helpers/i18n-helpers'; | 30 | import { getLocale } from '../helpers/i18n-helpers'; |
32 | 31 | ||
33 | import { | 32 | import { |
@@ -221,10 +220,9 @@ export default class AppStore extends Store { | |||
221 | 220 | ||
222 | this.isSystemDarkModeEnabled = nativeTheme.shouldUseDarkColors; | 221 | this.isSystemDarkModeEnabled = nativeTheme.shouldUseDarkColors; |
223 | 222 | ||
224 | onVisibilityChange((isVisible) => { | 223 | ipcRenderer.on('isWindowFocused', (event, isFocused) => { |
225 | this.isFocused = isVisible; | 224 | debug('Setting is focused to', isFocused); |
226 | 225 | this.isFocused = isFocused; | |
227 | debug('Window is visible/focused', isVisible); | ||
228 | }); | 226 | }); |
229 | 227 | ||
230 | powerMonitor.on('suspend', () => { | 228 | powerMonitor.on('suspend', () => { |