fix(mobile-app): fix 401 token refresh not working

1. Add /user/auto-login to publicPaths so it doesn't inject old token
2. Skip 401 handling for auto-login itself to avoid recursion
3. Add debug logs for token refresh flow

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
hailin 2025-12-07 22:43:30 -08:00
parent 0cf9f023f9
commit c771a81e05
1 changed files with 10 additions and 1 deletions

View File

@ -60,6 +60,7 @@ class ApiClient {
// Token
final publicPaths = [
'/user/auto-create',
'/user/auto-login', // token token
'/user/login',
'/user/register',
'/user/send-sms-code',
@ -93,15 +94,23 @@ class ApiClient {
ErrorInterceptorHandler handler,
) async {
// 401 Token
if (error.response?.statusCode == 401) {
// auto-login 401
final isAutoLogin = error.requestOptions.path.contains('/user/auto-login');
if (error.response?.statusCode == 401 && !isAutoLogin) {
debugPrint('401 error detected, attempting token refresh...');
try {
final refreshed = await _tryRefreshToken();
if (refreshed) {
debugPrint('Token refresh successful, retrying original request...');
//
final response = await _retryRequest(error.requestOptions);
return handler.resolve(response);
} else {
debugPrint('Token refresh failed, clearing auth data...');
await _clearAuthData();
}
} catch (e) {
debugPrint('Token refresh exception: $e');
//
await _clearAuthData();
}