diff --git a/electron.js b/electron.js index 961c9e9d93..de85fa332c 100644 --- a/electron.js +++ b/electron.js @@ -94,7 +94,7 @@ function waitForLibraryAndCreateWindows () { // MacOs 12.2 (M1): doesn't fire on manual theme switch nativeTheme.on('updated', () => { MenuManager.updateTrayIcon(); - WindowManager.updateTheme(); + WindowManager.sendToAll('native-theme', Util.isDarkTheme()); }); function createWindow () { diff --git a/electron/js/api.js b/electron/js/api.js index 37d4953184..2f6fc7c09e 100644 --- a/electron/js/api.js +++ b/electron/js/api.js @@ -33,6 +33,14 @@ class Api { win.route = ''; }; + logout (win) { + WindowManager.sendToAll('logout'); + }; + + pinCheck (win) { + WindowManager.sendToAll('pin-check'); + }; + setConfig (win, config) { ConfigManager.set(config, (err) => Util.send(win, 'config', ConfigManager.config)); }; diff --git a/electron/js/window.js b/electron/js/window.js index ff4ff43e2c..9fdbb90d9c 100644 --- a/electron/js/window.js +++ b/electron/js/window.js @@ -203,16 +203,11 @@ class WindowManager { }; }; - updateTheme () { - this.list.forEach(it => { - Util.send(it, 'native-theme', Util.isDarkTheme()); - }); - }; - getWindowPosition (param, displayWidth, displayHeight) { + const currentWindow = BrowserWindow.getFocusedWindow(); + let x = Math.round(displayWidth / 2 - param.width / 2); let y = Math.round(displayHeight / 2 - param.height / 2 + 20); - const currentWindow = BrowserWindow.getFocusedWindow(); if (currentWindow) { const [xPos, yPos] = currentWindow.getPosition(); @@ -232,6 +227,13 @@ class WindowManager { return { x, y }; }; + sendToAll () { + const args = [ ...arguments ]; + this.list.forEach(it => { + Util.send.apply(this, [ it ].concat(args)); + }); + }; + }; module.exports = new WindowManager(); \ No newline at end of file diff --git a/src/ts/app.tsx b/src/ts/app.tsx index 207f06ad51..2d808ed62a 100644 --- a/src/ts/app.tsx +++ b/src/ts/app.tsx @@ -422,6 +422,13 @@ class App extends React.Component { commonStore.nativeThemeSet(isDark); commonStore.themeSet(commonStore.theme); }); + + Renderer.on('pin-check', () => { + keyboard.setPinChecked(false); + UtilRouter.go('/auth/pin-check', { replace: true, animate: true }); + }); + + Renderer.on('logout', () => authStore.logout(false)); }; onInit (e: any, data: any) { diff --git a/src/ts/component/popup/page/settings/logout.tsx b/src/ts/component/popup/page/settings/logout.tsx index 09b9e430d2..694edd5c9e 100644 --- a/src/ts/component/popup/page/settings/logout.tsx +++ b/src/ts/component/popup/page/settings/logout.tsx @@ -1,9 +1,8 @@ import * as React from 'react'; import { Title, Label, Button, Phrase } from 'Component'; -import { I, C, translate, analytics, UtilCommon, Preview, UtilRouter } from 'Lib'; +import { I, C, translate, analytics, UtilCommon, UtilRouter, Renderer } from 'Lib'; import { authStore } from 'Store'; import { observer } from 'mobx-react'; -import Head from './head'; interface State { entropy: string; @@ -85,6 +84,8 @@ const PopupSettingsPageLogout = observer(class PopupSettingsPageLogout extends R onFadeIn: () => { authStore.logout(false); setPinConfirmed(false); + + Renderer.send('logout'); }, }); }; diff --git a/src/ts/lib/keyboard.ts b/src/ts/lib/keyboard.ts index 6d7b79f305..b9ca33578c 100644 --- a/src/ts/lib/keyboard.ts +++ b/src/ts/lib/keyboard.ts @@ -917,6 +917,7 @@ class Keyboard { this.setPinChecked(false); UtilRouter.go('/auth/pin-check', { replace: true, animate: true }); + Renderer.send('pin-check'); }, pinTime); };