[🛠 Fix] Fix issue #29 & #30

1. [/] 改进 PLS 状态同步逻辑
2. [/] 使用 classList 改变元素样式状态, 而非直接赋值 className, 从而避免 #29
This commit is contained in:
Minoricew
2025-06-21 19:20:01 +08:00
parent ae2e2ff62d
commit 774d999752
4 changed files with 77 additions and 12 deletions

View File

@@ -227,7 +227,7 @@ const applyPlsIpcHandler = (ipcMain) => {
launched: false, launched: false,
detached: isPlsDetached, detached: isPlsDetached,
connected: false, connected: false,
version: "未知", version: "unknown",
status: "dead", status: "dead",
authToken: global.__HUGO_AURA_CONFIG__.plsToken, authToken: global.__HUGO_AURA_CONFIG__.plsToken,
}; };
@@ -490,12 +490,42 @@ const applyPlsIpcHandler = (ipcMain) => {
PLS_BIN_PATH, PLS_BIN_PATH,
"--startup auto install" "--startup auto install"
); );
case "rmSvc": case "rmSvc": {
return await functions.execCommand(logHeader, PLS_BIN_PATH, "remove"); const result = await functions.execCommand(
logHeader,
PLS_BIN_PATH,
"remove"
);
return result;
}
case "startSvc": case "startSvc":
return await functions.execCommand(logHeader, PLS_BIN_PATH, "start"); return await functions.execCommand(logHeader, PLS_BIN_PATH, "start");
case "stopSvc": case "stopSvc": {
return await functions.execCommand(logHeader, PLS_BIN_PATH, "stop"); 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": case "rmBin":
const unlinkPromise = new Promise((resolve) => { const unlinkPromise = new Promise((resolve) => {
fs.unlink(PLS_BIN_PATH, (error) => { fs.unlink(PLS_BIN_PATH, (error) => {
@@ -521,6 +551,19 @@ const applyPlsIpcHandler = (ipcMain) => {
const unlinkRet = await unlinkPromise; 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; return unlinkRet;
default: default:
return { success: false, errorObj: new Error("Method not found") }; return { success: false, errorObj: new Error("Method not found") };

View File

@@ -14,7 +14,7 @@
connected: false, connected: false,
launched: false, launched: false,
status: "dead", status: "dead",
version: "未知", version: "unknown",
authToken: "", authToken: "",
}; };
@@ -157,6 +157,13 @@
sendRetryStatusToMain(false); sendRetryStatusToMain(false);
return; return;
} }
if (global.__HUGO_AURA__.plsStats.launched === false) {
console.warn(
"[HugoAura / UI / PLS Manager / WARN] PLS stopped, closing WebSocket connection."
);
return;
}
} }
console.error( console.error(
@@ -274,7 +281,7 @@
launched: false, launched: false,
detached: false, detached: false,
connected: false, connected: false,
version: "未知", version: "unknown",
status: "dead", status: "dead",
authToken: "66ccff0d000721114514191981023333", authToken: "66ccff0d000721114514191981023333",
}; };
@@ -332,6 +339,16 @@
initPlsConnection(); 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(() => { setTimeout(() => {

View File

@@ -359,7 +359,8 @@ global.__HUGO_AURA_UI_FUNCTIONS__.config = {
let timeout = 0; let timeout = 0;
Array.from(operationElArr).forEach((el) => { Array.from(operationElArr).forEach((el) => {
setTimeout(() => { 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);
timeout += 150; timeout += 150;
}); });

View File

@@ -331,6 +331,10 @@ if (!global.__HUGO_AURA_UI_REACTIVES__.subConfig)
); );
if (ret.success) { if (ret.success) {
lifecycleStatus.svcRunning = false; 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( global.__HUGO_AURA_UI_FUNCTIONS__.subConfig.plsStatus.updateToast(
"success", "success",
"PLS 已停止", "PLS 已停止",
@@ -442,11 +446,11 @@ if (!global.__HUGO_AURA_UI_REACTIVES__.subConfig)
break; break;
} }
if (curPlsStats.version && curPlsStats.version !== "未知") { const versionTextEl = document.getElementById("acs-bc-psp-version-text");
const versionTextEl = document.getElementById( if (curPlsStats.version && curPlsStats.version !== "unknown") {
"acs-bc-psp-version-text"
);
versionTextEl.textContent = "v" + curPlsStats.version; versionTextEl.textContent = "v" + curPlsStats.version;
} else {
versionTextEl.textContent = "不可用"
} }
}, },