/* Copyright 2019-2024 New Vector Ltd. SPDX-License-Identifier: AGPL-3.0-only Please see LICENSE in the repository root for full details. */ import UIKit protocol KeyBackupRecoverSuccessViewControllerDelegate: AnyObject { func keyBackupRecoverSuccessViewControllerDidTapDone(_ keyBackupRecoverSuccessViewController: KeyBackupRecoverSuccessViewController) } final class KeyBackupRecoverSuccessViewController: UIViewController { // MARK: - Properties // MARK: Outlets @IBOutlet private weak var shieldImageView: UIImageView! @IBOutlet private weak var informationLabel: UILabel! @IBOutlet private weak var doneButtonBackgroundView: UIView! @IBOutlet private weak var doneButton: RoundedButton! // MARK: Private private var theme: Theme! // MARK: Public weak var delegate: KeyBackupRecoverSuccessViewControllerDelegate? // MARK: - Setup class func instantiate() -> KeyBackupRecoverSuccessViewController { let viewController = StoryboardScene.KeyBackupRecoverSuccessViewController.initialScene.instantiate() viewController.theme = ThemeService.shared().theme return viewController } // MARK: - Life cycle override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. self.title = BWIL10n.keyBackupRecoverTitle self.vc_removeBackTitle() self.setupViews() self.registerThemeServiceDidChangeThemeNotification() self.update(theme: self.theme) } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) // Hide back button self.navigationItem.setHidesBackButton(true, animated: animated) } override var preferredStatusBarStyle: UIStatusBarStyle { return self.theme.statusBarStyle } // MARK: - Private private func setupViews() { let shieldImage = Asset.Images.keyBackupLogo.image.withRenderingMode(.alwaysTemplate) self.shieldImageView.image = shieldImage self.informationLabel.text = VectorL10n.keyBackupRecoverSuccessInfo self.doneButton.vc_enableMultiLinesTitle() self.doneButton.setTitle(VectorL10n.keyBackupRecoverDoneAction, for: .normal) } private func update(theme: Theme) { self.theme = theme self.view.backgroundColor = theme.headerBackgroundColor if let navigationBar = self.navigationController?.navigationBar { theme.applyStyle(onNavigationBar: navigationBar) } self.shieldImageView.tintColor = theme.textPrimaryColor self.informationLabel.textColor = theme.textPrimaryColor self.doneButtonBackgroundView.backgroundColor = theme.backgroundColor self.doneButton.update(theme: theme) } private func registerThemeServiceDidChangeThemeNotification() { NotificationCenter.default.addObserver(self, selector: #selector(themeDidChange), name: .themeServiceDidChangeTheme, object: nil) } // MARK: - Actions @objc private func themeDidChange() { self.update(theme: ThemeService.shared().theme) } @IBAction private func doneButtonAction(_ sender: Any) { self.delegate?.keyBackupRecoverSuccessViewControllerDidTapDone(self) } }