Files
18xchat/assets/Scripts/chat18x/network/services/MockAuthService.ts
T
2025-08-29 16:40:14 +08:00

35 lines
1.4 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import type { ApiResponse } from "../client/types";
import proto from "db://assets/Scripts/proto/proto.pb.js";
import type { IAuthService } from "./IAuthService";
export class MockAuthService implements IAuthService {
private delay(ms = 180) { return new Promise<void>(r => setTimeout(r, ms)); }
// 项目里 ApiResponse 结构若固定(code/message 等),把 ok()/err() 调整为你的真实结构即可
private ok<T>(data: T): ApiResponse<T> {
return ({ ok: true, data } as unknown) as ApiResponse<T>;
}
// private err<T = unknown>(message = "mock login error"): ApiResponse<T> {
// return ({ ok: false, error: { message } } as unknown) as ApiResponse<T>;
// }
// 登录
async login(req: proto.cs.ICSLoginReq): Promise<ApiResponse<proto.cs.ICSLoginRes>> {
await this.delay(150);
const name = req?.platType === "guest" ? `guest_${(req?.userId ?? "uid").toString().slice(-6)}` : "tester";
// 注意:protobufjs 会把 int64 表达为 number/Long。这里用「秒」级时间戳更常见
const expireSeconds = Math.floor(Date.now() / 1000) + 7 * 24 * 3600;
// 你的生成器通常会把 refresh_token 转成 refreshTokencamelCase
const res: proto.cs.ICSLoginRes = {
name,
token: `mock_token_${Date.now()}`,
refreshToken: `mock_refresh_${Date.now()}`,
expire: expireSeconds,
};
return this.ok(res);
}
}