1
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user