This commit is contained in:
lz_db
2026-10-25 11:46:44 +08:00
parent 893dfed0ed
commit 494f667719
63 changed files with 5213 additions and 239 deletions
+7
View File
@@ -1,5 +1,6 @@
import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../core/log/action_logger.dart';
import '../core/network/api_client.dart';
import '../core/network/api_exception.dart';
import '../core/storage/token_store.dart';
@@ -46,6 +47,7 @@ class AuthNotifier extends StateNotifier<AuthState> {
try {
final user = await UserService.fetchMe();
state = AuthState(user: user, restored: true);
ActionLogger.I.bindUser(user.email);
} on ApiException catch (e) {
// 仅 Token 确认失效(1002)才清理回游客态;
// 网络异常等情况保留 Token,下次启动/请求重试恢复
@@ -62,9 +64,12 @@ class AuthNotifier extends StateNotifier<AuthState> {
/// 需补拉全量资料,否则积分显示为 0、编辑资料保存会把服务端字段清空。
Future<void> onLoginSuccess(UserModel user) async {
state = AuthState(user: user, restored: true);
ActionLogger.I.bindUser(user.email);
try {
final full = await UserService.fetchMe();
state = state.copyWith(user: full);
// 全量资料里的 email 字段更权威(用户可能登录后改过邮箱)
ActionLogger.I.bindUser(full.email);
} catch (_) {
// 补拉失败不影响登录态,保留简要信息
}
@@ -75,11 +80,13 @@ class AuthNotifier extends StateNotifier<AuthState> {
/// 退出登录:先通知服务端注销(失败忽略,本地照常清理),再清空登录态
Future<void> logout() async {
ActionLogger.I.log('logout', page: 'mine');
try {
await AuthService.logout();
} catch (_) {
// 服务端已不可达或 Token 已失效:本地清理即可
}
ActionLogger.I.unbind();
await _clearLocal();
}