diff --git a/packages/fl_query/lib/src/collections/jobs/infinite_query_job.dart b/packages/fl_query/lib/src/collections/jobs/infinite_query_job.dart index 7a892f3..932df4e 100644 --- a/packages/fl_query/lib/src/collections/jobs/infinite_query_job.dart +++ b/packages/fl_query/lib/src/collections/jobs/infinite_query_job.dart @@ -11,7 +11,7 @@ typedef InfiniteQueryJobVariableKeyFn String variable); class InfiniteQueryJob { - final InfiniteQueryJobFn task; + final InfiniteQueryJobFn task; final String queryKey; final PageType initialPage; diff --git a/packages/fl_query/lib/src/collections/jobs/mutation_job.dart b/packages/fl_query/lib/src/collections/jobs/mutation_job.dart index ac3317b..0f43621 100644 --- a/packages/fl_query/lib/src/collections/jobs/mutation_job.dart +++ b/packages/fl_query/lib/src/collections/jobs/mutation_job.dart @@ -12,7 +12,7 @@ typedef MutationJobVariableKeyFn { - final MutationJobFn task; + final MutationJobFn task; final String mutationKey; final RetryConfig? retryConfig; diff --git a/packages/fl_query/lib/src/collections/jobs/query_job.dart b/packages/fl_query/lib/src/collections/jobs/query_job.dart index c0a6798..d91e35d 100644 --- a/packages/fl_query/lib/src/collections/jobs/query_job.dart +++ b/packages/fl_query/lib/src/collections/jobs/query_job.dart @@ -9,7 +9,7 @@ typedef QueryJobVariableKeyFn = QueryJob Function(String variable); class QueryJob { - final QueryJobFn task; + final QueryJobFn task; final String queryKey; final DataType? initial; diff --git a/packages/fl_query/lib/src/core/client.dart b/packages/fl_query/lib/src/core/client.dart index 44049ee..d140afd 100644 --- a/packages/fl_query/lib/src/core/client.dart +++ b/packages/fl_query/lib/src/core/client.dart @@ -3,6 +3,8 @@ import 'dart:async'; import 'package:collection/collection.dart'; import 'package:fl_query/src/collections/connectivity_adapter.dart'; import 'package:fl_query/src/collections/default_configs.dart'; +import 'package:fl_query/src/collections/jobs/infinite_query_job.dart'; +import 'package:fl_query/src/collections/jobs/query_job.dart'; import 'package:fl_query/src/collections/json_config.dart'; import 'package:fl_query/src/collections/refresh_config.dart'; import 'package:fl_query/src/collections/retry_config.dart'; @@ -162,6 +164,20 @@ class QueryClient { } } + Future fetchQueryJob({ + required QueryJob job, + required ArgsType args, + }) { + return fetchQuery( + job.queryKey, + () => job.task(args), + initial: job.initial, + retryConfig: job.retryConfig, + refreshConfig: job.refreshConfig, + jsonConfig: job.jsonConfig, + ); + } + /// Finds the [Query] with the given [key] and returns it /// /// [exact] can be used to match the key exactly or by prefix @@ -220,7 +236,7 @@ class QueryClient { String key, InfiniteQueryFn queryFn, { required InfiniteQueryNextPage nextPage, - required PageType initialParam, + required PageType initialPage, RetryConfig? retryConfig, RefreshConfig? refreshConfig, JsonConfig? jsonConfig, @@ -232,7 +248,7 @@ class QueryClient { key, queryFn, nextPage: nextPage, - initialParam: initialParam, + initialPage: initialPage, retryConfig: retryConfig ?? this.retryConfig, refreshConfig: refreshConfig ?? this.refreshConfig, jsonConfig: jsonConfig, @@ -254,7 +270,7 @@ class QueryClient { String key, InfiniteQueryFn queryFn, { required InfiniteQueryNextPage nextPage, - required PageType initialParam, + required PageType initialPage, RetryConfig? retryConfig, RefreshConfig? refreshConfig, JsonConfig? jsonConfig, @@ -266,7 +282,7 @@ class QueryClient { key, queryFn, nextPage: nextPage, - initialParam: initialParam, + initialPage: initialPage, retryConfig: retryConfig, refreshConfig: refreshConfig, jsonConfig: jsonConfig, @@ -292,6 +308,22 @@ class QueryClient { } } + Future + fetchInfiniteQueryJob({ + required InfiniteQueryJob job, + required ArgsType args, + }) { + return fetchInfiniteQuery( + job.queryKey, + (page) => job.task(page, args), + nextPage: job.nextPage, + initialPage: job.initialPage, + retryConfig: job.retryConfig, + refreshConfig: job.refreshConfig, + jsonConfig: job.jsonConfig, + ); + } + /// Finds the [InfiniteQuery] with the given [key] /// /// [exact] can be used to match the key exactly or by prefix diff --git a/packages/fl_query/lib/src/core/infinite_query.dart b/packages/fl_query/lib/src/core/infinite_query.dart index 4c46564..7e76325 100644 --- a/packages/fl_query/lib/src/core/infinite_query.dart +++ b/packages/fl_query/lib/src/core/infinite_query.dart @@ -122,7 +122,7 @@ class InfiniteQuery final RefreshConfig refreshConfig; final JsonConfig? jsonConfig; - final PageType _initialParam; + final PageType _initialPage; InfiniteQueryFn _queryFn; InfiniteQueryNextPage _nextPage; @@ -131,11 +131,11 @@ class InfiniteQuery this.key, InfiniteQueryFn queryFn, { required InfiniteQueryNextPage nextPage, - required PageType initialParam, + required PageType initialPage, required this.retryConfig, required this.refreshConfig, this.jsonConfig, - }) : _initialParam = initialParam, + }) : _initialPage = initialPage, _dataController = StreamController.broadcast(), _errorController = StreamController.broadcast(), _box = Hive.lazyBox(QueryClient.infiniteQueryCachePrefix), @@ -144,7 +144,7 @@ class InfiniteQuery super(InfiniteQueryState( pages: { InfiniteQueryPage( - page: initialParam, + page: initialPage, updatedAt: DateTime.now(), staleDuration: refreshConfig.staleDuration, ), @@ -490,7 +490,7 @@ class InfiniteQuery await _operation?.cancel(); state = state.copyWith(pages: { InfiniteQueryPage( - page: _initialParam, + page: _initialPage, updatedAt: DateTime.now(), staleDuration: refreshConfig.staleDuration, ) diff --git a/packages/fl_query/lib/src/widgets/infinite_query_builder.dart b/packages/fl_query/lib/src/widgets/infinite_query_builder.dart index 1760d3b..3a67704 100644 --- a/packages/fl_query/lib/src/widgets/infinite_query_builder.dart +++ b/packages/fl_query/lib/src/widgets/infinite_query_builder.dart @@ -60,10 +60,10 @@ class InfiniteQueryBuilder withJob({ required InfiniteQueryJob job, required InfiniteQueryBuilderFn builder, + required ArgsType args, ValueChanged>? onData, ValueChanged>? onError, Key? key, - ArgsType? args, }) { return InfiniteQueryBuilder( job.queryKey, @@ -116,7 +116,7 @@ class _InfiniteQueryBuilderState query = client.createInfiniteQuery( widget.queryKey, widget.queryFn, - initialParam: widget.initialPage, + initialPage: widget.initialPage, nextPage: widget.nextPage, retryConfig: widget.retryConfig, refreshConfig: widget.refreshConfig, diff --git a/packages/fl_query/lib/src/widgets/mutation_builder.dart b/packages/fl_query/lib/src/widgets/mutation_builder.dart index a92dd4e..562911b 100644 --- a/packages/fl_query/lib/src/widgets/mutation_builder.dart +++ b/packages/fl_query/lib/src/widgets/mutation_builder.dart @@ -60,11 +60,11 @@ class MutationBuilder ArgsType> job, required MutationBuilderFn builder, + required ArgsType args, Key? key, MutationOnDataFn? onData, MutationOnErrorFn? onError, MutationOnMutationFn? onMutate, - ArgsType? args, }) { return MutationBuilder( job.mutationKey, diff --git a/packages/fl_query/lib/src/widgets/query_builder.dart b/packages/fl_query/lib/src/widgets/query_builder.dart index 55ac752..097b67f 100644 --- a/packages/fl_query/lib/src/widgets/query_builder.dart +++ b/packages/fl_query/lib/src/widgets/query_builder.dart @@ -53,9 +53,9 @@ class QueryBuilder extends StatefulWidget { withJob({ required QueryJob job, required QueryBuilderFn builder, + required ArgsType args, ValueChanged? onData, ValueChanged? onError, - ArgsType? args, Key? key, }) { return QueryBuilder( diff --git a/packages/fl_query_hooks/lib/src/jobs/use_infinite_query_job.dart b/packages/fl_query_hooks/lib/src/jobs/use_infinite_query_job.dart index b26f338..bb595db 100644 --- a/packages/fl_query_hooks/lib/src/jobs/use_infinite_query_job.dart +++ b/packages/fl_query_hooks/lib/src/jobs/use_infinite_query_job.dart @@ -5,9 +5,9 @@ import 'package:flutter/material.dart'; InfiniteQuery useInfiniteQueryJob({ required InfiniteQueryJob job, + required ArgsType args, ValueChanged>? onData, ValueChanged>? onError, - ArgsType? args, List? keys, }) { return useInfiniteQuery( diff --git a/packages/fl_query_hooks/lib/src/jobs/use_mutation_job.dart b/packages/fl_query_hooks/lib/src/jobs/use_mutation_job.dart index 5940e86..b93a9b6 100644 --- a/packages/fl_query_hooks/lib/src/jobs/use_mutation_job.dart +++ b/packages/fl_query_hooks/lib/src/jobs/use_mutation_job.dart @@ -9,7 +9,7 @@ Mutation MutationOnDataFn? onData, MutationOnErrorFn? onError, MutationOnMutationFn? onMutate, - ArgsType? args, + required ArgsType args, List? keys, }) { return useMutation( diff --git a/packages/fl_query_hooks/lib/src/jobs/use_query_job.dart b/packages/fl_query_hooks/lib/src/jobs/use_query_job.dart index 24ce7fc..fc91377 100644 --- a/packages/fl_query_hooks/lib/src/jobs/use_query_job.dart +++ b/packages/fl_query_hooks/lib/src/jobs/use_query_job.dart @@ -6,7 +6,7 @@ Query useQueryJob({ required QueryJob job, ValueChanged? onData, ValueChanged? onError, - ArgsType? args, + required ArgsType args, }) { return useQuery( job.queryKey, diff --git a/packages/fl_query_hooks/lib/src/use_infinite_query.dart b/packages/fl_query_hooks/lib/src/use_infinite_query.dart index 469f2b8..eb40b7a 100644 --- a/packages/fl_query_hooks/lib/src/use_infinite_query.dart +++ b/packages/fl_query_hooks/lib/src/use_infinite_query.dart @@ -26,7 +26,7 @@ InfiniteQuery final query = client.createInfiniteQuery( queryKey, queryFn, - initialParam: initialPage, + initialPage: initialPage, nextPage: nextPage, jsonConfig: jsonConfig, refreshConfig: refreshConfig,