mirror of
https://github.com/HugoAura/Seewo-HugoAura.git
synced 2026-06-23 17:34:29 +08:00
[🔄 Chore] Prepare for Aikari (1/2)
1. [/] 一些无意义的重命名工作 2. [*] 修改了 WebSocket 对接逻辑
This commit is contained in:
80
src/aura/ui/aikari/onConnectedSeq.js
Normal file
80
src/aura/ui/aikari/onConnectedSeq.js
Normal 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 };
|
||||
30
src/aura/ui/aikari/pushHandler.js
Normal file
30
src/aura/ui/aikari/pushHandler.js
Normal 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 };
|
||||
49
src/aura/ui/aikari/routes/basic.js
Normal file
49
src/aura/ui/aikari/routes/basic.js
Normal 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 };
|
||||
32
src/aura/ui/aikari/routes/config.js
Normal file
32
src/aura/ui/aikari/routes/config.js
Normal 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 };
|
||||
Reference in New Issue
Block a user