membersIdWithSearchProvider top-level property

dynamic membersIdWithSearchProvider
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;
});