fix(mutation): isMutating not working

This commit is contained in:
Kingkor Roy Tirtho
2023-10-06 10:23:01 +06:00
parent ea6b3f7b96
commit b512a5da06
5 changed files with 61 additions and 40 deletions
@@ -40,7 +40,7 @@ class _MutationPageState extends State<MutationPage> {
'sign-up',
(variables) {
return Future.delayed(
const Duration(seconds: 1),
const Duration(seconds: 5),
() => {
'name': variables['name'],
'email': variables['email'],
@@ -49,12 +49,12 @@ class _MutationPageState extends State<MutationPage> {
);
},
onMutate: (variables) {
print('onMutate: $variables');
debugPrint('onMutate: $variables');
return "Recover ME";
},
onData: (data, recoveryData) {
print('onData: $data');
print('recoveryData: $recoveryData');
debugPrint('onData: $data');
debugPrint('recoveryData: $recoveryData');
},
refreshQueries: const ['hello'],
builder: (context, mutation) {
+22 -14
View File
@@ -45,10 +45,10 @@ packages:
dependency: transitive
description:
name: collection
sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c"
sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687
url: "https://pub.dev"
source: hosted
version: "1.17.1"
version: "1.17.2"
connectivity_plus:
dependency: transitive
description:
@@ -111,21 +111,21 @@ packages:
path: ".."
relative: true
source: path
version: "1.0.0-alpha.2"
version: "1.0.0-alpha.4"
fl_query_connectivity_plus_adapter:
dependency: "direct main"
description:
path: "../../fl_query_connectivity_plus_adapter"
relative: true
source: path
version: "0.1.0"
version: "0.1.0-alpha.3"
fl_query_devtools:
dependency: "direct main"
description:
path: "../../fl_query_devtools"
relative: true
source: path
version: "0.1.0"
version: "0.1.0-alpha.2"
flutter:
dependency: "direct main"
description: flutter
@@ -225,18 +225,18 @@ packages:
dependency: transitive
description:
name: matcher
sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb"
sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e"
url: "https://pub.dev"
source: hosted
version: "0.12.15"
version: "0.12.16"
material_color_utilities:
dependency: transitive
description:
name: material_color_utilities
sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724
sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41"
url: "https://pub.dev"
source: hosted
version: "0.2.0"
version: "0.5.0"
meta:
dependency: transitive
description:
@@ -358,10 +358,10 @@ packages:
dependency: transitive
description:
name: source_span
sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250
sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
url: "https://pub.dev"
source: hosted
version: "1.9.1"
version: "1.10.0"
stack_trace:
dependency: transitive
description:
@@ -406,10 +406,10 @@ packages:
dependency: transitive
description:
name: test_api
sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb
sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8"
url: "https://pub.dev"
source: hosted
version: "0.5.1"
version: "0.6.0"
typed_data:
dependency: transitive
description:
@@ -426,6 +426,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.1.4"
web:
dependency: transitive
description:
name: web
sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10
url: "https://pub.dev"
source: hosted
version: "0.1.4-beta"
win32:
dependency: transitive
description:
@@ -451,5 +459,5 @@ packages:
source: hosted
version: "6.3.0"
sdks:
dart: ">=3.0.0-0 <4.0.0"
dart: ">=3.1.0-185.0.dev <4.0.0"
flutter: ">=3.3.0"
+10 -5
View File
@@ -16,22 +16,27 @@ typedef MutationFn<DataType, VariablesType> = Future<DataType> Function(
class MutationState<DataType, ErrorType, VariablesType> {
final DataType? data;
final ErrorType? error;
final bool _loading;
final DateTime updatedAt;
MutationState({
this.data,
this.error,
bool loading = false,
DateTime? updatedAt,
}) : updatedAt = updatedAt ?? DateTime.now();
}) : _loading = loading,
updatedAt = updatedAt ?? DateTime.now();
MutationState<DataType, ErrorType, VariablesType> copyWith({
DataType? data,
ErrorType? error,
DateTime? updatedAt,
bool? loading,
}) {
return MutationState<DataType, ErrorType, VariablesType>(
data: data ?? this.data,
error: error ?? this.error,
loading: loading ?? this._loading,
updatedAt: updatedAt ?? DateTime.now(),
);
}
@@ -80,7 +85,7 @@ class Mutation<DataType, ErrorType, VariablesType>
late final StreamSubscription<bool>? _connectivitySubscription;
bool get isInactive => !hasListeners;
bool get isMutating => _mutex.isLocked;
bool get isMutating => state._loading;
bool get hasData => state.data != null;
bool get hasError => state.error != null;
@@ -96,7 +101,7 @@ class Mutation<DataType, ErrorType, VariablesType>
return;
}
return _mutex.protect(() async {
state = state.copyWith();
state = state.copyWith(loading: true);
_operation = cancellableRetryOperation(
() {
_mutationController.add(variables);
@@ -104,13 +109,13 @@ class Mutation<DataType, ErrorType, VariablesType>
},
config: retryConfig,
onSuccessful: (data) {
state = state.copyWith(data: data);
state = state.copyWith(data: data, loading: false);
if (data is DataType) {
_dataController.add(data);
}
},
onFailed: (error) {
state = state.copyWith(error: error);
state = state.copyWith(error: error, loading: false);
if (error is ErrorType) {
_errorController.add(error);
}
+24 -16
View File
@@ -45,10 +45,10 @@ packages:
dependency: transitive
description:
name: collection
sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c"
sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687
url: "https://pub.dev"
source: hosted
version: "1.17.1"
version: "1.17.2"
connectivity_plus:
dependency: transitive
description:
@@ -119,21 +119,21 @@ packages:
path: "../../fl_query"
relative: true
source: path
version: "1.0.0-alpha.2"
version: "1.0.0-alpha.4"
fl_query_connectivity_plus_adapter:
dependency: "direct main"
description:
path: "../../fl_query_connectivity_plus_adapter"
relative: true
source: path
version: "0.1.0"
version: "0.1.0-alpha.3"
fl_query_hooks:
dependency: "direct main"
description:
path: ".."
relative: true
source: path
version: "1.0.0-alpha.2"
version: "1.0.0-alpha.4+1"
flutter:
dependency: "direct main"
description: flutter
@@ -143,10 +143,10 @@ packages:
dependency: "direct main"
description:
name: flutter_hooks
sha256: "6a126f703b89499818d73305e4ce1e3de33b4ae1c5512e3b8eab4b986f46774c"
sha256: "4618087243264d5f745b2a719a9fc610768f723da570efc2d0eaefe1efcbae70"
url: "https://pub.dev"
source: hosted
version: "0.18.6"
version: "0.20.2"
flutter_lints:
dependency: "direct dev"
description:
@@ -233,18 +233,18 @@ packages:
dependency: transitive
description:
name: matcher
sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb"
sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e"
url: "https://pub.dev"
source: hosted
version: "0.12.15"
version: "0.12.16"
material_color_utilities:
dependency: transitive
description:
name: material_color_utilities
sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724
sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41"
url: "https://pub.dev"
source: hosted
version: "0.2.0"
version: "0.5.0"
meta:
dependency: transitive
description:
@@ -366,10 +366,10 @@ packages:
dependency: transitive
description:
name: source_span
sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250
sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
url: "https://pub.dev"
source: hosted
version: "1.9.1"
version: "1.10.0"
stack_trace:
dependency: transitive
description:
@@ -414,10 +414,10 @@ packages:
dependency: transitive
description:
name: test_api
sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb
sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8"
url: "https://pub.dev"
source: hosted
version: "0.5.1"
version: "0.6.0"
typed_data:
dependency: transitive
description:
@@ -434,6 +434,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.1.4"
web:
dependency: transitive
description:
name: web
sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10
url: "https://pub.dev"
source: hosted
version: "0.1.4-beta"
win32:
dependency: transitive
description:
@@ -459,5 +467,5 @@ packages:
source: hosted
version: "6.3.0"
sdks:
dart: ">=3.0.0-0 <4.0.0"
dart: ">=3.1.0-185.0.dev <4.0.0"
flutter: ">=3.3.0"
+1 -1
View File
@@ -18,7 +18,7 @@ dependencies:
fl_query_hooks: ^1.0.0-alpha.4+1
go_router: ^6.0.9
http: ^0.13.5
flutter_hooks: ^0.18.6
flutter_hooks: ^0.20.0
dev_dependencies:
flutter_test: