[🔄 Chore] Prepare for Aikari (1/2)

1. [/] 一些无意义的重命名工作
2. [*] 修改了 WebSocket 对接逻辑
This commit is contained in:
Minoricew
2025-11-14 02:58:09 +08:00
committed by Minorice
parent 5a29e909f2
commit 08290301a3
33 changed files with 1006 additions and 926 deletions

View File

@@ -0,0 +1,80 @@
// @ts-check
const { genRandomHex } = require("../../utils/crypto");
const IPC_METHOD_BASE = "$aura.aikari";
/** @type {Map<string, any>} */
const wsGetCallbacks = new Map();
const actions = {
getAikariVersion: async (originalAikariStates, wsObj) => {
const eventId = genRandomHex();
wsObj.send(
JSON.stringify({
module: "launcher",
eventId: eventId,
method: "basic.props.getVersion",
data: {},
})
);
const promise = new Promise((resolve) => {
wsGetCallbacks.set(eventId, resolve);
});
const data = await promise;
if (data.success) {
originalAikariStates.version = data.data.version;
console.debug(
"[HugoAura / UI / Aikari OCMS] Updated Aikari version info: " +
data.data.version
);
}
},
getAikariLauncherConfig: async (wsObj) => {
const eventId = genRandomHex();
wsObj.send(
JSON.stringify({
module: "launcher",
eventId,
method: "config.actions.getConfig",
data: {},
})
);
const promise = new Promise((resolve) => {
wsGetCallbacks.set(eventId, resolve);
});
const data = await promise;
if (data.success) {
console.debug(
"[HugoAura / UI / Aikari OCMS] Received Aikari launcher config: ",
data
);
return data.data;
} else {
return null;
}
},
};
const onAikariConnectedMsgSeq = async ({ curAikariStates, wsObj }) => {
const updatedAikariStates = { ...curAikariStates };
const onMsgRecvListener = (data) => {
if (wsGetCallbacks.has(data.detail.eventId)) {
wsGetCallbacks.get(data.detail.eventId)(data.detail);
}
};
document.addEventListener("onAikariMessageRecv", onMsgRecvListener);
// Get Aikari Version
await actions.getAikariVersion(updatedAikariStates, wsObj);
const aikariLauncherConfig = await actions.getAikariLauncherConfig(wsObj);
if (aikariLauncherConfig) {
global.ipcRenderer.invoke(
`${IPC_METHOD_BASE}.updateAikariSettings`,
aikariLauncherConfig
);
}
return updatedAikariStates;
};
module.exports = { onAikariConnectedMsgSeq };

View File

@@ -0,0 +1,30 @@
// @ts-check
const REQUIRE_BASE = ".";
const { basicRouteHandler } = require(`${REQUIRE_BASE}/routes/basic`);
const { configRouteHandler } = require(`${REQUIRE_BASE}/routes/config`);
/**
*
* @param {AikariPush} parsedWsMsg
* @returns
*/
const pushMsgHandler = (parsedWsMsg) => {
if (!parsedWsMsg.type) return false;
const msgCategory = parsedWsMsg.type.split(".")[0];
switch (msgCategory) {
case "basic":
basicRouteHandler(parsedWsMsg);
break;
case "config":
configRouteHandler(parsedWsMsg);
break;
default:
break;
}
};
module.exports = { pushMsgHandler };

View File

@@ -0,0 +1,49 @@
// @ts-check
const IPC_METHOD_BASE = "$aura.aikari";
// TODO: REFACTOR
/**
*
* @param {AikariPush} parsedWsMsg
* @returns
*/
const basicRouteHandler = (parsedWsMsg) => {
const target = parsedWsMsg.type.split(".").slice(-1)[0];
switch (target) {
case "pushPlsInfo":
if (global.__HUGO_AURA__.aikariStats) {
global.__HUGO_AURA__.aikariStats.status = parsedWsMsg.data.status;
global.__HUGO_AURA__.aikariStats.version = parsedWsMsg.data.version;
}
global.ipcRenderer.invoke(
`${IPC_METHOD_BASE}.updateAikariStatus`,
global.__HUGO_AURA__.aikariStats
);
console.debug(
"[HugoAura / UI / Aikari Routes / DEBUG] Updated aikariStats basic info:",
global.__HUGO_AURA__.aikariStats
);
break;
case "plsNotReadyError":
if (global.__HUGO_AURA__.aikariStats) {
global.__HUGO_AURA__.aikariStats.launched = true;
global.__HUGO_AURA__.aikariStats.connected = false;
global.__HUGO_AURA__.aikariStats.status = "notReady";
}
global.ipcRenderer.invoke(
`${IPC_METHOD_BASE}.updateAikariStatus`,
global.__HUGO_AURA__.aikariStats
);
break;
default:
return false;
}
return true;
};
module.exports = { basicRouteHandler };

View File

@@ -0,0 +1,32 @@
// @ts-check
const IPC_METHOD_BASE = "$aura.aikari";
/**
*
* @param {AikariPush} parsedWsMsg
* @returns
*/
const configRouteHandler = (parsedWsMsg) => {
const target = parsedWsMsg.type.split(".").slice(-1)[0];
switch (target) {
case "pushBasicConfig":
global.ipcRenderer.invoke(
`${IPC_METHOD_BASE}.updateAikariSettings`,
parsedWsMsg.data
);
break;
case "pushRuleSettings":
global.ipcRenderer.invoke(
`${IPC_METHOD_BASE}.updateAikariRules`,
parsedWsMsg.data
);
break;
default:
return false;
}
return true;
};
module.exports = { configRouteHandler };