diff --git a/Ring/Ring/Coordinators/AppCoordinator.swift b/Ring/Ring/Coordinators/AppCoordinator.swift index 98184ae3c19a8a144b6acaac21410a896f6a6d97..fa122d1ab09f69a38570abfa3afa33f9b791941f 100644 --- a/Ring/Ring/Coordinators/AppCoordinator.swift +++ b/Ring/Ring/Coordinators/AppCoordinator.swift @@ -102,6 +102,12 @@ final class AppCoordinator: Coordinator, StateableResponsive { self.dispatchApplication() } + /// Starts the coordinator + func startWithoutLoading() { + // ~ Dispatch to the proper screen + self.dispatchApplication() + } + func migrateAccount(accountId: String) { let migratonController = MigrateAccountViewController.instantiate(with: self.injectionBag) migratonController.viewModel.accountToMigrate = accountId @@ -139,22 +145,16 @@ final class AppCoordinator: Coordinator, StateableResponsive { let walkthroughCoordinator = WalkthroughCoordinator(with: self.injectionBag) walkthroughCoordinator.isAccountFirst = isAccountFirst walkthroughCoordinator.withAnimations = animated + walkthroughCoordinator.parentCoordinator = self walkthroughCoordinator.start() + self.navigationController.setViewControllers([], animated: false) self.addChildCoordinator(childCoordinator: walkthroughCoordinator) let walkthroughViewController = walkthroughCoordinator.rootViewController self.present(viewController: walkthroughViewController, withStyle: .appear, withAnimation: true, disposeBag: self.disposeBag) - - walkthroughViewController.rx.controllerWasDismissed - .subscribe(onNext: { [weak self, weak walkthroughCoordinator] (_) in - walkthroughCoordinator?.stateSubject.dispose() - self?.removeChildCoordinator(childCoordinator: walkthroughCoordinator) - self?.dispatchApplication() - }) - .disposed(by: self.disposeBag) } /// Presents the main interface diff --git a/Ring/Ring/Features/Walkthrough/WalkthroughCoordinator.swift b/Ring/Ring/Features/Walkthrough/WalkthroughCoordinator.swift index c03f3107b2c86b40e29f3b1ae1f7f6e3ec7f788b..8d751a6584e9d2cd6220f1b7712c632c7ee39a34 100644 --- a/Ring/Ring/Features/Walkthrough/WalkthroughCoordinator.swift +++ b/Ring/Ring/Features/Walkthrough/WalkthroughCoordinator.swift @@ -75,8 +75,12 @@ class WalkthroughCoordinator: Coordinator, StateableResponsive { self.showAddAccount(with: walkthroughType) case .accountCreated, .deviceLinked: if self.rootViewController.presentedViewController != nil { - self.rootViewController.dismiss(animated: true) { [weak self] in // dismiss the pop up form modal view - self?.rootViewController.dismiss(animated: true) // dismiss the welcome view and check for user account state + if let appCoordinator = self.parentCoordinator as? AppCoordinator { + appCoordinator.startWithoutLoading() + appCoordinator.removeChildCoordinator(childCoordinator: self) + rootViewController.presentedViewController?.dismiss(animated: true) { + self.rootViewController.dismiss(animated: false) + } } } case .walkthroughCanceled: