From 1d2a4f2bc4d7e0d03c5719ec9978b4094d54b364 Mon Sep 17 00:00:00 2001 From: Kevin Boos Date: Wed, 8 Jul 2026 22:35:27 -0700 Subject: [PATCH] Clean up the UI state of removed rooms that were left --- src/home/rooms_list.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/home/rooms_list.rs b/src/home/rooms_list.rs index c3e1ad2e..2c9e1185 100644 --- a/src/home/rooms_list.rs +++ b/src/home/rooms_list.rs @@ -26,7 +26,7 @@ use matrix_sdk::{RoomState, ruma::{events::tag::Tags, MilliSecondsSinceUnixEpoch use crate::{ app::{AppState, AppStateAction, SelectedRoom}, home::{ - navigation_tab_bar::{NavigationBarAction, SelectedTab}, room_context_menu::RoomContextMenuDetails, rooms_list_entry::RoomsListEntryAction, space_lobby::{SpaceLobbyAction, SpaceLobbyEntryWidgetExt} + navigation_tab_bar::{NavigationBarAction, SelectedTab}, room_context_menu::RoomContextMenuDetails, room_screen::invalidate_timeline_state, rooms_list_entry::RoomsListEntryAction, space_lobby::{SpaceLobbyAction, SpaceLobbyEntryWidgetExt} }, logout::logout_confirm_modal::LogoutAction, room::{ @@ -704,6 +704,13 @@ impl RoomsList { } self.hidden_rooms.remove(&room_id); + + // If the removed room is no longer joined (left/kicked/banned), + // drop all of its saved UI state. + if matches!(new_state, RoomState::Left | RoomState::Banned) { + invalidate_timeline_state(cx, &TimelineKind::MainRoom { room_id }); + } + self.update_status(); } RoomsListUpdate::ClearRooms => {