membersIdWithSearchProvider top-level property
final
Ids of the members of the Room with search value. Returns empty list if the room isn’t found
Implementation
final membersIdWithSearchProvider = FutureProvider.family
.autoDispose<List<String>, RoomMembersSearchParam>((ref, param) async {
final room = await ref.watch(maybeRoomProvider(param.roomId).future);
if (room == null) return [];
final members = await room.activeMembersIds();
final List<String> membersIdList = asDartStringList(members);
final searchTerm = param.searchValue.toLowerCase();
if (searchTerm.isEmpty) return membersIdList;
final List<String> foundedMembersId = [];
for (final memberId in membersIdList) {
final memberInfo = ref.watch(
memberAvatarInfoProvider((userId: memberId, roomId: param.roomId)),
);
if (memberInfo.displayName?.toLowerCase().contains(searchTerm) == true ||
memberId.toLowerCase().contains(searchTerm)) {
foundedMembersId.add(memberId);
}
}
return foundedMembersId;
});