Nessuna descrizione

MineCoordinator.swift 4.0KB

    // // MineCoordinator.swift // Paiai_iOS // // Created by FFIB on 2018/12/6. // Copyright © 2018 FFIB. All rights reserved. // import UIKit import RxSwift import PaiaiDataKit class MineCoordinator: BaseCoordinator<Void> { let mineViewController: MineViewController fileprivate let navigationController: UINavigationController init(_ viewController: MineViewController, navigationController: UINavigationController) { self.mineViewController = viewController self.navigationController = navigationController } override func start() -> Observable<Void> { mineViewController.delegate = self return didCancel } } extension MineCoordinator: MineViewControllerDelegate { func logout() { mineViewController.dismissController() didCancel.onNext(()) let vc = makeLoginViewController() vc.userInfoViewModel = mineViewController.userInfoViewModel navigationController.addFullScreen(childViewController: vc) } func didSelect(_ item: MineItem) { mineViewController.dismissController() switch item { case .group: let vc = makeMineGroupViewController() vc.viewModel.delegate = self navigationController.pushViewController(vc) case .order: let vc = makeMineOrderViewController() vc.viewModel.didCancel.subscribe { _ in self.didCancel.onNext(()) }.disposed(by: disposeBag) navigationController.pushViewController(vc) case .feedback: let vc = makeMineFeedbackViewController() vc.didCancel.subscribe { _ in self.didCancel.onNext(()) }.disposed(by: disposeBag) navigationController.pushViewController(vc) case .about: let vc = makeMineAboutViewController() vc.didCancel.subscribe { _ in self.didCancel.onNext(()) }.disposed(by: disposeBag) navigationController.pushViewController(vc) } } func loginout() { } } extension MineCoordinator: MineGroupViewModelDelegate { func didSelect(_ item: GroupItem) { let coordinator = GroupCoordinator(makeGroupViewController(item: item), navigationController: navigationController, navigationSource: .mineGroup) coordinate(to: coordinator).subscribe({[weak self] _ in self?.didCancel.onNext(()) }).disposed(by: disposeBag) navigationController.pushViewController(coordinator.groupViewController) } } fileprivate extension MineCoordinator { func makeLoginViewController() -> LoginViewController { let vc = LoginViewController.instantiate() // vc.userInfoViewModel = shareUserInfoViewModel return vc } func makeMineGroupViewController() -> MineGroupViewController { let vc = MineGroupViewController.instantiate() vc.viewModel = MineGroupViewModel() return vc } func makeMineOrderViewController() -> MineOrderViewController { let vc = MineOrderViewController.instantiate() vc.viewModel = MineOrderViewModel() return vc } func makeMineFeedbackViewController() -> MineFeedbackViewController { let vc = MineFeedbackViewController.instantiate() vc.feedbackAPI = FeedbackRemoteAPI() return vc } func makeMineAboutViewController() -> MineAboutViewController { let vc = MineAboutViewController.instantiate() return vc } func makeGroupViewController(item: GroupItem) -> GroupViewController { let vc = GroupViewController.instantiate() vc.viewModel = GroupViewModel(groupItem: item) return vc } } extension UIStoryboard { static var mine: UIStoryboard { return UIStoryboard(name: "Mine", bundle: Bundle(identifier: "com.Paiai-iOS")) } }