Skip to content

Instantly share code, notes, and snippets.

@aybarsyalcin
Last active December 22, 2022 16:00
Show Gist options
  • Save aybarsyalcin/16fbe225e28bccea185279a8ed52efab to your computer and use it in GitHub Desktop.
Save aybarsyalcin/16fbe225e28bccea185279a8ed52efab to your computer and use it in GitHub Desktop.
Flow Coordinators - Part 1
import Foundation
final class ApplicationCoordinator: Coordinator {
private let coordinatorFactory: CoordinatorFactory
private let router: Router
init(router: Router, coordinatorFactory: CoordinatorFactory) {
self.router = router
self.coordinatorFactory = coordinatorFactory
}
override func start() {
runMainFlow()
}
private func runMainFlow() {
let (coordinator) = coordinatorFactory.makeHomeCoordinator(router: router)
coordinator.finishHomeCoordinatorFlow = {
// Nothing beacuse this is root view.
}
coordinator.onAddressFlow = {
self.runAddressFlow()
}
addDependency(coordinator)
coordinator.start()
}
private func runAddressFlow() {
let (coordinator) = coordinatorFactory.makeAddressCoordinator(router: router)
coordinator.finishAddressCoordinatorFlow = {
self.removeDependency(coordinator)
}
addDependency(coordinator)
coordinator.start()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment