添加getRegionRoleInfo事件处理

This commit is contained in:
BTMuli
2025-10-25 21:04:04 +08:00
parent 68dead3d84
commit 65e948c34c
5 changed files with 197 additions and 187 deletions

View File

@@ -1,27 +1,26 @@
/**
* @file utils/TGBbs.ts
* @description 关于 BBS 的工具函数
* @since Beta v0.8.0
* 关于 BBS 的工具函数
* @since Beta v0.8.4
*/
/**
* @description salt 类型
* @since Beta v0.7.3
* salt 类型
* @since Beta v0.8.4
*/
export type SaltKey = "K2" | "LK2" | "X4" | "X6" | "PROD";
const BBS_VERSION: Readonly<string> = "2.93.0";
const BBS_VERSION: Readonly<string> = "2.95.1";
const BBS_UA_MOBILE: Readonly<string> = `Mozilla/5.0 (Linux; Android 12) Mobile miHoYoBBS/${BBS_VERSION}`;
const BBS_UA_PC: Readonly<string> = `Mozilla/5.0 (Windows NT 10.0; Win64; x64) miHoYoBBS/${BBS_VERSION}`;
/**
* @description salt 值
* @version 2.93.0
* @since Beta v0.8.0
* salt 值
* @version 2.95.1
* @since Beta v0.8.4
*/
const BBS_SALT: Readonly<Record<SaltKey, string>> = {
K2: "idMMaGYmVgPzh3wxmWudUXKUPGidO7GM",
LK2: "G1ktdwFL4IyGkHuuWSmz0wUe9Db9scyK",
K2: "sfYPEgpxkOe1I3XVMLdwp1Lyt9ORgZsq",
LK2: "sidQFEglajEz7FA0Aj7HQPV88zpf17SO",
X4: "xV8v4Qu54lUKrEYFZkJhB8cuOh9Asafs",
X6: "t0qEgfub6cvueAPgR5m9aQWWVciEer7v",
PROD: "t0qEgfub6cvueAPgR5m9aQWWVciEer7v",

View File

@@ -1,6 +1,5 @@
/**
* @file utils/TGClient.ts
* @desc 负责米游社客户端的 callback 处理
* 负责米游社客户端的 callback 处理
* @since Beta v0.8.3
*/
@@ -23,9 +22,6 @@ import TGLogger from "./TGLogger.js";
import { createPost } from "./TGWindow.js";
import { getDeviceInfo } from "./toolFunc.js";
// invoke 参数
type InvokeArg = { func: string };
class Client {
private listener: UnlistenFn | undefined;
private route: string[] = [];
@@ -43,10 +39,9 @@ class Client {
}
/**
* @func run
* 运行米游社客户端
* @since Beta v0.3.4
* @desc 运行米游社客户端
* @returns {void} - 无返回值
* @returns Promise<void>
*/
async run(): Promise<void> {
if (this.listener === undefined) {
@@ -58,15 +53,12 @@ class Client {
}
}
/* 内置函数 */
/**
* @func callback
* 回调函数
* @since Beta v0.5.0
* @desc 回调函数
* @param {string} callback - 回调函数名
* @param {object} data - 回调数据
* @returns {void} - 无返回值
* @returns Promise<void>
*/
async callback(callback: string, data: object): Promise<void> {
const response = { retcode: 0, message: "success", data: data ?? {} };
@@ -76,12 +68,11 @@ class Client {
}
/**
* @func getSaveImgJS
* 获取保存图片的 JS
* @since Beta v0.5.1
* @desc 获取保存图片的 JS
* @param {string} url - 图片链接
* @param {string} format - 图片格式
* @returns {string} - JS
* @returns JS代码字符串
*/
getSaveImgJS(url: string, format: string): string {
return `javascript:(async function() {
@@ -104,9 +95,8 @@ class Client {
}
/**
* @func getUrl
* 获取 url
* @since Beta v0.5.0
* @desc 获取 url
* @param {string} func - 方法名
* @returns {string} - url
*/
@@ -130,9 +120,8 @@ class Client {
}
/**
* @func handleCallback
* 处理米游社客户端的 callback
* @since Beta v0.6.1
* @desc 处理米游社客户端的 callback
* @param {Event<string>} arg - 事件参数
* @returns {Promise<void>} - 返回值
*/
@@ -162,14 +151,16 @@ class Client {
<TGApp.Plugins.JSBridge.Arg<TGApp.Plugins.JSBridge.EventTrackPayload>>argParse,
);
break;
case "getStatusBarHeight":
await this.getStatusBarHeight(<TGApp.Plugins.JSBridge.NullArg>argParse);
break;
case "genAuthKey":
await this.genAuthKey(
<TGApp.Plugins.JSBridge.Arg<TGApp.Plugins.JSBridge.GenAuthkeyPayload>>argParse,
);
break;
case "getActionTicket":
await this.getActionTicket(
<TGApp.Plugins.JSBridge.Arg<TGApp.Plugins.JSBridge.GetActionTicketPayload>>argParse,
);
break;
case "getCookieInfo":
await this.getCookieInfo(<TGApp.Plugins.JSBridge.NullArg>argParse);
break;
@@ -178,14 +169,6 @@ class Client {
<TGApp.Plugins.JSBridge.Arg<TGApp.Plugins.JSBridge.GetCookieTokenPayload>>argParse,
);
break;
case "getActionTicket":
await this.getActionTicket(
<TGApp.Plugins.JSBridge.Arg<TGApp.Plugins.JSBridge.GetActionTicketPayload>>argParse,
);
break;
case "getHTTPRequestHeaders":
await this.getHTTPRequestHeaders(<TGApp.Plugins.JSBridge.NullArg>argParse);
break;
case "getDS":
await this.getDS(<TGApp.Plugins.JSBridge.NullArg>argParse);
break;
@@ -194,6 +177,17 @@ class Client {
<TGApp.Plugins.JSBridge.Arg<TGApp.Plugins.JSBridge.GetDS2Payload>>argParse,
);
break;
case "getHTTPRequestHeaders":
await this.getHTTPRequestHeaders(<TGApp.Plugins.JSBridge.NullArg>argParse);
break;
case "getRegionRoleInfo":
await this.getRegionRoleInfo(
<TGApp.Plugins.JSBridge.Arg<TGApp.Plugins.JSBridge.GetRegionRoleInfoPayload>>argParse,
);
break;
case "getStatusBarHeight":
await this.getStatusBarHeight(<TGApp.Plugins.JSBridge.NullArg>argParse);
break;
case "getUserInfo":
await this.getUserInfo(<TGApp.Plugins.JSBridge.NullArg>argParse);
break;
@@ -437,7 +431,7 @@ class Client {
await TGLogger.Error(`[TGClient][open] ${e}`);
}
}
await core.invoke<InvokeArg>("create_mhy_client", { func, url });
await core.invoke("create_mhy_client", { func, url });
await this.loadJSBridge();
}
@@ -657,6 +651,26 @@ class Client {
await this.callback(arg.callback, data);
}
/**
* 获取对应区服的角色信息
* @since Beta v0.8.4
* @param {TGApp.Plugins.JSBridge.Arg<TGApp.Plugins.JSBridge.GetRegionRoleInfoPayload>} arg - 方法参数
* @returns {Promise<void>} - 无返回值
*/
async getRegionRoleInfo(
arg: TGApp.Plugins.JSBridge.Arg<TGApp.Plugins.JSBridge.GetRegionRoleInfoPayload>,
): Promise<void> {
const user = useUserStore();
const data = {
region: user.account.region,
game_uid: user.account.gameUid,
nickname: user.account.nickname,
user_label: user.account.nickname,
region_name: user.account.regionName,
};
await this.callback(arg.callback, data);
}
/**
* @func getUserInfo
* @since Beta v0.3.9