roomListFilterStateAppliesToRoom function
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;
}