fetchPreviousPage method

Future<void> fetchPreviousPage()

Fetch the previous page of data.

Implementation

Future<void> fetchPreviousPage() async {
  if (isFetchingPreviousPage.value || !hasPreviousPage.value || isDisposed) {
    return;
  }

  isFetchingPreviousPage.value = true;
  update();

  _previousPageCancelToken?.cancel('New previous page fetch started');
  final token = ZenCancelToken('Fetching previous page');
  _previousPageCancelToken = token;

  try {
    final newPage = await infiniteFetcher(_previousPageParam, token);

    if (isDisposed || token.isCancelled) return;

    final currentPages = data.value ?? [];
    final allPages = [newPage, ...currentPages];

    _updateDataAndCache(allPages);

    // Calculate params again
    _updateParams(allPages);

    error.value = null;
  } catch (e) {
    _handleFetchError(e, token);
  } finally {
    if (!isDisposed) {
      isFetchingPreviousPage.value = false;
      if (_previousPageCancelToken == token) {
        _previousPageCancelToken = null;
      }
      update();
    }
  }
}