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