// // PreferenceBuilderIPAD.swift // OpenVPN // // Created by Lizaveta Malinouskaya on 26.07.21. // Copyright © 2021 Privado LLC. All rights reserved. // import UIKit protocol PreferenceModuleInputIPAD: AnyObject { func navigate(to route: Route.iOSPreference) } protocol PreferenceModuleOutputIPAD: AnyObject { func navigate(to route: Route) } final class PreferenceModuleBuilderIPAD { static func build(output: PreferenceModuleOutputIPAD) -> (view: UIViewController, presenter: PreferenceModuleInputIPAD) { let presenter = PreferencePresenterIPAD(customerRepo: CustomerRepo.instance, session: Session.shared(), output: output) let controller = PreferenceViewControllerIPAD(output: presenter, self.create(with: presenter)) let nbViewBuilder = PreferenceNBModuleBuilderIPAD.build(output: presenter) let navigationBar = nbViewBuilder(controller) controller.navigationBar = navigationBar.view controller.navigationBarOutput = navigationBar.presenter presenter.viewInput = controller return (controller, presenter) } private static func create(with output: OptionsModuleOutputIPAD) -> PreferenceViewControllerIPAD.ComponentCreationClosure { return { (component) -> (BaseView) in switch component { case .options: return OptionsModuleBuilderIPAD.build(output: output) } } } }