From 401ff49882192017de58a085ec7bdbe1689554af Mon Sep 17 00:00:00 2001 From: Mauro Romito Date: Thu, 30 Oct 2025 13:29:27 +0100 Subject: [PATCH] pr suggestions --- .../Sources/FlowCoordinators/SpaceFlowCoordinator.swift | 2 +- .../FlowCoordinators/SpaceSettingsFlowCoordinator.swift | 7 ++++++- .../Screens/Spaces/SpaceScreen/SpaceScreenModels.swift | 2 +- .../Spaces/SpaceScreen/SpaceScreenViewModel.swift | 9 +++++---- .../Screens/Spaces/SpaceScreen/View/SpaceScreen.swift | 5 +++-- .../SpaceSettingsScreen/View/SpaceSettingsScreen.swift | 3 +-- 6 files changed, 17 insertions(+), 11 deletions(-) diff --git a/ElementX/Sources/FlowCoordinators/SpaceFlowCoordinator.swift b/ElementX/Sources/FlowCoordinators/SpaceFlowCoordinator.swift index 861fbdd53..e3a0a856c 100644 --- a/ElementX/Sources/FlowCoordinators/SpaceFlowCoordinator.swift +++ b/ElementX/Sources/FlowCoordinators/SpaceFlowCoordinator.swift @@ -277,7 +277,7 @@ class SpaceFlowCoordinator: FlowCoordinatorProtocol { stateMachine.tryEvent(.leftSpace) case .displayMembers(let roomProxy): stateMachine.tryEvent(.startMembersFlow, userInfo: roomProxy) - case .displaySpaceSettings(roomProxy: let roomProxy): + case .displaySpaceSettings(let roomProxy): stateMachine.tryEvent(.startSettingsFlow, userInfo: roomProxy) } } diff --git a/ElementX/Sources/FlowCoordinators/SpaceSettingsFlowCoordinator.swift b/ElementX/Sources/FlowCoordinators/SpaceSettingsFlowCoordinator.swift index ae9719fc0..c0c4e593c 100644 --- a/ElementX/Sources/FlowCoordinators/SpaceSettingsFlowCoordinator.swift +++ b/ElementX/Sources/FlowCoordinators/SpaceSettingsFlowCoordinator.swift @@ -59,7 +59,12 @@ final class SpaceSettingsFlowCoordinator: FlowCoordinatorProtocol { } func clearRoute(animated: Bool) { - // Not implemented yet + switch stateMachine.state { + case .initial: + break + case .spaceSettings: + navigationStackCoordinator.pop(animated: animated) // SpaceSettingsScreen + } } private func configureStateMachine() { diff --git a/ElementX/Sources/Screens/Spaces/SpaceScreen/SpaceScreenModels.swift b/ElementX/Sources/Screens/Spaces/SpaceScreen/SpaceScreenModels.swift index 9be9a72d5..f3954134b 100644 --- a/ElementX/Sources/Screens/Spaces/SpaceScreen/SpaceScreenModels.swift +++ b/ElementX/Sources/Screens/Spaces/SpaceScreen/SpaceScreenModels.swift @@ -44,7 +44,7 @@ enum SpaceScreenViewAction { case selectAllLeaveRoomDetails case toggleLeaveSpaceRoomDetails(id: String) case confirmLeaveSpace - case spaceSettings + case spaceSettings(roomProxy: JoinedRoomProxyProtocol) case rolesAndPermissions case displayMembers(roomProxy: JoinedRoomProxyProtocol) } diff --git a/ElementX/Sources/Screens/Spaces/SpaceScreen/SpaceScreenViewModel.swift b/ElementX/Sources/Screens/Spaces/SpaceScreen/SpaceScreenViewModel.swift index 36024f837..27b53192a 100644 --- a/ElementX/Sources/Screens/Spaces/SpaceScreen/SpaceScreenViewModel.swift +++ b/ElementX/Sources/Screens/Spaces/SpaceScreen/SpaceScreenViewModel.swift @@ -66,6 +66,10 @@ class SpaceScreenViewModel: SpaceScreenViewModelType, SpaceScreenViewModelProtoc } .store(in: &cancellables) + selectedSpaceRoomPublisher + .weakAssign(to: \.state.selectedSpaceRoomID, on: self) + .store(in: &cancellables) + Task { if case let .joined(roomProxy) = await userSession.clientProxy.roomForIdentifier(spaceRoomListProxy.id) { // Required to listen for membership updates in the members flow @@ -124,10 +128,7 @@ class SpaceScreenViewModel: SpaceScreenViewModelType, SpaceScreenViewModelProtoc Task { await confirmLeaveSpace() } case .displayMembers(let roomProxy): actionsSubject.send(.displayMembers(roomProxy: roomProxy)) - case .spaceSettings: - guard let roomProxy = state.roomProxy else { - fatalError("Always available when the space settings button is tapped.") - } + case .spaceSettings(let roomProxy): actionsSubject.send(.displaySpaceSettings(roomProxy: roomProxy)) case .rolesAndPermissions: break // Not implemented yet diff --git a/ElementX/Sources/Screens/Spaces/SpaceScreen/View/SpaceScreen.swift b/ElementX/Sources/Screens/Spaces/SpaceScreen/View/SpaceScreen.swift index 6a43a3e5e..a45c43780 100644 --- a/ElementX/Sources/Screens/Spaces/SpaceScreen/View/SpaceScreen.swift +++ b/ElementX/Sources/Screens/Spaces/SpaceScreen/View/SpaceScreen.swift @@ -74,8 +74,9 @@ struct SpaceScreen: View { } } - if context.viewState.isSpaceManagementEnabled { - Button { context.send(viewAction: .spaceSettings) } label: { + if context.viewState.isSpaceManagementEnabled, + let roomProxy = context.viewState.roomProxy { + Button { context.send(viewAction: .spaceSettings(roomProxy: roomProxy)) } label: { Label(L10n.commonSettings, icon: \.settings) } } diff --git a/ElementX/Sources/Screens/Spaces/SpaceSettingsScreen/View/SpaceSettingsScreen.swift b/ElementX/Sources/Screens/Spaces/SpaceSettingsScreen/View/SpaceSettingsScreen.swift index e383435be..4e9ce6a44 100644 --- a/ElementX/Sources/Screens/Spaces/SpaceSettingsScreen/View/SpaceSettingsScreen.swift +++ b/ElementX/Sources/Screens/Spaces/SpaceSettingsScreen/View/SpaceSettingsScreen.swift @@ -55,8 +55,7 @@ struct SpaceSettingsScreen: View { .foregroundStyle(.compound.textSecondary) } } - - Spacer() + .frame(maxWidth: .infinity, alignment: .leading) ListRowAccessory.navigationLink }