feat: implement lazy singleton pattern for repository instances and update related imports
This commit is contained in:
@@ -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>>(
|
||||
|
||||
Reference in New Issue
Block a user