网络请求打通,ws 打通

This commit is contained in:
Cody
2026-03-09 19:05:55 +08:00
parent 997d821447
commit 3c1976b343
60 changed files with 1392 additions and 552 deletions

View File

@@ -1,25 +1,43 @@
import '../entities/user.dart';
import 'package:im_app/domain/entities/user.dart';
/// 认证 Repository 接口(依赖倒置)
///
/// Domain 层定义 WhatData 层实现 How。
/// ViewModel 依赖此接口,不依赖具体实现 [AuthRepositoryImpl]。
/// UseCase 依赖此接口,不依赖具体实现 [AuthRepositoryImpl]。
///
/// ## 数据流位置
/// ## 登录三步流程
///
/// ```
/// ViewModel
/// → ★ AuthRepository.login() ★ ← 你在这里(接口)
/// → AuthRepositoryImpl.login() ← data/repositories/(实现)
/// → _client.executeRequest(LoginRequest)
/// → 服务端
/// 1. sendOtp(countryCode, contact) → 发送验证码短信
/// 2. verifyOtp(countryCode, contact, code) → 校验验证码,返回 vcode_token
/// 3. login(countryCode, contact, vcodeToken) → 用 vcode_token 换 access_token返回 User
/// ```
abstract interface class AuthRepository {
/// 登录,返回 Domain Entity [User]
Future<User> login({required String email, required String password});
/// 发送手机验证码短信
///
/// 抛 [ApiError] 表示发送失败(手机号格式错误、频率限制等)。
Future<void> sendOtp({
required String countryCode,
required String contact,
});
/// 获取当前登录用户信息
Future<User?> getCurrentUser();
/// 校验验证码,成功返回 vcode_token
///
/// vcode_token 用于 [login] 的 vcodeToken 参数。
Future<String> verifyOtp({
required String countryCode,
required String contact,
required String code,
});
/// 用 vcode_token 完成登录,返回 Domain Entity [User]
///
/// 成功后内部回调写入 access_token后续请求自动携带。
Future<User> login({
required String countryCode,
required String contact,
required String vcodeToken,
});
/// 退出登录
Future<void> logout();