mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 16:10:20 +00:00
Hide the space filters button when not part of any spaces
Also automatically dismiss a selected filter if no longer available i.e. the space has been left.
This commit is contained in:
committed by
Stefan Ceriu
parent
944731257e
commit
26060dde3a
@@ -112,6 +112,7 @@ struct HomeScreenViewState: BindableState {
|
|||||||
|
|
||||||
var spaceFiltersEnabled = false
|
var spaceFiltersEnabled = false
|
||||||
|
|
||||||
|
var shouldShowSpaceFilters = false
|
||||||
var selectedSpaceFilter: SpaceServiceFilter?
|
var selectedSpaceFilter: SpaceServiceFilter?
|
||||||
|
|
||||||
var visibleRooms: [HomeScreenRoom] {
|
var visibleRooms: [HomeScreenRoom] {
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ class HomeScreenViewModel: HomeScreenViewModelType, HomeScreenViewModelProtocol
|
|||||||
actionsSubject.eraseToAnyPublisher()
|
actionsSubject.eraseToAnyPublisher()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// swiftlint:disable:next function_body_length
|
||||||
init(userSession: UserSessionProtocol,
|
init(userSession: UserSessionProtocol,
|
||||||
selectedRoomPublisher: CurrentValuePublisher<String?, Never>,
|
selectedRoomPublisher: CurrentValuePublisher<String?, Never>,
|
||||||
appSettings: AppSettings,
|
appSettings: AppSettings,
|
||||||
@@ -95,6 +96,21 @@ class HomeScreenViewModel: HomeScreenViewModelType, HomeScreenViewModelProtocol
|
|||||||
}
|
}
|
||||||
.store(in: &cancellables)
|
.store(in: &cancellables)
|
||||||
|
|
||||||
|
userSession.clientProxy.spaceService.spaceFilterPublisher
|
||||||
|
.receive(on: DispatchQueue.main)
|
||||||
|
.sink { [weak self] filters in
|
||||||
|
guard let self else { return }
|
||||||
|
|
||||||
|
state.shouldShowSpaceFilters = !filters.isEmpty
|
||||||
|
|
||||||
|
if let selectedSpaceFilter = spaceFilterSubject.value,
|
||||||
|
!filters.contains(selectedSpaceFilter) {
|
||||||
|
// Clear the spaces filter if the space has been left.
|
||||||
|
spaceFilterSubject.send(nil)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.store(in: &cancellables)
|
||||||
|
|
||||||
selectedRoomPublisher
|
selectedRoomPublisher
|
||||||
.weakAssign(to: \.state.selectedRoomID, on: self)
|
.weakAssign(to: \.state.selectedRoomID, on: self)
|
||||||
.store(in: &cancellables)
|
.store(in: &cancellables)
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ struct HomeScreen: View {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if context.viewState.spaceFiltersEnabled {
|
if context.viewState.spaceFiltersEnabled, context.viewState.shouldShowSpaceFilters {
|
||||||
if #available(iOS 26, *) {
|
if #available(iOS 26, *) {
|
||||||
ToolbarSpacer(.fixed, placement: .primaryAction)
|
ToolbarSpacer(.fixed, placement: .primaryAction)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user