roomListFilterStateAppliesToRoom function

Future<bool> roomListFilterStateAppliesToRoom(
  1. RoomListFilterState state,
  2. dynamic ref,
  3. String convoId
)

Implementation

Future<bool> roomListFilterStateAppliesToRoom(
  RoomListFilterState state,
  Ref ref,
  String convoId,
) async {
  switch (state.selection) {
    case FilterSelection.dmsOnly:
      final isDm = await ref.watch(isDirectChatProvider(convoId).future);
      if (!isDm) {
        return false;
      }
      break;
    case FilterSelection.favorites:
      if (!await ref.watch(isConvoBookmarked(convoId).future)) {
        return false;
      }
      break;
    default: // all other case just continue
      break;
  }
  if (state.searchTerm?.isNotEmpty == true) {
    final searchTerm = state.searchTerm!.toLowerCase();
    if (convoId.toLowerCase().contains(searchTerm)) {
      return true;
    }
    final displayName = await ref.read(roomDisplayNameProvider(convoId).future);
    return (displayName != null &&
        displayName.toLowerCase().contains(searchTerm));
  }
  return true;
}