load method
Implementation
@override
Future<List<PublicSearchResultItem>?> load(Next? page, int limit) async {
if (page == null) {
return null;
}
final pageReq = page.next ?? '';
final client = await ref.read(alwaysClientProvider.future);
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;
}