From edd69b986adff1c7832baa28e5162b7e8849e7b1 Mon Sep 17 00:00:00 2001 From: sasanktumpati <sasanktumpati16@gmail.com> Date: Sat, 7 Dec 2024 15:52:18 +0530 Subject: [PATCH] refactor: remove unnecessary state changes --- lib/consts.dart | 1 + lib/providers/collection_providers.dart | 35 +++++++++---------- .../details_card/response_pane.dart | 1 - .../lib/services/http_service.dart | 2 +- 4 files changed, 18 insertions(+), 21 deletions(-) diff --git a/lib/consts.dart b/lib/consts.dart index 2189249a..e72c8f98 100644 --- a/lib/consts.dart +++ b/lib/consts.dart @@ -468,5 +468,6 @@ const kNullResponseModelError = "Error: Response data does not exist."; const kMsgNullBody = "Response body is missing (null)."; const kMsgNoContent = "No content"; const kMsgUnknowContentType = "Unknown Response Content-Type"; +const kMsgRequestCancelled = 'Request Cancelled'; // Workspace Selector const kMsgSelectWorkspace = "Create your workspace"; diff --git a/lib/providers/collection_providers.dart b/lib/providers/collection_providers.dart index 6bcd7742..0e0af0d1 100644 --- a/lib/providers/collection_providers.dart +++ b/lib/providers/collection_providers.dart @@ -24,13 +24,16 @@ final requestSequenceProvider = StateProvider<List<String>>((ref) { return ids ?? []; }); +final httpClientManager = HttpClientManager(); + final StateNotifierProvider<CollectionStateNotifier, Map<String, RequestModel>?> - collectionStateNotifierProvider = - StateNotifierProvider((ref) => CollectionStateNotifier(ref, hiveHandler)); + collectionStateNotifierProvider = StateNotifierProvider( + (ref) => CollectionStateNotifier(ref, hiveHandler, httpClientManager)); class CollectionStateNotifier extends StateNotifier<Map<String, RequestModel>?> { - CollectionStateNotifier(this.ref, this.hiveHandler) : super(null) { + CollectionStateNotifier(this.ref, this.hiveHandler, this.httpClientManager) + : super(null) { var status = loadData(); Future.microtask(() { if (status) { @@ -46,6 +49,7 @@ class CollectionStateNotifier final Ref ref; final HiveHandler hiveHandler; final baseResponseModel = const HttpResponseModel(); + final HttpClientManager httpClientManager; bool hasId(String id) => state?.keys.contains(id) ?? false; @@ -237,11 +241,15 @@ class CollectionStateNotifier Future<void> sendRequest(String id) async { ref.read(codePaneVisibleStateProvider.notifier).state = false; final defaultUriScheme = ref.read( - settingsProvider.select((value) => value.defaultUriScheme), + settingsProvider.select( + (value) => value.defaultUriScheme, + ), ); RequestModel requestModel = state![id]!; - if (requestModel.httpRequestModel == null) return; + if (requestModel.httpRequestModel == null) { + return; + } HttpRequestModel substitutedHttpRequestModel = getSubstitutedHttpRequestModel(requestModel.httpRequestModel!); @@ -261,11 +269,12 @@ class CollectionStateNotifier late final RequestModel newRequestModel; if (responseRec.$1 == null) { - if (responseRec.$3 == 'Request cancelled') { + if (responseRec.$3 == kMsgRequestCancelled) { newRequestModel = requestModel.copyWith( responseStatus: null, - message: responseRec.$3, + message: kMsgRequestCancelled, isWorking: false, + httpResponseModel: null, ); } else { newRequestModel = requestModel.copyWith( @@ -311,20 +320,8 @@ class CollectionStateNotifier ref.read(hasUnsavedChangesProvider.notifier).state = true; } - final httpClientManager = HttpClientManager(); - void cancelRequest(String id) { httpClientManager.cancelRequest(id); - var currentModel = state![id]!; - var map = {...state!}; - map[id] = currentModel.copyWith( - isWorking: false, - message: 'Request Cancelled', - responseStatus: null, - httpResponseModel: null, - ); - state = map; - ref.read(hasUnsavedChangesProvider.notifier).state = true; } Future<void> clearData() async { diff --git a/lib/screens/home_page/editor_pane/details_card/response_pane.dart b/lib/screens/home_page/editor_pane/details_card/response_pane.dart index e7a51001..0ca4c1a9 100644 --- a/lib/screens/home_page/editor_pane/details_card/response_pane.dart +++ b/lib/screens/home_page/editor_pane/details_card/response_pane.dart @@ -27,7 +27,6 @@ class ResponsePane extends ConsumerWidget { if (responseStatus == null) { return const NotSentWidget(); } - if (responseStatus == -1) { return ErrorMessage(message: '$message. $kUnexpectedRaiseIssue'); } diff --git a/packages/apidash_core/lib/services/http_service.dart b/packages/apidash_core/lib/services/http_service.dart index 27d86adf..bfc6f512 100644 --- a/packages/apidash_core/lib/services/http_service.dart +++ b/packages/apidash_core/lib/services/http_service.dart @@ -107,7 +107,7 @@ Future<(HttpResponse?, Duration?, String?)> request( return (response, stopwatch.elapsed, null); } on http.ClientException catch (e) { if (e.message.contains('Connection closed') || - e.message.contains('abort')) { + e.message.contains('Connection attempt cancelled')) { return (null, null, 'Request Cancelled'); } else { return (null, null, e.toString());