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(r => setTimeout(r, ms)); } // 项目里 ApiResponse 结构若固定(code/message 等),把 ok()/err() 调整为你的真实结构即可 private ok(data: T): ApiResponse { return ({ ok: true, data } as unknown) as ApiResponse; } // private err(message = "mock login error"): ApiResponse { // return ({ ok: false, error: { message } } as unknown) as ApiResponse; // } // 登录 async login(req: proto.cs.ICSLoginReq): Promise> { 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 转成 refreshToken(camelCase) const res: proto.cs.ICSLoginRes = { name, token: `mock_token_${Date.now()}`, refreshToken: `mock_refresh_${Date.now()}`, expire: expireSeconds, }; return this.ok(res); } }