|
|
|
|
@ -8,6 +8,15 @@ final movieFilterProvider = StateProvider<ItemStatus?>((_) => null);
|
|
|
|
|
final moviesProvider = FutureProvider.autoDispose<List<Movie>>((ref) async {
|
|
|
|
|
final backend = ref.watch(backendApiProvider);
|
|
|
|
|
final st = ref.watch(movieFilterProvider);
|
|
|
|
|
final list = await backend.getMovies(status: st?.name);
|
|
|
|
|
return list.map(Movie.fromJson).toList();
|
|
|
|
|
});
|
|
|
|
|
// Page through results to avoid large single-response 500s on the server
|
|
|
|
|
const pageSize = 500;
|
|
|
|
|
var offset = 0;
|
|
|
|
|
final all = <Map<String, dynamic>>[];
|
|
|
|
|
while (true) {
|
|
|
|
|
final page = await backend.getMovies(status: st?.name, offset: offset, limit: pageSize);
|
|
|
|
|
all.addAll(page);
|
|
|
|
|
if (page.length < pageSize) break;
|
|
|
|
|
offset += pageSize;
|
|
|
|
|
}
|
|
|
|
|
return all.map(Movie.fromJson).toList();
|
|
|
|
|
});
|
|
|
|
|
|