46 lines
1.5 KiB
Swift
46 lines
1.5 KiB
Swift
//
|
|
// 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)
|
|
}
|
|
}
|
|
}
|
|
}
|