From e91f170589b5ad28608a8788fb04cd49a1bbba7e Mon Sep 17 00:00:00 2001 From: Ivan Enderlin Date: Thu, 21 Sep 2023 09:20:28 +0200 Subject: [PATCH] feat(ui): Add the `none` filter. It's the opposite of the `all` filter. This one rejects all entries. --- .../src/room_list_service/filters/mod.rs | 2 ++ .../src/room_list_service/filters/none.rs | 25 +++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 crates/matrix-sdk-ui/src/room_list_service/filters/none.rs diff --git a/crates/matrix-sdk-ui/src/room_list_service/filters/mod.rs b/crates/matrix-sdk-ui/src/room_list_service/filters/mod.rs index e59eb7901..a322180e1 100644 --- a/crates/matrix-sdk-ui/src/room_list_service/filters/mod.rs +++ b/crates/matrix-sdk-ui/src/room_list_service/filters/mod.rs @@ -1,9 +1,11 @@ mod all; mod fuzzy_match_room_name; +mod none; mod normalized_match_room_name; pub use all::new_filter as new_filter_all; pub use fuzzy_match_room_name::new_filter as new_filter_fuzzy_match_room_name; +pub use none::new_filter as new_filter_none; pub use normalized_match_room_name::new_filter as new_filter_normalized_match_room_name; use unicode_normalization::{char::is_combining_mark, UnicodeNormalization}; diff --git a/crates/matrix-sdk-ui/src/room_list_service/filters/none.rs b/crates/matrix-sdk-ui/src/room_list_service/filters/none.rs new file mode 100644 index 000000000..a500fe7de --- /dev/null +++ b/crates/matrix-sdk-ui/src/room_list_service/filters/none.rs @@ -0,0 +1,25 @@ +use matrix_sdk::RoomListEntry; + +/// Create a new filter that will reject all entries. +pub fn new_filter() -> impl Fn(&RoomListEntry) -> bool { + |_room_list_entry| -> bool { false } +} + +#[cfg(test)] +mod tests { + use std::ops::Not; + + use matrix_sdk::RoomListEntry; + use ruma::room_id; + + use super::new_filter; + + #[test] + fn test_all_kind_of_room_list_entry() { + let none = new_filter(); + + assert!(none(&RoomListEntry::Empty).not()); + assert!(none(&RoomListEntry::Filled(room_id!("!r0:bar.org").to_owned())).not()); + assert!(none(&RoomListEntry::Invalidated(room_id!("!r0:bar.org").to_owned())).not()); + } +}