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));