From 80dad0012560d723585d77ca7d9d6efdf93e2ae9 Mon Sep 17 00:00:00 2001 From: Joscha Date: Wed, 17 Aug 2022 23:04:43 +0200 Subject: [PATCH] Fix crash when connecting to some types of room --- CHANGELOG.md | 4 ++++ src/ui/rooms.rs | 9 ++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dfc25da..31ced02 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,10 @@ Procedure when bumping the version number: ## Unreleased +### Fixed +- Crash when connecting to nonexistent rooms +- Crash when connecting to rooms that require authentication + ## v0.2.1 - 2022-08-11 ### Added diff --git a/src/ui/rooms.rs b/src/ui/rooms.rs index b4a5298..125907f 100644 --- a/src/ui/rooms.rs +++ b/src/ui/rooms.rs @@ -67,12 +67,19 @@ impl Rooms { /// - failed connection attempts, or /// - rooms that were deleted from the db. async fn stabilize_rooms(&mut self) { - let rooms_set = self + let mut rooms_set = self .vault .euph_rooms() .await .into_iter() .collect::>(); + + // Prevent room that is currently being shown from being removed. This + // could otherwise happen when connecting to a room that doesn't exist. + if let State::ShowRoom(name) = &self.state { + rooms_set.insert(name.clone()); + } + self.euph_rooms .retain(|n, r| !r.stopped() || rooms_set.contains(n));