prepareRequest method
=======================
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);
},
),
);
}