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());