onError method

  1. @override
void onError(
  1. DioException err,
  2. ErrorInterceptorHandler handler
)

Called when an exception was occurred during the request.

Implementation

@override
void onError(DioException err, ErrorInterceptorHandler handler) async {
  AppLogger.error(err);

  // Unauthorized → try refresh
  if (err.response?.statusCode == 401 &&
      !err.requestOptions.path.contains("/auth/refresh")) {

    final refreshed = await authManager.refreshToken.call();

    if (refreshed) {
      final retryReq = await authManager.retryRequest.call(err);
      if (retryReq != null) {
        return handler.resolve(retryReq);
      }
    }
  }

  handler.next(err);
}