From 2b4c2e8ed6ecdf8fd9bace6761a6ff58f776a800 Mon Sep 17 00:00:00 2001 From: Daniel Pauls Date: Mon, 19 Aug 2019 17:57:14 +0000 Subject: [PATCH 1/2] directory: Rename set_directory_rooms to append_directory_rooms A function in directory.rs is currently called set_directory_rooms, but it's used in a way so that it appends rooms to the directory list. Renaming the function to append_directory_rooms will clarify what it's actually doing. --- fractal-gtk/src/app/backend_loop.rs | 2 +- fractal-gtk/src/appop/directory.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fractal-gtk/src/app/backend_loop.rs b/fractal-gtk/src/app/backend_loop.rs index e8920a543..d4f731968 100644 --- a/fractal-gtk/src/app/backend_loop.rs +++ b/fractal-gtk/src/app/backend_loop.rs @@ -130,7 +130,7 @@ pub fn backend_loop(rx: Receiver) { APPOP!(set_protocols, (protocols)); } Ok(BKResponse::DirectorySearch(rooms)) => { - APPOP!(set_directory_rooms, (rooms)); + APPOP!(append_directory_rooms, (rooms)); } Ok(BKResponse::JoinRoom) => { diff --git a/fractal-gtk/src/appop/directory.rs b/fractal-gtk/src/appop/directory.rs index 79f982d0d..e2f3fc9a3 100644 --- a/fractal-gtk/src/appop/directory.rs +++ b/fractal-gtk/src/appop/directory.rs @@ -128,7 +128,7 @@ impl AppOp { self.search_rooms(true); } - pub fn set_directory_rooms(&mut self, rooms: Vec) { + pub fn append_directory_rooms(&mut self, rooms: Vec) { for r in rooms.iter() { if self.directory.contains(r) { continue; -- GitLab From 748ab68d0153b77246a82a05501f768e3e4fca69 Mon Sep 17 00:00:00 2001 From: Daniel Pauls Date: Mon, 19 Aug 2019 18:08:12 +0000 Subject: [PATCH 2/2] directory: Remove duplicate entries for rooms Currently when opening the room directory and scrolling down, the already existing rooms will get appended to the list as well as the new ones causing duplicates. Only appending new rooms fixes this issue. --- fractal-gtk/src/appop/directory.rs | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/fractal-gtk/src/appop/directory.rs b/fractal-gtk/src/appop/directory.rs index e2f3fc9a3..48fd9a4f8 100644 --- a/fractal-gtk/src/appop/directory.rs +++ b/fractal-gtk/src/appop/directory.rs @@ -129,15 +129,6 @@ impl AppOp { } pub fn append_directory_rooms(&mut self, rooms: Vec) { - for r in rooms.iter() { - if self.directory.contains(r) { - continue; - } - self.directory.push(r.clone()); - } - - self.directory.sort_by_key(|a| -a.n_members); - let directory = self .ui .builder @@ -157,7 +148,11 @@ impl AppOp { .expect("Can't find directory_column in ui file."); directory_stack.set_visible_child(&directory_column); - for r in self.directory.iter() { + let mut sorted_rooms = rooms.clone(); + sorted_rooms.sort_by_key(|a| -a.n_members); + + for r in sorted_rooms.iter() { + self.directory.push(r.clone()); let rb = widgets::RoomBox::new(&r, &self); let room_widget = rb.widget(); directory.add(&room_widget); -- GitLab