import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:im_app/app/di/network_provider.dart'; import 'package:im_app/app/di/db_provider.dart'; import 'package:im_app/core/services/socket_manager.dart'; import 'package:im_app/features/login/di/auth_providers.dart'; import 'package:im_app/features/settings/usecases/set_theme_usecase.dart'; import 'package:im_app/features/settings/usecases/fetch_profile_usecase.dart'; import 'package:im_app/features/settings/usecases/logout_usecase.dart'; import 'package:im_app/features/settings/usecases/update_profile_usecase.dart'; /// Settings feature DI 装配 /// /// ``` /// SettingsViewModel /// → fetchProfileUseCaseProvider → GET /app/api/user/profile /// → logoutUseCaseProvider → POST /app/api/auth/logout + WS + DB /// /// EditProfileViewModel /// → updateProfileUseCaseProvider → POST /app/api/user/update-profile /// /// ThemeViewModel /// → setThemeUseCaseProvider → ThemeModeNotifier(内存 + 持久化 TODO) /// ``` // ── Theme ───────────────────────────────────────────────────────────────────── /// 设置主题用例 Provider final setThemeUseCaseProvider = Provider( (_) => const SetThemeUseCase(), ); // ── Profile ──────────────────────────────────────────────────────────────────── /// 获取当前用户资料用例 Provider final fetchProfileUseCaseProvider = Provider((ref) { return FetchProfileUseCase(client: ref.read(networkSdkApiProvider)); }); /// 更新用户资料用例 Provider final updateProfileUseCaseProvider = Provider((ref) { return UpdateProfileUseCase(client: ref.read(networkSdkApiProvider)); }); // ── Auth ─────────────────────────────────────────────────────────────────────── /// 退出登录用例 Provider final logoutUseCaseProvider = Provider((ref) { return LogoutUseCase( authRepository: ref.read(authRepositoryProvider), socketManager: ref.read(socketManagerProvider), storageApi: ref.read(storageSdkProvider), ); });