From 4da132b5bbc435cfb06ddcede9b743888b8e7786 Mon Sep 17 00:00:00 2001 From: Joscha Date: Tue, 28 Jun 2022 10:32:10 +0200 Subject: [PATCH] Fix suffixes in room list --- src/ui/room.rs | 8 ++++++++ src/ui/rooms.rs | 18 ++++++++++++------ 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/ui/room.rs b/src/ui/room.rs index d41a008..f6162d8 100644 --- a/src/ui/room.rs +++ b/src/ui/room.rs @@ -41,6 +41,14 @@ impl EuphRoom { self.room = None; } + pub fn connected(&self) -> bool { + if let Some(room) = &self.room { + !room.stopped() + } else { + false + } + } + pub fn retain(&mut self) { if let Some(room) = &self.room { if room.stopped() { diff --git a/src/ui/rooms.rs b/src/ui/rooms.rs index 03841f4..0afb7e3 100644 --- a/src/ui/rooms.rs +++ b/src/ui/rooms.rs @@ -63,8 +63,10 @@ impl Rooms { for room in self.vault.euph_rooms().await { rooms.insert(room); } - for room in self.euph_rooms.keys().cloned() { - rooms.insert(room); + for (name, room) in &self.euph_rooms { + if room.connected() { + rooms.insert(name.clone()); + } } let mut rooms = rooms.into_iter().collect::>(); rooms.sort_unstable(); @@ -106,7 +108,7 @@ impl Rooms { .map(|n| n.to_string()) .collect::>(); - self.euph_rooms.retain(|n, r| rooms.contains(n)); + self.euph_rooms.retain(|n, _| rooms.contains(n)); for room in self.euph_rooms.values_mut() { room.retain(); } @@ -147,8 +149,12 @@ impl Rooms { for x in 0..size.width { frame.write(Pos::new(x.into(), y), " ", style); } - let suffix = if self.euph_rooms.contains_key(room) { - "*" + let suffix = if let Some(room) = self.euph_rooms.get(room) { + if room.connected() { + "*" + } else { + "" + } } else { "" }; @@ -165,7 +171,7 @@ impl Rooms { event: KeyEvent, ) { if let Some(room) = &self.focus { - if event.code == KeyCode::Esc { + if event.code == KeyCode::Enter { self.focus = None; } else { let actual_room = self.euph_rooms.entry(room.clone()).or_insert_with(|| {