Skip to content

Commit

Permalink
Update packages() function to include debounce parameter
Browse files Browse the repository at this point in the history
  • Loading branch information
natsuk4ze committed Jan 21, 2024
1 parent d3dd2e1 commit 2d3239c
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 10 deletions.
9 changes: 6 additions & 3 deletions lib/features/packages/packages.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,13 @@ part 'packages.g.dart';
part 'packages.freezed.dart';

@riverpod
Future<List<Package>> packages(PackagesRef ref,
{required String search}) async {
Future<List<Package>> packages(
PackagesRef ref, {
required String search,
bool debounce = true,
}) async {
final cancelToken = ref.cancelToken;
await Future.delayed(const Duration(milliseconds: 500));
if (debounce) await Future.delayed(const Duration(milliseconds: 500));
if (cancelToken.isCancelled) throw Exception('Cancelled');
final packages = await ref.watch(repositoryProvider).getPackges(
search: search,
Expand Down
21 changes: 19 additions & 2 deletions lib/features/packages/packages.g.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 4 additions & 2 deletions lib/features/packages/packages_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -173,8 +173,10 @@ class _PackageItems extends ConsumerWidget {
return sortedPackages.isEmpty
? const _EmptyItem()
: RefreshIndicator(
onRefresh: () async =>
ref.refresh(packagesProvider(search: searchText).future),
onRefresh: () async => ref.refresh(packagesProvider(
search: searchText,
debounce: false,
).future),
child: ListView.separated(
separatorBuilder: (_, __) => const Divider(),
itemCount: sortedPackages.length,
Expand Down
6 changes: 3 additions & 3 deletions test/unit_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@ void main() {
);
const search = FakeRepository.packageName;
expect(
container.read(packagesProvider(search: search)),
container.read(packagesProvider(search: search, debounce: false)),
const AsyncValue<List<Package>>.loading(),
);
final packages =
await container.read(packagesProvider(search: search).future);
final packages = await container
.read(packagesProvider(search: search, debounce: false).future);
expect(
packages,
FakeRepository.packages,
Expand Down

0 comments on commit 2d3239c

Please sign in to comment.