refreshTokenCallback<T> method

Future<Response<T>?> refreshTokenCallback<T>(
  1. RequestOptions requestOptions, [
  2. RequestInterceptorHandler? handler
])

Implementation

Future<Response<T>?> refreshTokenCallback<T>(RequestOptions requestOptions,
    [RequestInterceptorHandler? handler]) async {
  if (authOptions.resolveJwt != null &&
      authOptions.resolveRefreshToken != null) {
    await executeTokenRefresh(handler);

    final currentJwt = jwt;

    if (requestOptions.headers.containsKey(RestApiClientKeys.authorization)) {
      requestOptions.headers.update(
          RestApiClientKeys.authorization, (v) => 'Bearer $currentJwt');
    } else {
      requestOptions.headers
          .addAll({RestApiClientKeys.authorization: 'Bearer $currentJwt'});
    }

    if (handler != null) {
      handler.next(requestOptions);
    } else {
      return await dio.request(
        requestOptions.path,
        cancelToken: requestOptions.cancelToken,
        data: requestOptions.data,
        onReceiveProgress: requestOptions.onReceiveProgress,
        onSendProgress: requestOptions.onSendProgress,
        queryParameters: requestOptions.queryParameters,
        options: Options(
          method: requestOptions.method,
          sendTimeout: requestOptions.sendTimeout,
          receiveTimeout: requestOptions.receiveTimeout,
          extra: requestOptions.extra,
          headers: requestOptions.headers,
          responseType: requestOptions.responseType,
          contentType: requestOptions.contentType,
          validateStatus: requestOptions.validateStatus,
          receiveDataWhenStatusError:
              requestOptions.receiveDataWhenStatusError,
          followRedirects: requestOptions.followRedirects,
          maxRedirects: requestOptions.maxRedirects,
          requestEncoder: requestOptions.requestEncoder,
          responseDecoder: requestOptions.responseDecoder,
          listFormat: requestOptions.listFormat,
        ),
      );
    }
  }

  return null;
}