mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-04 00:49:44 +00:00
pr suggestions and implemented a simpler way to clear the route, that always brings back to the initial coordinator
This commit is contained in:
@@ -59,6 +59,8 @@ final class RoomMembersFlowCoordinator: FlowCoordinatorProtocol {
|
||||
private let entryPoint: RoomMembersFlowCoordinatorEntryPoint
|
||||
private let roomProxy: JoinedRoomProxyProtocol
|
||||
private let navigationStackCoordinator: NavigationStackCoordinator
|
||||
/// The last coordinator in the `navigationStackCoordinator` stack at the initial state
|
||||
private let initialCoordinator: CoordinatorProtocol?
|
||||
private let flowParameters: CommonFlowParameters
|
||||
|
||||
private let stateMachine: StateMachine<State, Event>
|
||||
@@ -79,8 +81,9 @@ final class RoomMembersFlowCoordinator: FlowCoordinatorProtocol {
|
||||
self.roomProxy = roomProxy
|
||||
self.flowParameters = flowParameters
|
||||
self.navigationStackCoordinator = navigationStackCoordinator
|
||||
initialCoordinator = navigationStackCoordinator.stackCoordinators.last ?? navigationStackCoordinator.rootCoordinator
|
||||
|
||||
stateMachine = .init(state: .initial)
|
||||
stateMachine = flowParameters.stateMachineFactory.makeMembersFlowStateMachine(state: .initial)
|
||||
configureStateMachine()
|
||||
}
|
||||
|
||||
@@ -123,14 +126,21 @@ final class RoomMembersFlowCoordinator: FlowCoordinatorProtocol {
|
||||
}
|
||||
|
||||
func clearRoute(animated: Bool) {
|
||||
if stateMachine.state == .inviteUsersScreen {
|
||||
switch stateMachine.state {
|
||||
case .inviteUsersScreen:
|
||||
navigationStackCoordinator.setSheetCoordinator(nil, animated: animated)
|
||||
} else if let roomFlowCoordinator {
|
||||
roomFlowCoordinator.clearRoute(animated: animated)
|
||||
clearRoute(animated: animated)
|
||||
case .roomFlow:
|
||||
roomFlowCoordinator?.clearRoute(animated: animated)
|
||||
clearRoute(animated: animated)
|
||||
case .initial:
|
||||
break
|
||||
case .roomMemberDetails, .roomMembersList, .userProfile:
|
||||
guard let initialCoordinator else {
|
||||
return
|
||||
}
|
||||
navigationStackCoordinator.pop(to: initialCoordinator, animated: animated)
|
||||
}
|
||||
// We don't support dismissing a sub flow by itself, only the entire chain.
|
||||
// The presenter flow will take care of dismissing it
|
||||
actionsSubject.send(.finished)
|
||||
}
|
||||
|
||||
private func configureStateMachine() {
|
||||
|
||||
@@ -59,14 +59,11 @@ final class SpaceSettingsFlowCoordinator: FlowCoordinatorProtocol {
|
||||
|
||||
private let roomProxy: JoinedRoomProxyProtocol
|
||||
private let navigationStackCoordinator: NavigationStackCoordinator
|
||||
private let initialCoordinator: CoordinatorProtocol?
|
||||
private let flowParameters: CommonFlowParameters
|
||||
|
||||
private let stateMachine: StateMachine<State, Event>
|
||||
private var cancellables = Set<AnyCancellable>()
|
||||
private var modalNavigationStackCoordinator: NavigationStackCoordinator?
|
||||
|
||||
private var membersFlowCoordinator: RoomMembersFlowCoordinator?
|
||||
private var rolesAndPermissionsFlowCoordinator: RoomRolesAndPermissionsFlowCoordinator?
|
||||
|
||||
private var membersFlowCoordinator: RoomMembersFlowCoordinator?
|
||||
private var rolesAndPermissionsFlowCoordinator: RoomRolesAndPermissionsFlowCoordinator?
|
||||
@@ -82,6 +79,7 @@ final class SpaceSettingsFlowCoordinator: FlowCoordinatorProtocol {
|
||||
self.roomProxy = roomProxy
|
||||
self.flowParameters = flowParameters
|
||||
self.navigationStackCoordinator = navigationStackCoordinator
|
||||
initialCoordinator = navigationStackCoordinator.stackCoordinators.last ?? navigationStackCoordinator.rootCoordinator
|
||||
|
||||
stateMachine = .init(state: .initial)
|
||||
configureStateMachine()
|
||||
@@ -99,11 +97,9 @@ final class SpaceSettingsFlowCoordinator: FlowCoordinatorProtocol {
|
||||
switch stateMachine.state {
|
||||
case .initial:
|
||||
break
|
||||
case .spaceSettings:
|
||||
navigationStackCoordinator.pop(animated: animated)
|
||||
case .securityAndPrivacy:
|
||||
navigationStackCoordinator.pop(animated: animated)
|
||||
clearRoute(animated: animated)
|
||||
case .spaceSettings, .securityAndPrivacy:
|
||||
guard let initialCoordinator else { return }
|
||||
navigationStackCoordinator.pop(to: initialCoordinator, animated: animated)
|
||||
case .editDetailsScreen, .editAddress:
|
||||
navigationStackCoordinator.setSheetCoordinator(nil, animated: animated)
|
||||
clearRoute(animated: animated)
|
||||
|
||||
Reference in New Issue
Block a user