fetchNextPage method

Future<void> fetchNextPage()

Implementation

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

  _isLoadingMore = true;
  final repository = ref.read(groupRepositoryProvider);
  final query = ref.read(groupSearchQueryProvider);
  final sortConfig = ref.read(groupSortProvider);

  try {
    final nextPage = _currentPage + 1;
    final nextGroups = await repository.findGroups(
      page: nextPage,
      perPage: _perPage,
      filter: query.isEmpty ? null : query,
      sort: sortConfig.sort,
      descending: sortConfig.descending,
    );

    if (nextGroups.isEmpty) {
      _hasMore = false;
    } else {
      _currentPage = nextPage;
      state = AsyncData([...state.value ?? [], ...nextGroups]);
    }
  } finally {
    _isLoadingMore = false;
  }
}