refreshToken method
Refresh the access token using the refresh token.
Returns true if refresh was successful.
Called automatically by interceptor on 401 responses.
Implementation
@override
Future<bool> refreshToken() async {
if (refreshEndpoint == null || refreshTokenKey == null) {
return false;
}
final refreshTokenValue = await getRefreshToken();
if (refreshTokenValue == null) {
Log.warning('Auth: No refresh token available');
return false;
}
try {
final response = await Http.post(
refreshEndpoint!,
data: {'refresh_token': refreshTokenValue},
);
if (!response.successful) {
Log.warning('Auth: Token refresh failed');
return false;
}
// Extract new tokens from response
final data = response.data;
final newToken =
data?['token'] ??
data?['access_token'] ??
data?['data']?['token'] ??
data?['data']?['access_token'];
final newRefreshToken =
data?['refresh_token'] ?? data?['data']?['refresh_token'];
if (newToken is String) {
await storeToken(newToken, newRefreshToken as String?);
Log.info('Auth: Token refreshed');
return true;
}
return false;
} catch (e) {
Log.error('Auth: Token refresh error: $e');
return false;
}
}