fix(fl_query_hooks): unneeded empty instances of query/mutation

fix(infinite_query): getNextPageParam & getPreviousPageParam non-null return required
This commit is contained in:
Kingkor Roy Tirtho
2022-10-03 21:57:00 +06:00
parent bd22b87391
commit e9c8b7903b
11 changed files with 35 additions and 39 deletions
@@ -1,4 +1,3 @@
import 'package:fl_query/src/query_bowl.dart';
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
abstract class BaseOperation<Data, Error> extends ChangeNotifier { abstract class BaseOperation<Data, Error> extends ChangeNotifier {
@@ -27,13 +26,10 @@ abstract class BaseOperation<Data, Error> extends ChangeNotifier {
/// storage/cache /// storage/cache
Set<ValueKey<String>> _mounts = {}; Set<ValueKey<String>> _mounts = {};
final QueryBowl queryBowl;
BaseOperation({ BaseOperation({
required this.cacheTime, required this.cacheTime,
required this.retries, required this.retries,
required this.retryDelay, required this.retryDelay,
required this.queryBowl,
this.data, this.data,
}) : updatedAt = DateTime.now(); }) : updatedAt = DateTime.now();
@@ -52,7 +52,6 @@ abstract class BaseQuery<T extends Object, Outside, Error>
required Outside externalData, required Outside externalData,
required super.retries, required super.retries,
required super.retryDelay, required super.retryDelay,
required super.queryBowl,
required this.status, required this.status,
this.refetchOnMount, this.refetchOnMount,
this.refetchOnReconnect, this.refetchOnReconnect,
@@ -20,7 +20,7 @@ typedef InfiniteQueryListeners<T, PageParam extends Object> = FutureOr<void>
typedef InfiniteQueryPageParamFunction<T extends Object, typedef InfiniteQueryPageParamFunction<T extends Object,
PageParam extends Object> PageParam extends Object>
= FutureOr<PageParam> Function(T lastPage, PageParam lastParam); = FutureOr<PageParam?> Function(T lastPage, PageParam lastParam);
class InfiniteQuery<T extends Object, Outside, PageParam extends Object> class InfiniteQuery<T extends Object, Outside, PageParam extends Object>
extends BaseQuery<Map<PageParam, T?>, Outside, Map<PageParam, dynamic>> { extends BaseQuery<Map<PageParam, T?>, Outside, Map<PageParam, dynamic>> {
@@ -54,7 +54,6 @@ class InfiniteQuery<T extends Object, Outside, PageParam extends Object>
required super.externalData, required super.externalData,
required super.retries, required super.retries,
required super.retryDelay, required super.retryDelay,
required super.queryBowl,
required super.status, required super.status,
required PageParam initialParam, required PageParam initialParam,
super.refetchOnMount, super.refetchOnMount,
@@ -73,7 +72,6 @@ class InfiniteQuery<T extends Object, Outside, PageParam extends Object>
InfiniteQuery.fromOptions( InfiniteQuery.fromOptions(
InfiniteQueryJob<T, Outside, PageParam> options, { InfiniteQueryJob<T, Outside, PageParam> options, {
required super.queryBowl,
required Outside externalData, required Outside externalData,
InfiniteQueryListeners<T, PageParam>? onData, InfiniteQueryListeners<T, PageParam>? onData,
InfiniteQueryListeners<dynamic, PageParam>? onError, InfiniteQueryListeners<dynamic, PageParam>? onError,
-2
View File
@@ -50,7 +50,6 @@ class Mutation<T extends Object, V> extends BaseOperation<T, dynamic>
required this.task, required this.task,
required super.retries, required super.retries,
required super.retryDelay, required super.retryDelay,
required super.queryBowl,
required Duration cacheTime, required Duration cacheTime,
MutationListener<T, V>? onData, MutationListener<T, V>? onData,
MutationListener<dynamic, V>? onError, MutationListener<dynamic, V>? onError,
@@ -67,7 +66,6 @@ class Mutation<T extends Object, V> extends BaseOperation<T, dynamic>
MutationListener<T, V>? onData, MutationListener<T, V>? onData,
MutationListener<dynamic, V>? onError, MutationListener<dynamic, V>? onError,
MutationListenerReturnable<V, dynamic>? onMutate, MutationListenerReturnable<V, dynamic>? onMutate,
required super.queryBowl,
}) : mutationKey = options.mutationKey, }) : mutationKey = options.mutationKey,
task = options.task, task = options.task,
status = MutationStatus.idle, status = MutationStatus.idle,
-2
View File
@@ -50,7 +50,6 @@ class Query<T extends Object, Outside> extends BaseQuery<T, Outside, dynamic> {
required super.externalData, required super.externalData,
required super.retries, required super.retries,
required super.retryDelay, required super.retryDelay,
required super.queryBowl,
required super.status, required super.status,
super.refetchOnMount, super.refetchOnMount,
super.refetchOnReconnect, super.refetchOnReconnect,
@@ -65,7 +64,6 @@ class Query<T extends Object, Outside> extends BaseQuery<T, Outside, dynamic> {
Query.fromOptions( Query.fromOptions(
QueryJob<T, Outside> options, { QueryJob<T, Outside> options, {
required super.queryBowl,
required Outside externalData, required Outside externalData,
T? previousData, T? previousData,
QueryListener<T>? onData, QueryListener<T>? onData,
@@ -264,7 +264,6 @@ class QueryBowl {
options, options,
externalData: externalData, externalData: externalData,
previousData: previousData, previousData: previousData,
queryBowl: this,
); );
query.updateDefaultOptions( query.updateDefaultOptions(
cacheTime: cache.cacheTime, cacheTime: cache.cacheTime,
@@ -284,7 +283,6 @@ class QueryBowl {
final infiniteQuery = InfiniteQuery<T, Outside, PageParam>.fromOptions( final infiniteQuery = InfiniteQuery<T, Outside, PageParam>.fromOptions(
options, options,
externalData: externalData, externalData: externalData,
queryBowl: this,
); );
infiniteQuery.updateDefaultOptions( infiniteQuery.updateDefaultOptions(
cacheTime: cache.cacheTime, cacheTime: cache.cacheTime,
@@ -400,7 +398,6 @@ class QueryBowl {
} else { } else {
final mutation = Mutation<T, V>.fromOptions( final mutation = Mutation<T, V>.fromOptions(
mutationJob, mutationJob,
queryBowl: this,
); );
if (onData != null) mutation.addDataListener(onData); if (onData != null) mutation.addDataListener(onData);
if (onError != null) mutation.addErrorListener(onError); if (onError != null) mutation.addErrorListener(onError);
-10
View File
@@ -24,10 +24,8 @@ void main() {
// for testing query without external data // for testing query without external data
late Query query; late Query query;
late MockQueryJobVoidObject queryJob; late MockQueryJobVoidObject queryJob;
late MockQueryBowl queryBowl;
setUp(() { setUp(() {
queryJob = MockQueryJobVoidObject(); queryJob = MockQueryJobVoidObject();
queryBowl = MockQueryBowl();
when(queryJob.queryKey).thenReturn("test"); when(queryJob.queryKey).thenReturn("test");
when(queryJob.task).thenAnswer( when(queryJob.task).thenAnswer(
(_) => (_) =>
@@ -36,7 +34,6 @@ void main() {
query = Query.fromOptions( query = Query.fromOptions(
queryJob, queryJob,
externalData: null, externalData: null,
queryBowl: queryBowl,
); );
}); });
@@ -86,7 +83,6 @@ void main() {
query = Query.fromOptions( query = Query.fromOptions(
queryJob, queryJob,
externalData: null, externalData: null,
queryBowl: queryBowl,
); );
await Future.delayed(Duration(milliseconds: 100)); await Future.delayed(Duration(milliseconds: 100));
@@ -119,7 +115,6 @@ void main() {
query = Query.fromOptions( query = Query.fromOptions(
queryJob, queryJob,
externalData: null, externalData: null,
queryBowl: queryBowl,
); );
await query.fetch(); await query.fetch();
@@ -150,7 +145,6 @@ void main() {
query = Query.fromOptions( query = Query.fromOptions(
queryJob, queryJob,
externalData: null, externalData: null,
queryBowl: queryBowl,
); );
int count = 0; int count = 0;
query.addErrorListener((_) { query.addErrorListener((_) {
@@ -165,7 +159,6 @@ void main() {
query = Query.fromOptions( query = Query.fromOptions(
queryJob, queryJob,
externalData: null, externalData: null,
queryBowl: queryBowl,
); );
expect(query.isStale, isFalse); expect(query.isStale, isFalse);
await Future.delayed(Duration(milliseconds: 300)); await Future.delayed(Duration(milliseconds: 300));
@@ -190,7 +183,6 @@ void main() {
query = Query.fromOptions( query = Query.fromOptions(
queryJob, queryJob,
externalData: null, externalData: null,
queryBowl: queryBowl,
); );
final data = await query.fetch(); final data = await query.fetch();
@@ -210,7 +202,6 @@ void main() {
query = Query.fromOptions( query = Query.fromOptions(
queryJob, queryJob,
externalData: null, externalData: null,
queryBowl: queryBowl,
); );
final data = await query.fetch(); final data = await query.fetch();
query.invalidate(); query.invalidate();
@@ -237,7 +228,6 @@ void main() {
query = Query.fromOptions( query = Query.fromOptions(
queryJob, queryJob,
externalData: null, externalData: null,
queryBowl: queryBowl,
); );
final data = await query.fetch(); final data = await query.fetch();
query.invalidate(); query.invalidate();
@@ -1 +1 @@
{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"connectivity_plus","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus-2.3.6/","native_build":true,"dependencies":[]}],"android":[{"name":"connectivity_plus","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus-2.3.6/","native_build":true,"dependencies":[]}],"macos":[{"name":"connectivity_plus_macos","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_macos-1.2.4/","native_build":true,"dependencies":[]}],"linux":[{"name":"connectivity_plus_linux","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_linux-1.3.1/","native_build":false,"dependencies":[]}],"windows":[{"name":"connectivity_plus_windows","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_windows-1.2.2/","native_build":true,"dependencies":[]}],"web":[{"name":"connectivity_plus_web","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_web-1.2.3/","dependencies":[]}]},"dependencyGraph":[{"name":"connectivity_plus","dependencies":["connectivity_plus_linux","connectivity_plus_macos","connectivity_plus_web","connectivity_plus_windows"]},{"name":"connectivity_plus_linux","dependencies":[]},{"name":"connectivity_plus_macos","dependencies":[]},{"name":"connectivity_plus_web","dependencies":[]},{"name":"connectivity_plus_windows","dependencies":[]}],"date_created":"2022-09-22 21:28:31.234632","version":"3.3.0"} {"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"connectivity_plus","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus-2.3.6/","native_build":true,"dependencies":[]}],"android":[{"name":"connectivity_plus","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus-2.3.6/","native_build":true,"dependencies":[]}],"macos":[{"name":"connectivity_plus_macos","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_macos-1.2.4/","native_build":true,"dependencies":[]}],"linux":[{"name":"connectivity_plus_linux","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_linux-1.3.1/","native_build":false,"dependencies":[]}],"windows":[{"name":"connectivity_plus_windows","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_windows-1.2.2/","native_build":true,"dependencies":[]}],"web":[{"name":"connectivity_plus_web","path":"/home/krtirtho/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_web-1.2.3/","dependencies":[]}]},"dependencyGraph":[{"name":"connectivity_plus","dependencies":["connectivity_plus_linux","connectivity_plus_macos","connectivity_plus_web","connectivity_plus_windows"]},{"name":"connectivity_plus_linux","dependencies":[]},{"name":"connectivity_plus_macos","dependencies":[]},{"name":"connectivity_plus_web","dependencies":[]},{"name":"connectivity_plus_windows","dependencies":[]}],"date_created":"2022-09-26 14:46:50.585900","version":"3.3.0"}
@@ -24,10 +24,15 @@ InfiniteQuery<T, Outside, PageParam>
final QueryBowl queryBowl = QueryBowl.of(context); final QueryBowl queryBowl = QueryBowl.of(context);
final ValueKey<String> uKey = useMemoized(() => ValueKey(uuid.v4()), []); final ValueKey<String> uKey = useMemoized(() => ValueKey(uuid.v4()), []);
final infiniteQuery = useRef( final infiniteQuery = useRef(
InfiniteQuery.fromOptions( useMemoized(
job, () => queryBowl.addInfiniteQuery<T, Outside, PageParam>(
externalData: externalData, job,
queryBowl: queryBowl, externalData: externalData,
key: uKey,
onData: onData,
onError: onError,
),
[],
), ),
); );
@@ -129,5 +134,5 @@ InfiniteQuery<T, Outside, PageParam>
return null; return null;
}); });
return queryBowl.getInfiniteQuery(job.queryKey) ?? infiniteQuery.value; return infiniteQuery.value;
} }
@@ -24,8 +24,18 @@ Mutation<T, V> useMutation<T extends Object, V>({
final update = useForceUpdate(); final update = useForceUpdate();
final QueryBowl queryBowl = QueryBowl.of(context); final QueryBowl queryBowl = QueryBowl.of(context);
final ValueKey<String> uKey = useMemoized(() => ValueKey(uuid.v4()), []); final ValueKey<String> uKey = useMemoized(() => ValueKey(uuid.v4()), []);
final mutation = final mutation = useRef(
useRef(Mutation<T, V>.fromOptions(job, queryBowl: queryBowl)); useMemoized(
() => queryBowl.addMutation<T, V>(
job,
onData: onData,
onError: onError,
onMutate: onMutate,
key: uKey,
),
[],
),
);
final init = useCallback(() { final init = useCallback(() {
mutation.value = queryBowl.addMutation<T, V>( mutation.value = queryBowl.addMutation<T, V>(
@@ -85,5 +95,5 @@ Mutation<T, V> useMutation<T extends Object, V>({
return null; return null;
}); });
return queryBowl.getMutation(job.mutationKey) ?? mutation.value; return mutation.value;
} }
+10 -5
View File
@@ -23,10 +23,15 @@ Query<T, Outside> useQuery<T extends Object, Outside>({
final QueryBowl queryBowl = QueryBowl.of(context); final QueryBowl queryBowl = QueryBowl.of(context);
final ValueKey<String> uKey = useMemoized(() => ValueKey(uuid.v4()), []); final ValueKey<String> uKey = useMemoized(() => ValueKey(uuid.v4()), []);
final query = useRef( final query = useRef(
Query.fromOptions( useMemoized(
job, () => queryBowl.addQuery<T, Outside>(
externalData: externalData, job,
queryBowl: queryBowl, externalData: externalData,
key: uKey,
onData: onData,
onError: onError,
),
[],
), ),
); );
@@ -125,5 +130,5 @@ Query<T, Outside> useQuery<T extends Object, Outside>({
return null; return null;
}); });
return queryBowl.getQuery(job.queryKey) ?? query.value; return query.value;
} }