pr suggestions and implemented a simpler way to clear the route, that always brings back to the initial coordinator

This commit is contained in:
Mauro Romito
2025-11-05 16:05:09 +01:00
committed by Mauro
parent e597dd8722
commit 6dee4176f2
7 changed files with 136 additions and 50 deletions
@@ -13,6 +13,7 @@ import SwiftState
protocol StateMachineFactoryProtocol {
func makeUserSessionFlowStateMachine(state: UserSessionFlowCoordinator.State) -> StateMachine<UserSessionFlowCoordinator.State, UserSessionFlowCoordinator.Event>
func makeChatsFlowStateMachine() -> ChatsFlowCoordinatorStateMachine
func makeMembersFlowStateMachine(state: RoomMembersFlowCoordinator.State) -> StateMachine<RoomMembersFlowCoordinator.State, RoomMembersFlowCoordinator.Event>
}
struct StateMachineFactory: StateMachineFactoryProtocol {
@@ -23,6 +24,10 @@ struct StateMachineFactory: StateMachineFactoryProtocol {
func makeChatsFlowStateMachine() -> ChatsFlowCoordinatorStateMachine {
.init()
}
func makeMembersFlowStateMachine(state: RoomMembersFlowCoordinator.State) -> StateMachine<RoomMembersFlowCoordinator.State, RoomMembersFlowCoordinator.Event> {
.init(state: state)
}
}
// MARK: For testing
@@ -49,4 +54,14 @@ class PublishedStateMachineFactory: StateMachineFactoryProtocol {
stateMachine.addTransitionHandler { [weak self] in self?.chatsFlowStatePublisher.send($0.toState) }
return stateMachine
}
// MARK: MembersFlowCoordinator
let membersFlowStatePublisher = PassthroughSubject<RoomMembersFlowCoordinator.State, Never>()
func makeMembersFlowStateMachine(state: RoomMembersFlowCoordinator.State) -> StateMachine<RoomMembersFlowCoordinator.State, RoomMembersFlowCoordinator.Event> {
let stateMachine = baseFactory.makeMembersFlowStateMachine(state: state)
stateMachine.addAnyHandler(.any => .any) { [weak self] in self?.membersFlowStatePublisher.send($0.toState) }
return stateMachine
}
}