// // GroupCoordinator.swift // Paiai_iOS // // Created by FFIB on 2019/1/29. // Copyright © 2019 FFIB. All rights reserved. // import UIKit import RxSwift import RxCocoa import PaiaiDataKit extension NavigationSource { enum Group { case scan /// 扫码 case mineGroup /// 侧边栏 照片群 case createGroup /// 创建群 case photoDetail /// 照片详情页 case recentGroup /// 最近访问的照片群 } } class GroupCoordinator: BaseCoordinator { let groupViewController: GroupViewController let source: NavigationSource.Group init(_ viewController: GroupViewController, navigationController: UINavigationController, navigationSource: NavigationSource.Group) { self.groupViewController = viewController self.source = navigationSource super.init(navigationController: navigationController, viewController: viewController) } override func start() -> Observable { groupViewController.viewModel.delegate = self return didCancel } } extension GroupCoordinator: GroupViewModelDelegate { func navigateToGroupDetail(_ item: GroupItem) { let coordinator = GroupDetailCoordinator(makeGroupDetailViewController(item), navigationController: navigationController, navigationSource: source) coordinate(to: coordinator).subscribe(onNext: {[weak self] res in switch res { case .quit: self?.didCancel.onNext(()) case .cancel: break } }).disposed(by: disposeBag) navigationController.pushViewController(coordinator.groupDetailViewController) } func didSelect(_ items: [PhotoItem], currIndex: Int) { let vc = PhotoDetailViewController.instantiate() let viewModel = PhotoDetailViewModel(items: items, currIndex: currIndex) viewModel.isHiddenEnterGroupBtn.accept(true) let coordinator = PhotoDetailCoordinator(vc, nav: navigationController, viewModel: viewModel) coordinate(to: coordinator).subscribe().disposed(by: disposeBag) navigationController.pushViewController(vc) } } fileprivate extension GroupCoordinator { func makeGroupDetailViewController(_ item: GroupItem) -> GroupDetailViewController { let vc = GroupDetailViewController.instantiate() vc.viewModel = GroupDetailViewModel(item: item) return vc } } extension UIStoryboard { static var group: UIStoryboard { return UIStoryboard(name: "Group", bundle: Bundle(identifier: "com.Paiai-iOS")) } }