load method

  1. @override
Future<List?> load(
  1. dynamic page,
  2. int limit
)

Implementation

@override
Future<List<PublicSearchResultItem>?> load(Next? page, int limit) async {
  if (page == null) {
    return null;
  }

  final pageReq = page.next ?? '';
  final client = ref.read(alwaysClientProvider);
  final searchValue = state.filter.searchTerm;
  final server = state.filter.server;
  final roomFilter = state.filter.filterBy.name;
  try {
    state = state.copyWith(
      loading: true,
    );
    final res = await client.searchPublicRoom(
      searchValue,
      server,
      roomFilter,
      pageReq,
    );
    final entries = res.chunks();
    final next = res.nextBatch();
    Next? finalPageKey;
    if (next != null) {
      // we are not at the end
      finalPageKey = Next(next: next);
    }
    state = state.copyWith(
      records: page.isStart
          ? [...entries]
          : [...(state.records ?? []), ...entries],
      nextPageKey: finalPageKey,
      loading: false,
    );
  } catch (e) {
    state = state.copyWith(error: e.toString(), loading: false);
  }

  return null;
}