prepareRequest method

Future<void> prepareRequest({
  1. String? basicAuthorizationToken,
  2. String? contentType,
  3. required String url,
})

======================= REQUEST PREPARATION

Implementation

Future<void> prepareRequest({
  String? basicAuthorizationToken,
  String? contentType,
  required String url,
}) async {
  if (packageInfo == null || deviceId.isEmpty) {
    await getHeaderInfo();
  }

  _dio = Dio(
    BaseOptions(
      connectTimeout: const Duration(milliseconds: Timeouts.CONNECT_TIMEOUT),
      receiveTimeout: const Duration(milliseconds: Timeouts.RECEIVE_TIMEOUT),
      responseType: ResponseType.json,
      headers: getHeaders(
        basicAuthorizationToken: basicAuthorizationToken,
        contentType: contentType,
        url: url,
      ),
    ),
  );

  _dio.interceptors.clear();

  _dio.interceptors.add(
    LogInterceptor(
      request: true,
      requestBody: true,
      requestHeader: true,
      responseBody: true,
      responseHeader: true,
      error: true,
      logPrint: _printLog,
    ),
  );

  if (AppConfig.enableAlice) {
    _dio.interceptors.add(Constants.alice.getDioInterceptor());
  }

  _dio.interceptors.add(
    InterceptorsWrapper(
      onError: (error, handler) async {
        /// 🔴 NO INTERNET
        if (error.type == DioExceptionType.connectionError ||
            error.error is SocketException) {
          final completer = Completer<Response>();
          _addToFailedQueue(error.requestOptions, completer);
          _showNoInternetDialog();
          return handler.resolve(await completer.future);
        }

        /// 🔁 TOKEN REFRESH
        final response = error.response;
        final requestOptions = error.requestOptions;

        // if (response?.statusCode == 401) {
        //   if (_refreshCompleter != null) {
        //     await _refreshCompleter!.future;
        //   } else {
        //     _refreshCompleter = Completer<void>();
        //     final success = await _handleTokenRefresh();
        //     _refreshCompleter!.complete();
        //     _refreshCompleter = null;
        //
        //     if (!success) {
        //       return handler.reject(error);
        //     }
        //   }
        //
        //   requestOptions.headers["Authorization"] =
        //   "Bearer ${Storage.getSdkUser()?.accessToken}";
        //
        //   try {
        //     final response = await _dio.fetch(requestOptions);
        //     return handler.resolve(response);
        //   } catch (e) {
        //     return handler.reject(e as DioException);
        //   }
        // }

        return handler.next(error);
      },
    ),
  );
}