Skip to content
Snippets Groups Projects
OnboardingStartController.swift 1.77 KiB
Newer Older
Bruno Muniz's avatar
Bruno Muniz committed
import HUD
import UIKit
import Theme
import Shared
import Combine
import DependencyInjection

public final class OnboardingStartController: UIViewController {
Bruno Muniz's avatar
Bruno Muniz committed
    @Dependency private var hud: HUD
Bruno Muniz's avatar
Bruno Muniz committed
    @Dependency private var coordinator: OnboardingCoordinating

    lazy private var screenView = OnboardingStartView()

    private let ndf: String
    private var cancellables = Set<AnyCancellable>()

    public override func loadView() {
Bruno Muniz's avatar
Bruno Muniz committed
        view = screenView
    }

    public init(_ ndf: String) {
Bruno Muniz's avatar
Bruno Muniz committed
        self.ndf = ndf
        super.init(nibName: nil, bundle: nil)
    }

    required init?(coder: NSCoder) { nil }

    public override func viewWillAppear(_ animated: Bool) {
Bruno Muniz's avatar
Bruno Muniz committed
        super.viewWillAppear(animated)
Bruno Muniz's avatar
Bruno Muniz committed
        navigationItem.backButtonTitle = ""
Bruno Muniz's avatar
Bruno Muniz committed
        navigationController?.navigationBar.customize(translucent: true)
    }

    public override func viewDidLayoutSubviews() {
Bruno Muniz's avatar
Bruno Muniz committed
        super.viewDidLayoutSubviews()

        let gradient = CAGradientLayer()
        gradient.colors = [
            UIColor(red: 122/255, green: 235/255, blue: 239/255, alpha: 1).cgColor,
            UIColor(red: 56/255, green: 204/255, blue: 232/255, alpha: 1).cgColor,
            UIColor(red: 63/255, green: 186/255, blue: 253/255, alpha: 1).cgColor,
            UIColor(red: 98/255, green: 163/255, blue: 255/255, alpha: 1).cgColor
        ]

        gradient.startPoint = CGPoint(x: 0, y: 0)
        gradient.endPoint = CGPoint(x: 1, y: 1)

        gradient.frame = screenView.bounds
        screenView.layer.insertSublayer(gradient, at: 0)
    }

    public override func viewDidLoad() {
Bruno Muniz's avatar
Bruno Muniz committed
        super.viewDidLoad()

        screenView.startButton.publisher(for: .touchUpInside)
Bruno Muniz's avatar
Bruno Muniz committed
            .sink { [unowned self] in coordinator.toTerms(ndf: ndf, from: self) }
Bruno Muniz's avatar
Bruno Muniz committed
            .store(in: &cancellables)
    }
}