diff --git a/lib/features/movies/data/movie_repository.dart b/lib/features/movies/data/movie_repository.dart index 2140b67..4b187a7 100644 --- a/lib/features/movies/data/movie_repository.dart +++ b/lib/features/movies/data/movie_repository.dart @@ -8,6 +8,15 @@ final movieFilterProvider = StateProvider((_) => null); final moviesProvider = FutureProvider.autoDispose>((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(); -}); \ No newline at end of file + // Page through results to avoid large single-response 500s on the server + const pageSize = 500; + var offset = 0; + final all = >[]; + 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(); +}); diff --git a/lib/features/movies/presentation/movie_add_screen.dart b/lib/features/movies/presentation/movie_add_screen.dart index 35b1222..81ab03f 100644 --- a/lib/features/movies/presentation/movie_add_screen.dart +++ b/lib/features/movies/presentation/movie_add_screen.dart @@ -21,14 +21,22 @@ class _MovieAddScreenState extends ConsumerState { Set _existing = {}; Future _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 = {}; + 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; }); }