diff --git a/src/aura/init/main/ipcModules/plsIpcHandler.js b/src/aura/init/main/ipcModules/plsIpcHandler.js index ffc11f7..b6ed349 100755 --- a/src/aura/init/main/ipcModules/plsIpcHandler.js +++ b/src/aura/init/main/ipcModules/plsIpcHandler.js @@ -227,7 +227,7 @@ const applyPlsIpcHandler = (ipcMain) => { launched: false, detached: isPlsDetached, connected: false, - version: "未知", + version: "unknown", status: "dead", authToken: global.__HUGO_AURA_CONFIG__.plsToken, }; @@ -490,12 +490,42 @@ const applyPlsIpcHandler = (ipcMain) => { PLS_BIN_PATH, "--startup auto install" ); - case "rmSvc": - return await functions.execCommand(logHeader, PLS_BIN_PATH, "remove"); + case "rmSvc": { + const result = await functions.execCommand( + logHeader, + PLS_BIN_PATH, + "remove" + ); + return result; + } case "startSvc": return await functions.execCommand(logHeader, PLS_BIN_PATH, "start"); - case "stopSvc": - return await functions.execCommand(logHeader, PLS_BIN_PATH, "stop"); + case "stopSvc": { + const result = await functions.execCommand( + logHeader, + PLS_BIN_PATH, + "stop" + ); + if (result.success && global.__HUGO_AURA__.plsStats) { + global.__HUGO_AURA__.plsStats.connected = false; + global.__HUGO_AURA__.plsStats.launched = false; + global.__HUGO_AURA__.plsStats.version = "unknown"; + global.__HUGO_AURA__.plsStats.status = "dead"; + + ipcMain.send( + "assistant", + `${methodBase}.post.onPlsStatsUpdate`, + global.__HUGO_AURA__.plsStats + ); + + ipcMain.send( + "auraWsKeepAlive", + `${methodBase}.post.plsStopped`, + {} + ); + } + return result; + } case "rmBin": const unlinkPromise = new Promise((resolve) => { fs.unlink(PLS_BIN_PATH, (error) => { @@ -521,6 +551,19 @@ const applyPlsIpcHandler = (ipcMain) => { const unlinkRet = await unlinkPromise; + if (unlinkRet.success && global.__HUGO_AURA__.plsStats) { + global.__HUGO_AURA__.plsStats.connected = false; + global.__HUGO_AURA__.plsStats.launched = false; + global.__HUGO_AURA__.plsStats.installed = false; + global.__HUGO_AURA__.plsStats.version = "unknown"; + + ipcMain.send( + "assistant", + `${methodBase}.post.onPlsStatsUpdate`, + global.__HUGO_AURA__.plsStats + ); + } + return unlinkRet; default: return { success: false, errorObj: new Error("Method not found") }; diff --git a/src/aura/ui/js/plsConnectionManager.js b/src/aura/ui/js/plsConnectionManager.js index d71bef1..14ed7d2 100755 --- a/src/aura/ui/js/plsConnectionManager.js +++ b/src/aura/ui/js/plsConnectionManager.js @@ -14,7 +14,7 @@ connected: false, launched: false, status: "dead", - version: "未知", + version: "unknown", authToken: "", }; @@ -157,6 +157,13 @@ sendRetryStatusToMain(false); return; } + + if (global.__HUGO_AURA__.plsStats.launched === false) { + console.warn( + "[HugoAura / UI / PLS Manager / WARN] PLS stopped, closing WebSocket connection." + ); + return; + } } console.error( @@ -274,7 +281,7 @@ launched: false, detached: false, connected: false, - version: "未知", + version: "unknown", status: "dead", authToken: "66ccff0d000721114514191981023333", }; @@ -332,6 +339,16 @@ initPlsConnection(); } ); + + global.ipcRenderer.on( + `${IPC_METHOD_BASE}.post.plsStopped`, + (_evt, _arg) => { + if (!global.__HUGO_AURA__.plsStats) return; + global.__HUGO_AURA__.plsStats.launched = false; + global.__HUGO_AURA__.plsStats.connected = false; + global.__HUGO_AURA__.plsStats.version = "unknown"; + } + ); }; setTimeout(() => { diff --git a/src/aura/ui/pages/config/config.js b/src/aura/ui/pages/config/config.js index 15021a2..a15f9d7 100755 --- a/src/aura/ui/pages/config/config.js +++ b/src/aura/ui/pages/config/config.js @@ -359,7 +359,8 @@ global.__HUGO_AURA_UI_FUNCTIONS__.config = { let timeout = 0; Array.from(operationElArr).forEach((el) => { setTimeout(() => { - el.className = "operation-el-show aura-config-page-operation-el"; + el.classList.remove("operation-el-hidden"); + el.classList.add("operation-el-show"); }, timeout); timeout += 150; }); diff --git a/src/aura/ui/pages/configSubPages/behaviourCtrl/plsStatus.js b/src/aura/ui/pages/configSubPages/behaviourCtrl/plsStatus.js index fb4f4e1..92f1958 100755 --- a/src/aura/ui/pages/configSubPages/behaviourCtrl/plsStatus.js +++ b/src/aura/ui/pages/configSubPages/behaviourCtrl/plsStatus.js @@ -331,6 +331,10 @@ if (!global.__HUGO_AURA_UI_REACTIVES__.subConfig) ); if (ret.success) { lifecycleStatus.svcRunning = false; + global.__HUGO_AURA__.plsStats.launched = false; + global.__HUGO_AURA__.plsStats.version = "unknown"; + global.__HUGO_AURA__.plsStats.status = "dead"; + global.__HUGO_AURA_UI_FUNCTIONS__.subConfig.plsStatus.updateToast( "success", "PLS 已停止", @@ -442,11 +446,11 @@ if (!global.__HUGO_AURA_UI_REACTIVES__.subConfig) break; } - if (curPlsStats.version && curPlsStats.version !== "未知") { - const versionTextEl = document.getElementById( - "acs-bc-psp-version-text" - ); + const versionTextEl = document.getElementById("acs-bc-psp-version-text"); + if (curPlsStats.version && curPlsStats.version !== "unknown") { versionTextEl.textContent = "v" + curPlsStats.version; + } else { + versionTextEl.textContent = "不可用" } },