From 49ee4f87b5dec41ec4423189c2ca768848490b18 Mon Sep 17 00:00:00 2001 From: Samuel Elliott Date: Thu, 9 Jun 2022 17:14:56 +0100 Subject: [PATCH] Windows and save presence URLs --- .vscode/launch.json | 2 +- src/app/main/index.ts | 13 +++++++++++-- src/app/main/ipc.ts | 4 ++++ src/app/main/windows.ts | 13 ++----------- 4 files changed, 18 insertions(+), 14 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 376b213..3a9cc68 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -14,7 +14,7 @@ "runtimeExecutable": "${workspaceFolder}/node_modules/electron/dist/Electron.app/Contents/MacOS/Electron" }, "windows": { - "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron.cmd" + "runtimeExecutable": "${workspaceFolder}/node_modules/electron/dist/electron.exe" }, "args": [ "dist/app/main/app-entry.cjs" diff --git a/src/app/main/index.ts b/src/app/main/index.ts index 1d1d790..bf2a8de 100644 --- a/src/app/main/index.ts +++ b/src/app/main/index.ts @@ -161,13 +161,13 @@ export class Store extends EventEmitter { }); } - if (monitor.presence_user && !state.discord_presence) { + if (monitor.presence_enabled && !state.discord_presence) { state.discord_presence = monitor instanceof EmbeddedProxyPresenceMonitor ? { url: monitor.presence_url, } : { na_id: monitor.data.user.id, friend_nsa_id: monitor.presence_user === monitor.data.nsoAccount.user.nsaId ? undefined : - monitor.presence_user, + monitor.presence_user ?? undefined, }; } } @@ -207,5 +207,14 @@ export class Store extends EventEmitter { err instanceof Error ? err.stack ?? err.message : err as any); } } + + if (state.discord_presence && 'url' in state.discord_presence) { + try { + await monitors.startUrl(state.discord_presence.url); + } catch (err) { + dialog.showErrorBox('Error restoring monitor for presence URL ' + state.discord_presence.url, + err instanceof Error ? err.stack ?? err.message : err as any); + } + } } } diff --git a/src/app/main/ipc.ts b/src/app/main/ipc.ts index 9357df5..dd13e3b 100644 --- a/src/app/main/ipc.ts +++ b/src/app/main/ipc.ts @@ -76,6 +76,8 @@ export function setupIpc(appinstance: App, ipcMain: IpcMain) { parent: BrowserWindow.fromWebContents(e.sender) ?? undefined, modal: true, show: false, + maximizable: false, + minimizable: false, width: 560, height: 300, minWidth: 450, @@ -87,6 +89,8 @@ export function setupIpc(appinstance: App, ipcMain: IpcMain) { parent: BrowserWindow.fromWebContents(e.sender) ?? undefined, modal: true, show: false, + maximizable: false, + minimizable: false, width: 560, height: 300, minWidth: 450, diff --git a/src/app/main/windows.ts b/src/app/main/windows.ts index 29eb27b..06afb54 100644 --- a/src/app/main/windows.ts +++ b/src/app/main/windows.ts @@ -6,8 +6,8 @@ import { bundlepath } from './util.js'; import { app_menu, createWindowMenu } from './app-menu.js'; import { WebService } from '../../api/znc-types.js'; -const windows = new Map(); -const menus = new Map(); +const windows = new WeakMap(); +const menus = new WeakMap(); app.on('browser-window-focus', (event, window) => { Menu.setApplicationMenu(menus.get(window) ?? app_menu); @@ -44,11 +44,6 @@ export function createWindow( windows.set(window.webContents, data); menus.set(window, createWindowMenu(window)); - window.on('closed', () => { - windows.delete(window.webContents); - menus.delete(window); - }); - window.loadFile(path.join(bundlepath, 'index.html')); if (dev) window.webContents.openDevTools(); @@ -85,9 +80,5 @@ export function createWebServiceWindow(nsa_id: string, webservice: WebService, t menus.set(window, createWindowMenu(window)); - window.on('closed', () => { - menus.delete(window); - }); - return window; }