onError method
Called when an exception was occurred during the request.
Implementation
@override
void onError(DioException err, ErrorInterceptorHandler handler) async {
if (_isTokenExpired(err)) {
final refresh = await TokenManager.refresh;
if (refresh != null) {
try {
final dio = Dio();
final response = await dio.post(
// ApiConfig.refreshTokenEndpoint,
ApiConfig.baseUrl,
data: {"refresh_token": refresh},
);
final newToken = response.data["access_token"];
final newRefresh = response.data["refresh_token"];
await TokenManager.saveTokens(
access: newToken,
refresh: newRefresh,
);
// Retry original request
final newReq = err.requestOptions
.copyWith(headers: {"Authorization": "Bearer $newToken"});
final retryResponse = await dio.fetch(newReq);
return handler.resolve(retryResponse);
} catch (e) {
await TokenManager.clear();
}
}
}
super.onError(err, handler);
}