lange Filmliste

main
Herwig Birke 2 months ago
parent 72b4f4e30c
commit 4d1f4b484a

@ -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();
});

@ -21,14 +21,22 @@ class _MovieAddScreenState extends ConsumerState<MovieAddScreen> {
Set<int> _existing = {};
Future<void> _loadExisting() async {
// Fetch a larger set directly from backend to avoid pagination gaps
// Page through backend results to build tmdb_id set without huge single response
final backend = ref.read(backendApiProvider);
final list = await backend.getMovies(limit: 5000);
const pageSize = 500;
var offset = 0;
final ids = <int>{};
while (true) {
final page = await backend.getMovies(offset: offset, limit: pageSize);
for (final m in page) {
final v = (m['tmdb_id'] as num?)?.toInt();
if (v != null) ids.add(v);
}
if (page.length < pageSize) break;
offset += pageSize;
}
setState(() {
_existing = list
.map((m) => (m['tmdb_id'] as num))
.map((n) => n.toInt())
.toSet();
_existing = ids;
});
}

Loading…
Cancel
Save