fetchNextPage method

Future<void> fetchNextPage()

Implementation

Future<void> fetchNextPage() async {
  if (_isLoadingMore || !_hasMore || state.isLoading) return;

  _isLoadingMore = true;
  final repository = ref.read(sceneRepositoryProvider);
  final query = ref.read(sceneSearchQueryProvider);
  final sortConfig = ref.read(sceneSortProvider);
  final filter = ref.read(sceneFilterStateProvider);
  final organizedOnly = ref.read(sceneOrganizedOnlyProvider);

  try {
    final nextPage = _currentPage + 1;
    final nextScenes = await repository.findScenes(
      page: nextPage,
      perPage: _perPage,
      filter: query.isEmpty ? null : query,
      sort: sortConfig.sort,
      descending: sortConfig.descending,
      organized: organizedOnly ? true : null,
      sceneFilter: filter,
    );

    if (nextScenes.isEmpty) {
      _hasMore = false;
    } else {
      _currentPage = nextPage;
      state = AsyncData([...state.value ?? [], ...nextScenes]);
    }
  } catch (e) {
    // In a real app, you might want to show a snackbar for error during pagination
  } finally {
    _isLoadingMore = false;
  }
}