aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLibravatar Vijay A <avijayr@protonmail.com>2021-08-13 09:07:33 +0530
committerLibravatar Vijay Raghavan Aravamudhan <vraravam@users.noreply.github.com>2021-08-13 07:32:56 +0000
commitb2eef1daaa41313257e3f439d4d5604314c9ae2c (patch)
tree5fc0d7ff2d9c94d783ad166307f9e550a34086a2 /src
parentchore: Replace old '@meetfranz/electron-notification-state' with 'macos-notif... (diff)
downloadferdium-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.js9
-rw-r--r--src/electron/ipc-api/index.js2
-rw-r--r--src/helpers/visibility-helper.js27
-rw-r--r--src/index.js7
-rw-r--r--src/stores/AppStore.js8
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 @@
1export 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';
5import localServer from './localServer'; 5import localServer from './localServer';
6import cld from './cld'; 6import cld from './cld';
7import dnd from './dnd'; 7import dnd from './dnd';
8import focusState from './focusState';
8 9
9export default (params) => { 10export 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 @@
1export 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';
29import locales from '../i18n/translations'; 29import locales from '../i18n/translations';
30import { onVisibilityChange } from '../helpers/visibility-helper';
31import { getLocale } from '../helpers/i18n-helpers'; 30import { getLocale } from '../helpers/i18n-helpers';
32 31
33import { 32import {
@@ -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', () => {