From 0b994002cc20263e1a722b36fed9c82eac5c21b8 Mon Sep 17 00:00:00 2001 From: Stefan Ceriu Date: Tue, 3 Feb 2026 13:44:26 +0200 Subject: [PATCH] Prevent crashes when tapping multiple space children in the spaces tab Also introduce logs for SpaceFlowCoordinator state machine transitions --- .../SpaceFlowCoordinator.swift | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/ElementX/Sources/FlowCoordinators/SpaceFlowCoordinator.swift b/ElementX/Sources/FlowCoordinators/SpaceFlowCoordinator.swift index 77c2fd4fd..90da8c2c8 100644 --- a/ElementX/Sources/FlowCoordinators/SpaceFlowCoordinator.swift +++ b/ElementX/Sources/FlowCoordinators/SpaceFlowCoordinator.swift @@ -244,6 +244,16 @@ class SpaceFlowCoordinator: FlowCoordinatorProtocol { selectedSpaceRoomSubject.send(nil) } + stateMachine.addRouteMapping { event, fromState, _ in + guard case .startRoomFlow = event, case .roomFlow = fromState else { + return nil + } + + return fromState + } handler: { _ in + // Ignore tapping on multiple rooms at the same time + } + stateMachine.addRouteMapping { event, fromState, _ in guard case .startRoomFlow = event, case .space = fromState else { return nil } return .roomFlow(previousState: fromState) @@ -331,6 +341,14 @@ class SpaceFlowCoordinator: FlowCoordinatorProtocol { stateMachine.addErrorHandler { context in fatalError("Unexpected transition: \(context)") } + + stateMachine.addAnyHandler(.any => .any) { context in + if let event = context.event { + MXLog.info("Transitioning from `\(context.fromState)` to `\(context.toState)` with event `\(event)`") + } else { + MXLog.info("Transitioning from \(context.fromState)` to `\(context.toState)`") + } + } } private func presentSpace() {