Skip to content

Commit c65c6f1

Browse files
committed
feat(ui): RoomList::entries* manipulates a Room.
This patch is quite big… `RoomList::entries*` now returns `Room`s instead of `RoomListEntry`s. This patch consequently updates all the filters to manipulate `Room` instead of `RoomListEntry`. No more `Client` is needed in the filters. This patch also disables the `RoomList` integration test suite in order to keep this patch “small”.
1 parent 8d03e34 commit c65c6f1

File tree

16 files changed

+438
-486
lines changed

16 files changed

+438
-486
lines changed

crates/matrix-sdk-ui/src/room_list_service/filters/all.rs

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -12,76 +12,80 @@
1212
// See the License for the specific language governing permissions and
1313
// limitations under the License.
1414

15-
use super::{super::room_list::BoxedFilterFn, Filter};
15+
use super::{BoxedFilterFn, Filter};
1616

1717
/// Create a new filter that will run multiple filters. It returns `false` if at
1818
/// least one of the filter returns `false`.
1919
pub fn new_filter(filters: Vec<BoxedFilterFn>) -> impl Filter {
20-
move |room_list_entry| -> bool { filters.iter().all(|filter| filter(room_list_entry)) }
20+
move |room| -> bool { filters.iter().all(|filter| filter(room)) }
2121
}
2222

2323
#[cfg(test)]
2424
mod tests {
2525
use std::ops::Not;
2626

27-
use matrix_sdk::RoomListEntry;
28-
use ruma::room_id;
27+
use matrix_sdk_test::async_test;
2928

30-
use super::new_filter;
29+
use super::{
30+
super::{client_and_server_prelude, new_room, Room},
31+
*,
32+
};
3133

32-
#[test]
33-
fn test_one_filter() {
34-
let room_list_entry = RoomListEntry::Filled(room_id!("!r0:bar.org").to_owned());
34+
#[async_test]
35+
async fn test_one_filter() {
36+
let (client, server, sliding_sync) = client_and_server_prelude().await;
37+
let room = new_room(&client, &server, &sliding_sync).await;
3538

3639
{
3740
let filter = |_: &_| true;
3841
let all = new_filter(vec![Box::new(filter)]);
3942

40-
assert!(all(&room_list_entry));
43+
assert!(all(&room));
4144
}
4245

4346
{
4447
let filter = |_: &_| false;
4548
let all = new_filter(vec![Box::new(filter)]);
4649

47-
assert!(all(&room_list_entry).not());
50+
assert!(all(&room).not());
4851
}
4952
}
5053

51-
#[test]
52-
fn test_two_filters() {
53-
let room_list_entry = RoomListEntry::Filled(room_id!("!r0:bar.org").to_owned());
54+
#[async_test]
55+
async fn test_two_filters() {
56+
let (client, server, sliding_sync) = client_and_server_prelude().await;
57+
let room = new_room(&client, &server, &sliding_sync).await;
5458

5559
{
5660
let filter1 = |_: &_| true;
5761
let filter2 = |_: &_| true;
5862
let all = new_filter(vec![Box::new(filter1), Box::new(filter2)]);
5963

60-
assert!(all(&room_list_entry));
64+
assert!(all(&room));
6165
}
6266

6367
{
6468
let filter1 = |_: &_| true;
6569
let filter2 = |_: &_| false;
6670
let all = new_filter(vec![Box::new(filter1), Box::new(filter2)]);
6771

68-
assert!(all(&room_list_entry).not());
72+
assert!(all(&room).not());
6973
}
7074

7175
{
7276
let filter1 = |_: &_| false;
7377
let filter2 = |_: &_| true;
7478
let all = new_filter(vec![Box::new(filter1), Box::new(filter2)]);
7579

76-
assert!(all(&room_list_entry).not());
80+
assert!(all(&room).not());
7781
}
7882

7983
{
8084
let filter1 = |_: &_| false;
8185
let filter2 = |_: &_| false;
8286
let all = new_filter(vec![Box::new(filter1), Box::new(filter2)]);
8387

84-
assert!(all(&room_list_entry).not());
88+
assert!(all(&room).not());
8589
}
8690
}
8791
}

crates/matrix-sdk-ui/src/room_list_service/filters/any.rs

Lines changed: 37 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -12,84 +12,92 @@
1212
// See the License for the specific language governing permissions and
1313
// limitations under the License.
1414

15-
use super::{super::room_list::BoxedFilterFn, Filter};
15+
use super::{BoxedFilterFn, Filter};
1616

1717
/// Create a new filter that will run multiple filters. It returns `true` if at
1818
/// least one of the filter returns `true`.
1919
pub fn new_filter(filters: Vec<BoxedFilterFn>) -> impl Filter {
20-
move |room_list_entry| -> bool { filters.iter().any(|filter| filter(room_list_entry)) }
20+
move |room| -> bool { filters.iter().any(|filter| filter(room)) }
2121
}
2222

2323
#[cfg(test)]
2424
mod tests {
2525
use std::ops::Not;
2626

27-
use matrix_sdk::RoomListEntry;
28-
use ruma::room_id;
27+
use matrix_sdk_test::async_test;
2928

30-
use super::new_filter;
29+
use super::{
30+
super::{client_and_server_prelude, new_room},
31+
*,
32+
};
3133

32-
#[test]
33-
fn test_one_filter_is_true() {
34-
let room_list_entry = RoomListEntry::Filled(room_id!("!r0:bar.org").to_owned());
34+
#[async_test]
35+
async fn test_one_filter_is_true() {
36+
let (client, server, sliding_sync) = client_and_server_prelude().await;
37+
let room = new_room(&client, &server, &sliding_sync).await;
3538

3639
let filter = |_: &_| true;
3740
let any = new_filter(vec![Box::new(filter)]);
3841

39-
assert!(any(&room_list_entry));
42+
assert!(any(&room));
4043
}
4144

42-
#[test]
43-
fn test_one_filter_is_false() {
44-
let room_list_entry = RoomListEntry::Filled(room_id!("!r0:bar.org").to_owned());
45+
#[async_test]
46+
async fn test_one_filter_is_false() {
47+
let (client, server, sliding_sync) = client_and_server_prelude().await;
48+
let room = new_room(&client, &server, &sliding_sync).await;
4549

4650
let filter = |_: &_| false;
4751
let any = new_filter(vec![Box::new(filter)]);
4852

49-
assert!(any(&room_list_entry).not());
53+
assert!(any(&room).not());
5054
}
5155

52-
#[test]
53-
fn test_two_filters_with_true_true() {
54-
let room_list_entry = RoomListEntry::Filled(room_id!("!r0:bar.org").to_owned());
56+
#[async_test]
57+
async fn test_two_filters_with_true_true() {
58+
let (client, server, sliding_sync) = client_and_server_prelude().await;
59+
let room = new_room(&client, &server, &sliding_sync).await;
5560

5661
let filter1 = |_: &_| true;
5762
let filter2 = |_: &_| true;
5863
let any = new_filter(vec![Box::new(filter1), Box::new(filter2)]);
5964

60-
assert!(any(&room_list_entry));
65+
assert!(any(&room));
6166
}
6267

63-
#[test]
64-
fn test_two_filters_with_true_false() {
65-
let room_list_entry = RoomListEntry::Filled(room_id!("!r0:bar.org").to_owned());
68+
#[async_test]
69+
async fn test_two_filters_with_true_false() {
70+
let (client, server, sliding_sync) = client_and_server_prelude().await;
71+
let room = new_room(&client, &server, &sliding_sync).await;
6672

6773
let filter1 = |_: &_| true;
6874
let filter2 = |_: &_| false;
6975
let any = new_filter(vec![Box::new(filter1), Box::new(filter2)]);
7076

71-
assert!(any(&room_list_entry));
77+
assert!(any(&room));
7278
}
7379

74-
#[test]
75-
fn test_two_filters_with_false_true() {
76-
let room_list_entry = RoomListEntry::Filled(room_id!("!r0:bar.org").to_owned());
80+
#[async_test]
81+
async fn test_two_filters_with_false_true() {
82+
let (client, server, sliding_sync) = client_and_server_prelude().await;
83+
let room = new_room(&client, &server, &sliding_sync).await;
7784

7885
let filter1 = |_: &_| false;
7986
let filter2 = |_: &_| true;
8087
let any = new_filter(vec![Box::new(filter1), Box::new(filter2)]);
8188

82-
assert!(any(&room_list_entry));
89+
assert!(any(&room));
8390
}
8491

85-
#[test]
86-
fn test_two_filters_with_false_false() {
87-
let room_list_entry = RoomListEntry::Filled(room_id!("!r0:bar.org").to_owned());
92+
#[async_test]
93+
async fn test_two_filters_with_false_false() {
94+
let (client, server, sliding_sync) = client_and_server_prelude().await;
95+
let room = new_room(&client, &server, &sliding_sync).await;
8896

8997
let filter1 = |_: &_| false;
9098
let filter2 = |_: &_| false;
9199
let any = new_filter(vec![Box::new(filter1), Box::new(filter2)]);
92100

93-
assert!(any(&room_list_entry).not());
101+
assert!(any(&room).not());
94102
}
95103
}

0 commit comments

Comments
 (0)