refactor: remove unnecessary state changes

This commit is contained in:
sasanktumpati
2024-12-07 15:52:18 +05:30
parent 036bac311c
commit edd69b986a
4 changed files with 18 additions and 21 deletions

View File

@ -468,5 +468,6 @@ const kNullResponseModelError = "Error: Response data does not exist.";
const kMsgNullBody = "Response body is missing (null)."; const kMsgNullBody = "Response body is missing (null).";
const kMsgNoContent = "No content"; const kMsgNoContent = "No content";
const kMsgUnknowContentType = "Unknown Response Content-Type"; const kMsgUnknowContentType = "Unknown Response Content-Type";
const kMsgRequestCancelled = 'Request Cancelled';
// Workspace Selector // Workspace Selector
const kMsgSelectWorkspace = "Create your workspace"; const kMsgSelectWorkspace = "Create your workspace";

View File

@ -24,13 +24,16 @@ final requestSequenceProvider = StateProvider<List<String>>((ref) {
return ids ?? []; return ids ?? [];
}); });
final httpClientManager = HttpClientManager();
final StateNotifierProvider<CollectionStateNotifier, Map<String, RequestModel>?> final StateNotifierProvider<CollectionStateNotifier, Map<String, RequestModel>?>
collectionStateNotifierProvider = collectionStateNotifierProvider = StateNotifierProvider(
StateNotifierProvider((ref) => CollectionStateNotifier(ref, hiveHandler)); (ref) => CollectionStateNotifier(ref, hiveHandler, httpClientManager));
class CollectionStateNotifier class CollectionStateNotifier
extends StateNotifier<Map<String, RequestModel>?> { extends StateNotifier<Map<String, RequestModel>?> {
CollectionStateNotifier(this.ref, this.hiveHandler) : super(null) { CollectionStateNotifier(this.ref, this.hiveHandler, this.httpClientManager)
: super(null) {
var status = loadData(); var status = loadData();
Future.microtask(() { Future.microtask(() {
if (status) { if (status) {
@ -46,6 +49,7 @@ class CollectionStateNotifier
final Ref ref; final Ref ref;
final HiveHandler hiveHandler; final HiveHandler hiveHandler;
final baseResponseModel = const HttpResponseModel(); final baseResponseModel = const HttpResponseModel();
final HttpClientManager httpClientManager;
bool hasId(String id) => state?.keys.contains(id) ?? false; bool hasId(String id) => state?.keys.contains(id) ?? false;
@ -237,11 +241,15 @@ class CollectionStateNotifier
Future<void> sendRequest(String id) async { Future<void> sendRequest(String id) async {
ref.read(codePaneVisibleStateProvider.notifier).state = false; ref.read(codePaneVisibleStateProvider.notifier).state = false;
final defaultUriScheme = ref.read( final defaultUriScheme = ref.read(
settingsProvider.select((value) => value.defaultUriScheme), settingsProvider.select(
(value) => value.defaultUriScheme,
),
); );
RequestModel requestModel = state![id]!; RequestModel requestModel = state![id]!;
if (requestModel.httpRequestModel == null) return; if (requestModel.httpRequestModel == null) {
return;
}
HttpRequestModel substitutedHttpRequestModel = HttpRequestModel substitutedHttpRequestModel =
getSubstitutedHttpRequestModel(requestModel.httpRequestModel!); getSubstitutedHttpRequestModel(requestModel.httpRequestModel!);
@ -261,11 +269,12 @@ class CollectionStateNotifier
late final RequestModel newRequestModel; late final RequestModel newRequestModel;
if (responseRec.$1 == null) { if (responseRec.$1 == null) {
if (responseRec.$3 == 'Request cancelled') { if (responseRec.$3 == kMsgRequestCancelled) {
newRequestModel = requestModel.copyWith( newRequestModel = requestModel.copyWith(
responseStatus: null, responseStatus: null,
message: responseRec.$3, message: kMsgRequestCancelled,
isWorking: false, isWorking: false,
httpResponseModel: null,
); );
} else { } else {
newRequestModel = requestModel.copyWith( newRequestModel = requestModel.copyWith(
@ -311,20 +320,8 @@ class CollectionStateNotifier
ref.read(hasUnsavedChangesProvider.notifier).state = true; ref.read(hasUnsavedChangesProvider.notifier).state = true;
} }
final httpClientManager = HttpClientManager();
void cancelRequest(String id) { void cancelRequest(String id) {
httpClientManager.cancelRequest(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 { Future<void> clearData() async {

View File

@ -27,7 +27,6 @@ class ResponsePane extends ConsumerWidget {
if (responseStatus == null) { if (responseStatus == null) {
return const NotSentWidget(); return const NotSentWidget();
} }
if (responseStatus == -1) { if (responseStatus == -1) {
return ErrorMessage(message: '$message. $kUnexpectedRaiseIssue'); return ErrorMessage(message: '$message. $kUnexpectedRaiseIssue');
} }

View File

@ -107,7 +107,7 @@ Future<(HttpResponse?, Duration?, String?)> request(
return (response, stopwatch.elapsed, null); return (response, stopwatch.elapsed, null);
} on http.ClientException catch (e) { } on http.ClientException catch (e) {
if (e.message.contains('Connection closed') || if (e.message.contains('Connection closed') ||
e.message.contains('abort')) { e.message.contains('Connection attempt cancelled')) {
return (null, null, 'Request Cancelled'); return (null, null, 'Request Cancelled');
} else { } else {
return (null, null, e.toString()); return (null, null, e.toString());