From 354e126a96080d5b312e791525a3ed3bc23d27d2 Mon Sep 17 00:00:00 2001 From: ganfra Date: Wed, 4 Feb 2026 13:40:06 +0100 Subject: [PATCH] Add back navigation to clear space filter selection --- .../android/features/home/impl/HomeState.kt | 2 ++ .../android/features/home/impl/HomeView.kt | 15 +++++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomeState.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomeState.kt index 07b4be123c..e27ccb72ae 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomeState.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomeState.kt @@ -9,6 +9,7 @@ package io.element.android.features.home.impl import io.element.android.features.home.impl.roomlist.RoomListState +import io.element.android.features.home.impl.spacefilters.SpaceFiltersState import io.element.android.features.home.impl.spaces.HomeSpacesState import io.element.android.features.logout.api.direct.DirectLogoutState import io.element.android.libraries.designsystem.utils.snackbar.SnackbarMessage @@ -31,6 +32,7 @@ data class HomeState( val directLogoutState: DirectLogoutState, val eventSink: (HomeEvent) -> Unit, ) { + val isBackHandlerEnabled = currentHomeNavigationBarItem != HomeNavigationBarItem.Chats || roomListState.spaceFiltersState is SpaceFiltersState.Selected val displayActions = currentHomeNavigationBarItem == HomeNavigationBarItem.Chats val displayRoomListFilters = currentHomeNavigationBarItem == HomeNavigationBarItem.Chats && roomListState.displayFilters val showNavigationBar = homeSpacesState.canCreateSpaces || homeSpacesState.spaceRooms.isNotEmpty() diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomeView.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomeView.kt index 9c0791230a..eee6f49db3 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomeView.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomeView.kt @@ -50,6 +50,8 @@ import io.element.android.features.home.impl.roomlist.RoomListDeclineInviteMenu import io.element.android.features.home.impl.roomlist.RoomListEvent import io.element.android.features.home.impl.roomlist.RoomListState import io.element.android.features.home.impl.search.RoomListSearchView +import io.element.android.features.home.impl.spacefilters.SpaceFiltersEvent +import io.element.android.features.home.impl.spacefilters.SpaceFiltersState import io.element.android.features.home.impl.spacefilters.SpaceFiltersView import io.element.android.features.home.impl.spaces.HomeSpacesView import io.element.android.libraries.androidutils.throttler.FirstThrottler @@ -154,10 +156,15 @@ private fun HomeScaffold( val snackbarHostState = rememberSnackbarHostState(snackbarMessage = state.snackbarMessage) val roomListState: RoomListState = state.roomListState - BackHandler( - enabled = state.currentHomeNavigationBarItem != HomeNavigationBarItem.Chats, - ) { - state.eventSink(HomeEvent.SelectHomeNavigationBarItem(HomeNavigationBarItem.Chats)) + BackHandler(enabled = state.isBackHandlerEnabled) { + if (state.currentHomeNavigationBarItem != HomeNavigationBarItem.Chats) { + state.eventSink(HomeEvent.SelectHomeNavigationBarItem(HomeNavigationBarItem.Chats)) + } else { + val spaceFiltersState = state.roomListState.spaceFiltersState + if (spaceFiltersState is SpaceFiltersState.Selected) { + spaceFiltersState.eventSink(SpaceFiltersEvent.Selected.ClearSelection) + } + } } val hazeState = rememberHazeState()