11//
22// ignore_for_file: only_throw_errors
33
4+ import 'package:dio/browser.dart' ;
45import 'package:dio/dio.dart' ;
6+ import 'package:dio/io.dart' ;
57import 'package:ht_http_client/src/interceptors/auth_interceptor.dart' ;
68import 'package:ht_http_client/src/interceptors/error_interceptor.dart' ;
79import 'package:ht_shared/ht_shared.dart' ; // Updated import
@@ -30,19 +32,25 @@ class HtHttpClient {
3032 HtHttpClient ({
3133 required String baseUrl,
3234 required TokenProvider tokenProvider,
35+ required bool isWeb,
3336 Dio ? dioInstance,
3437 List <Interceptor >? interceptors,
3538 }) : _dio = dioInstance ?? Dio () {
3639 // Configure base options
3740 _dio.options = BaseOptions (
3841 baseUrl: baseUrl,
39- connectTimeout: const Duration (seconds: 15 ), // Example timeout
40- receiveTimeout: const Duration (seconds: 15 ), // Example timeout
41- sendTimeout: const Duration (seconds: 15 ), // Example timeout
42- // Headers can be set here, but AuthInterceptor handles Authorization
43- // headers: {'Content-Type': 'application/json'},
42+ connectTimeout: const Duration (seconds: 15 ),
43+ receiveTimeout: const Duration (seconds: 15 ),
44+ sendTimeout: const Duration (seconds: 15 ),
4445 );
4546
47+ // Set the appropriate HttpClientAdapter
48+ if (isWeb) {
49+ _dio.httpClientAdapter = BrowserHttpClientAdapter ();
50+ } else {
51+ _dio.httpClientAdapter = IOHttpClientAdapter ();
52+ }
53+
4654 // Add default interceptors
4755 _dio.interceptors.addAll ([
4856 AuthInterceptor (tokenProvider: tokenProvider),
@@ -59,7 +67,7 @@ class HtHttpClient {
5967
6068 /// The configured Dio instance used for making requests.
6169 final Dio _dio;
62-
70+
6371 /// Performs a GET request.
6472 ///
6573 /// - [path] : The endpoint path appended to the "baseUrl".
@@ -191,4 +199,4 @@ class HtHttpClient {
191199 rethrow ;
192200 }
193201 }
194- }
202+ }
0 commit comments