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