feat: implement lazy singleton pattern for repository instances and update related imports

This commit is contained in:
2026-06-29 17:25:41 +08:00
parent 96612da5c0
commit 0bae53bfba
14 changed files with 69 additions and 74 deletions
+9 -17
View File
@@ -1,17 +1,5 @@
"use client";
/**
* AuthRepository
*
* 认证仓库:编排远程 API + 本地 AuthStorage + UserStorage。
* 行为对齐原 Dart `lib/data/repositories/auth_repository_impl.dart`
* - 登录成功后调 `_saveLoginData` 持久化 token + User
* - 登出先调 API,再强制清本地态(无论 API 成败)
* - `getCurrentUser` 成功后尽力写本地 User 缓存(不因缓存失败影响主流程)
* - 写 storage 失败用 `Logger.warn` 记录,不让本地缓存失败影响主流程
*
*
*/
import { AuthApi, authApi } from "@/data/services/api";
import {
AppleLoginRequest,
@@ -32,6 +20,7 @@ import { AppEnvUtil, Result, Logger } from "@/utils";
import type { IAuthRepository } from "@/data/repositories/interfaces";
import { AuthStorage, type IAuthStorage } from "@/data/storage/auth";
import { UserStorage, type IUserStorage } from "@/data/storage/user";
import { createLazySingleton } from "./lazy_singleton";
const log = new Logger("DataRepositoriesAuthRepository");
@@ -312,11 +301,14 @@ export class AuthRepository implements IAuthRepository {
}
}
/** 全局单例。 */
export const authRepository = new AuthRepository(
authApi,
AuthStorage.getInstance(),
UserStorage.getInstance(),
/** 全局单例。 */
export const getAuthRepository = createLazySingleton<IAuthRepository>(
() =>
new AuthRepository(
authApi,
AuthStorage.getInstance(),
UserStorage.getInstance(),
),
);
function withTestAccountFlag<T extends Record<string, unknown>>(