diff --git a/src/main/PoeWindow.ts b/src/main/PoeWindow.ts index 1649485e..55735857 100644 --- a/src/main/PoeWindow.ts +++ b/src/main/PoeWindow.ts @@ -2,7 +2,7 @@ import { Rectangle, BrowserWindow, Point } from 'electron' import { EventEmitter } from 'events' import { logger } from './logger' import { config } from './config' -import { overlayWindow as OW } from 'electron-overlay-window' +import { overlayWindow as OW, AttachEvent } from 'electron-overlay-window' interface PoeWindowClass { on(event: 'active-change', listener: (isActive: boolean) => void): this @@ -54,6 +54,12 @@ class PoeWindowClass extends EventEmitter { OW.attachTo(window, config.get('windowTitle')) } + + onceAttached (cb: (hasAccess: boolean | undefined) => void) { + OW.once('attach', (e: AttachEvent) => { + cb(e.hasAccess) + }) + } } export const PoeWindow = new PoeWindowClass() diff --git a/src/main/overlay-window.ts b/src/main/overlay-window.ts index 53213994..6f1a0286 100644 --- a/src/main/overlay-window.ts +++ b/src/main/overlay-window.ts @@ -1,5 +1,5 @@ import path from 'path' -import { BrowserWindow, ipcMain } from 'electron' +import { BrowserWindow, ipcMain, dialog } from 'electron' import { PoeWindow } from './PoeWindow' import { logger } from './logger' import { OVERLAY_READY, FOCUS_CHANGE } from '@/ipc/ipc-event' @@ -56,6 +56,18 @@ export async function createOverlayWindow () { overlayWindow.webContents.send(FOCUS_CHANGE, { game: isActive, overlay: isInteractable }) }) + PoeWindow.onceAttached((hasAccess) => { + if (hasAccess === false) { + dialog.showErrorBox( + 'PoE window - No access', + // ---------------------- + 'Path of Exile is running with administrator rights.\n' + + '\n' + + 'You need to restart Awakened PoE Trade with administrator rights.' + ) + } + }) + const electronReadyToShow = new Promise((resolve) => { overlayWindow!.once('ready-to-show', resolve) })