-
Notifications
You must be signed in to change notification settings - Fork 98
Open
Description
Hi, guys!
Great article and idea! Thanks for sharing it ❤️
I have one proposal tho :)
I feel like it would be more aligned with nature of Observable (side effects should happen on subscription) so in the start method e.g LanguageListCoordinator instead of
override func start() -> Observable<CoordinationResult> {
let viewController = LanguageListViewController.initFromStoryboard(name: "Main")
let navigationController = UINavigationController(rootViewController: viewController)
let viewModel = LanguageListViewModel()
viewController.viewModel = viewModel
let cancel = viewModel.didCancel.map { _ in CoordinationResult.cancel }
let language = viewModel.didSelectLanguage.map { CoordinationResult.language($0) }
rootViewController.present(navigationController, animated: true)
return Observable.merge(cancel, language)
.take(1)
.do(onNext: { [weak self] _ in self?.rootViewController.dismiss(animated: true) })
}use Observable.defered
override func start() -> Observable<CoordinationResult> {
return Observable.deferred {
let viewController = LanguageListViewController.initFromStoryboard(name: "Main")
let navigationController = UINavigationController(rootViewController: viewController)
let viewModel = LanguageListViewModel()
viewController.viewModel = viewModel
let cancel = viewModel.didCancel.map { _ in CoordinationResult.cancel }
let language = viewModel.didSelectLanguage.map { CoordinationResult.language($0) }
self.rootViewController.present(navigationController, animated: true)
return Observable.merge(cancel, language)
.take(1)
.do(onNext: { [weak self] _ in self?.rootViewController.dismiss(animated: true) })
}
}
Doing so we won't trigger navigation in case you do something like
let startObservable = start()
nmdias, arthur-here, AndriyBas, Vkt0r and ilei131arthur-here, AndriyBas and Vkt0r
Metadata
Metadata
Assignees
Labels
No labels