diff --git a/src/aura/init/main/ipcModules/plsIpcHandler.js b/src/aura/init/main/ipcModules/plsIpcHandler.js index 29802d1..ffc11f7 100755 --- a/src/aura/init/main/ipcModules/plsIpcHandler.js +++ b/src/aura/init/main/ipcModules/plsIpcHandler.js @@ -418,7 +418,7 @@ const applyPlsIpcHandler = (ipcMain) => { */ (_event, arg) => { ipcMain.send( - "desktopAssistant", + "auraWsKeepAlive", `${methodBase}.ws.post.onReqSendMsg`, arg ); @@ -568,7 +568,7 @@ const applyPlsIpcHandler = (ipcMain) => { status: "Already", }; } else { - ipcMain.send("desktopAssistant", `${methodBase}.retryPlsConnect`, arg); + ipcMain.send("auraWsKeepAlive", `${methodBase}.retryPlsConnect`, arg); return { success: true, diff --git a/src/aura/init/main/windowHooksManager.js b/src/aura/init/main/windowHooksManager.js index e8d860d..0c634b2 100755 --- a/src/aura/init/main/windowHooksManager.js +++ b/src/aura/init/main/windowHooksManager.js @@ -14,7 +14,7 @@ class WindowHooksManager { const hooksPath = path.join(__dirname, "../../../aura/mainProcess/hooks"); - /** @type {import("../../types/main/core").HooksMap} */ + /** @type {import("../../types/main/core").UIHooksMap} */ const hooks = new Map(); try { @@ -55,6 +55,9 @@ class WindowHooksManager { browserWindowInstance ) { const stripWindowName = windowName.split("_")[0]; + + if (!global.__HUGO_AURA__.windowHooks) return; + if (!global.__HUGO_AURA__.windowHooks.has(stripWindowName)) { console.log( `[HugoAura / Init / WDH] Window ${windowName} has no corresponding main process hooks, ignoring...` diff --git a/src/aura/types/render/global.d.ts b/src/aura/types/render/global.d.ts index 49a011a..3bf021a 100755 --- a/src/aura/types/render/global.d.ts +++ b/src/aura/types/render/global.d.ts @@ -8,7 +8,7 @@ interface AssistantHugoAuraGlobal extends HugoAuraGlobal { plsSettings: Record; } -interface DesktopAssistantHugoAuraGlobal extends HugoAuraGlobal { +interface AuraWSKeepAliveWindowHugoAuraGlobal extends HugoAuraGlobal { plsWs: WebSocket | null; plsStats: PLSStatus; } diff --git a/src/aura/ui/hookDefinitions/desktopAssistant.js b/src/aura/ui/hookDefinitions/desktopAssistant.js deleted file mode 100755 index 40fa0de..0000000 --- a/src/aura/ui/hookDefinitions/desktopAssistant.js +++ /dev/null @@ -1,15 +0,0 @@ -// @ts-check - -/** - * @type {import("../../types/render/uiHook").UIHookConfig} - */ -const def = { - targets: {}, - globalStyles: ["ui/css/global.css"], - globalJS: ["ui/js/global.js", "ui/js/plsConnectionManager.js"], - onLoaded: ` - console.log('[HugoAura / UI / Hooks / Desktop Assistant] Page loaded.'); - `, -}; - -module.exports = def; diff --git a/src/aura/ui/js/plsConnectionManager.js b/src/aura/ui/js/plsConnectionManager.js index 20bec23..d71bef1 100755 --- a/src/aura/ui/js/plsConnectionManager.js +++ b/src/aura/ui/js/plsConnectionManager.js @@ -1,5 +1,12 @@ // @ts-check (() => { + if (!global.__HUGO_AURA__) + global.__HUGO_AURA__ = { + configInit: true, + auraDir: "", + version: "", + }; + if (!global.__HUGO_AURA__.plsStats) global.__HUGO_AURA__.plsStats = { installed: false, @@ -12,8 +19,8 @@ }; const IPC_METHOD_BASE = "$aura.pls"; - const REQUIRE_BASE = "../../aura/ui"; - const __SCOPE = "desktopAssistant"; + const REQUIRE_BASE = "../../.."; + const __SCOPE = "auraWsKeepAlive"; const PLS_REG_PATH = "ProxyLayerServices"; @@ -312,7 +319,7 @@ const onSetup = () => { if (!global.ipcRenderer) { // @ts-ignore - global.ipcRenderer = require("electron").global.ipcRenderer; + global.ipcRenderer = require("electron").ipcRenderer; } initPlsConnection(); diff --git a/src/aura/ui/pages/windows/auraWsKeepAlive/index.html b/src/aura/ui/pages/windows/auraWsKeepAlive/index.html new file mode 100644 index 0000000..5689393 --- /dev/null +++ b/src/aura/ui/pages/windows/auraWsKeepAlive/index.html @@ -0,0 +1,16 @@ + + + + Aura WebSocket KeepAlive Window + + + + + + diff --git a/src/aura/utils/pls.js b/src/aura/utils/pls.js new file mode 100644 index 0000000..69f2eec --- /dev/null +++ b/src/aura/utils/pls.js @@ -0,0 +1,39 @@ +// @ts-check + +/** + * @param {Electron} electron + */ +const createWsWindow = (electron) => { + const path = require("path"); + const { BrowserWindow } = electron; + const window = new BrowserWindow({ + width: 0, + height: 0, + frame: false, + skipTaskbar: true, + transparent: true, + alwaysOnTop: true, + webPreferences: { + nodeIntegration: true, + contextIsolation: false, + devTools: true, + }, + }); + + window.setIgnoreMouseEvents(true); + window.loadFile( + path.join( + __dirname, + "..", + "ui", + "pages", + "windows", + "auraWsKeepAlive", + "index.html" + ) + ); + + return window; +}; + +module.exports = { createWsWindow }; diff --git a/src/core/hook.js b/src/core/hook.js index deab11f..fefbd82 100755 --- a/src/core/hook.js +++ b/src/core/hook.js @@ -47,6 +47,7 @@ const NetworkHook = require("../aura/init/rendererHook/networkHook"); const ConfigManager = require("../aura/init/shared/configManager"); const RegistryManager = require("../aura/init/shared/registryManager"); const { buildIpcMain } = require("../aura/init/main/ipcHandler"); +const plsUtils = require("../aura/utils/pls"); const { initLogger } = require("../aura/init/main/logger"); @@ -97,7 +98,10 @@ const launcher = ({ central, windowName, config }) => { app.exit(0); }; - global.__HUGO_AURA__.auraDir = path.join(getUserDocumentsDirPath(), "HugoAura"); + global.__HUGO_AURA__.auraDir = path.join( + getUserDocumentsDirPath(), + "HugoAura" + ); // >>> Init Logger <<< // initLogger(windowName); @@ -146,6 +150,13 @@ const launcher = ({ central, windowName, config }) => { config.canOpenDevTool = true; } + // >>> Create WebSocket KeepAlive Window <<< // + if (!global.__HUGO_AURA__.hookedWindows?.has("auraWsKeepAlive")) { + const wsKaWin = plsUtils.createWsWindow(electron); + // @ts-expect-error + global.__HUGO_AURA__.hookedWindows.set("auraWsKeepAlive", wsKaWin); + } + // >>> Listeners <<< // /**