diff --git a/packages/fl_query/lib/src/base_query.dart b/packages/fl_query/lib/src/base_query.dart index 0ee985c..d5b5d76 100644 --- a/packages/fl_query/lib/src/base_query.dart +++ b/packages/fl_query/lib/src/base_query.dart @@ -268,6 +268,23 @@ abstract class BaseQuery return isConnectedToInternet(await _connectivity.checkConnectivity()); } + /// can be used to update the data manually. Can be useful when used + /// together with mutations to perform optimistic updates or manual data + /// updates + /// For updating particular queries after a mutation using the + /// `QueryBowl.refetchQueries` is more appropriate. But this one can be + /// used when only 1 query needs get updated + /// + /// Every time a new instance of data should be returned because of + /// immutability + void setQueryData(QueryUpdateFunction updateFn) async { + final newData = await updateFn(data); + if (data == newData) return; + data = newData; + status = QueryStatus.success; + notifyListeners(); + } + /// invalidates the query /// /// Forcefully makes the query stale & expired which results in a refetch diff --git a/packages/fl_query/lib/src/infinite_query_builder.dart b/packages/fl_query/lib/src/infinite_query_builder.dart index 2b2bc33..2f139b7 100644 --- a/packages/fl_query/lib/src/infinite_query_builder.dart +++ b/packages/fl_query/lib/src/infinite_query_builder.dart @@ -1,3 +1,5 @@ +// ignore_for_file: invalid_use_of_protected_member + import 'package:fl_query/src/infinite_query.dart'; import 'package:fl_query/src/models/infinite_query_job.dart'; import 'package:fl_query/src/query_bowl.dart'; diff --git a/packages/fl_query/lib/src/mutation_builder.dart b/packages/fl_query/lib/src/mutation_builder.dart index c181c79..2afc262 100644 --- a/packages/fl_query/lib/src/mutation_builder.dart +++ b/packages/fl_query/lib/src/mutation_builder.dart @@ -1,3 +1,5 @@ +// ignore_for_file: invalid_use_of_protected_member + import 'package:fl_query/src/models/mutation_job.dart'; import 'package:fl_query/src/mutation.dart'; import 'package:fl_query/src/query_bowl.dart'; diff --git a/packages/fl_query/lib/src/query.dart b/packages/fl_query/lib/src/query.dart index cbd7b04..893f4a7 100644 --- a/packages/fl_query/lib/src/query.dart +++ b/packages/fl_query/lib/src/query.dart @@ -97,23 +97,6 @@ class Query extends BaseQuery { ); } - /// can be used to update the data manually. Can be useful when used - /// together with mutations to perform optimistic updates or manual data - /// updates - /// For updating particular queries after a mutation using the - /// `QueryBowl.refetchQueries` is more appropriate. But this one can be - /// used when only 1 query needs get updated - /// - /// Every time a new instance of data should be returned because of - /// immutability - void setQueryData(QueryUpdateFunction updateFn) async { - final newData = await updateFn(data); - if (data == newData) return; - data = newData; - status = QueryStatus.success; - notifyListeners(); - } - String get debugLabel => "Query($queryKey)"; @override diff --git a/packages/fl_query/lib/src/query_bowl.dart b/packages/fl_query/lib/src/query_bowl.dart index bacb2b4..1d37758 100644 --- a/packages/fl_query/lib/src/query_bowl.dart +++ b/packages/fl_query/lib/src/query_bowl.dart @@ -598,10 +598,24 @@ class QueryBowl extends InheritedWidget { /// Mostly used in combination with [onMutate] callback of /// [MutationBuilder] & [useMutation] for optimistic updates void setQueryData( - String queryKey, QueryUpdateFunction updateCb) { + String queryKey, + QueryUpdateFunction updateCb, + ) { getQuery(queryKey)?.setQueryData(updateCb); } + /// Sets [InfiniteQuery]'s data manually + /// + /// Mostly used in combination with [onMutate] callback of + /// [MutationBuilder] & [useMutation] for optimistic updates + void + setInfiniteQueryData( + String queryKey, + QueryUpdateFunction> updateCb, + ) { + getInfiniteQuery(queryKey)?.setQueryData(updateCb); + } + /// resets all the queries matching the passed List of queryKeys /// /// If an empty list of [queryKeys] is passed then all of the queries