queryUsers method
Future<void>
queryUsers({
- Filter? filter,
- List<
SortOption> ? sort, - bool? presence,
- PaginationParams pagination = const PaginationParams(limit: 30),
The Query Users method allows you to search for users and see if they are online/offline. API Reference
Implementation
Future<void> queryUsers({
Filter? filter,
List<SortOption>? sort,
bool? presence,
PaginationParams pagination = const PaginationParams(limit: 30),
}) async {
final client = _streamChatCore.client;
final offset = pagination.offset;
final clear = offset == null || offset == 0;
if (clear && _paginationEnded) {
_paginationEnded = false;
}
if ((!clear && _paginationEnded) || _queryUsersLoadingController.value) {
return;
}
if (_usersController.hasValue) {
_queryUsersLoadingController.safeAdd(true);
}
try {
final oldUsers = List<User>.from(users ?? []);
final usersResponse = await client.queryUsers(
filter: filter,
sort: sort,
presence: presence,
pagination: pagination,
);
final newUsers = usersResponse.users;
if (clear) {
_usersController.safeAdd(usersResponse.users);
} else {
final temp = oldUsers + usersResponse.users;
_usersController.safeAdd(temp);
}
if (_usersController.hasValue && _queryUsersLoadingController.value) {
_queryUsersLoadingController.safeAdd(false);
}
if (newUsers.isEmpty || newUsers.length < pagination.limit) {
_paginationEnded = true;
}
} catch (e, stk) {
// reset loading controller
_queryUsersLoadingController.safeAdd(false);
if (_usersController.hasValue) {
_queryUsersLoadingController.safeAddError(e, stk);
} else {
_usersController.safeAddError(e, stk);
}
}
}