diff --git a/lib/providers/collection_providers.dart b/lib/providers/collection_providers.dart index 2fb83077..35bc4aa0 100644 --- a/lib/providers/collection_providers.dart +++ b/lib/providers/collection_providers.dart @@ -25,14 +25,11 @@ final requestSequenceProvider = StateProvider>((ref) { return ids ?? []; }); -final httpClientManager = HttpClientManager(); - final StateNotifierProvider?> collectionStateNotifierProvider = StateNotifierProvider((ref) => CollectionStateNotifier( ref, hiveHandler, - httpClientManager, )); class CollectionStateNotifier @@ -40,7 +37,6 @@ class CollectionStateNotifier CollectionStateNotifier( this.ref, this.hiveHandler, - this.httpClientManager, ) : super(null) { var status = loadData(); Future.microtask(() { @@ -57,7 +53,6 @@ class CollectionStateNotifier final Ref ref; final HiveHandler hiveHandler; final baseHttpResponseModel = const HttpResponseModel(); - final HttpClientManager httpClientManager; bool hasId(String id) => state?.keys.contains(id) ?? false; @@ -117,6 +112,7 @@ class CollectionStateNotifier final rId = id ?? ref.read(selectedIdStateProvider); var itemIds = ref.read(requestSequenceProvider); int idx = itemIds.indexOf(rId!); + cancelHttpRequest(rId); itemIds.remove(rId); ref.read(requestSequenceProvider.notifier).state = [...itemIds]; @@ -293,7 +289,7 @@ class CollectionStateNotifier state = map; bool noSSL = ref.read(settingsProvider).isSSLDisabled; - (HttpResponse?, Duration?, String?)? responseRec = await request( + var responseRec = await sendHttpRequest( requestId, apiType, substitutedHttpRequestModel, @@ -349,7 +345,7 @@ class CollectionStateNotifier void cancelRequest() { final id = ref.read(selectedIdStateProvider); - httpClientManager.cancelRequest(id); + cancelHttpRequest(id); unsave(); } diff --git a/packages/apidash_core/lib/services/http_service.dart b/packages/apidash_core/lib/services/http_service.dart index 0bbc0501..ad06a21d 100644 --- a/packages/apidash_core/lib/services/http_service.dart +++ b/packages/apidash_core/lib/services/http_service.dart @@ -10,15 +10,16 @@ import 'http_client_manager.dart'; typedef HttpResponse = http.Response; -Future<(HttpResponse?, Duration?, String?)> request( +final httpClientManager = HttpClientManager(); + +Future<(HttpResponse?, Duration?, String?)> sendHttpRequest( String requestId, APIType apiType, HttpRequestModel requestModel, { SupportedUriSchemes defaultUriScheme = kDefaultUriScheme, bool noSSL = false, }) async { - final clientManager = HttpClientManager(); - final client = clientManager.createClient(requestId, noSSL: noSSL); + final client = httpClientManager.createClient(requestId, noSSL: noSSL); (Uri?, String?) uriRec = getValidRequestUri( requestModel.url, @@ -123,14 +124,18 @@ Future<(HttpResponse?, Duration?, String?)> request( stopwatch.stop(); return (response, stopwatch.elapsed, null); } catch (e) { - if (clientManager.wasRequestCancelled(requestId)) { + if (httpClientManager.wasRequestCancelled(requestId)) { return (null, null, kMsgRequestCancelled); } return (null, null, e.toString()); } finally { - clientManager.closeClient(requestId); + httpClientManager.closeClient(requestId); } } else { return (null, null, uriRec.$2); } } + +void cancelHttpRequest(String? requestId) { + httpClientManager.cancelRequest(requestId); +} diff --git a/test/models/response_model_test.dart b/test/models/response_model_test.dart index a568e383..5438f108 100644 --- a/test/models/response_model_test.dart +++ b/test/models/response_model_test.dart @@ -14,7 +14,7 @@ void main() { }); test('Testing fromResponse', () async { - (HttpResponse?, Duration?, String?)? responseRec = await request( + var responseRec = await sendHttpRequest( requestModelGet1.id, requestModelGet1.apiType, requestModelGet1.httpRequestModel!, @@ -32,7 +32,7 @@ void main() { }); test('Testing fromResponse for contentType not Json', () async { - (HttpResponse?, Duration?, String?)? responseRec = await request( + var responseRec = await sendHttpRequest( requestModelGet13.id, requestModelGet1.apiType, requestModelGet13.httpRequestModel!, @@ -48,7 +48,7 @@ void main() { }); test('Testing fromResponse for Bad SSL with certificate check', () async { - (HttpResponse?, Duration?, String?)? responseRec = await request( + var responseRec = await sendHttpRequest( requestModelGetBadSSL.id, requestModelGet1.apiType, requestModelGetBadSSL.httpRequestModel!, @@ -60,7 +60,7 @@ void main() { }); test('Testing fromResponse for Bad SSL with no certificate check', () async { - (HttpResponse?, Duration?, String?)? responseRec = await request( + var responseRec = await sendHttpRequest( requestModelGetBadSSL.id, requestModelGet1.apiType, requestModelGetBadSSL.httpRequestModel!,