// // AccountViewSettings.swift // Wallet // // Created by Igor Danich on 30.08.2020. // Copyright © 2020 List. All rights reserved. // import UIKit import Combine final class AccountViewSettings: CommonViewCustom { enum Action { case password case about case changeInterfaceStyle case changeProtection } @IBOutlet weak var notificationsEnabledLabel: UILabel! @IBOutlet private weak var notificationsView: UIStackView! @IBOutlet private weak var biometricksLbl: UILabel! @IBOutlet private weak var biometricksSwitch: UISwitch! @IBOutlet private weak var passwordTitlesLbl: UILabel! @IBOutlet private weak var versionLbl: UILabel! private let actionSubject = PassthroughSubject() lazy var actionPublisher: AnyPublisher = self.actionSubject.eraseToAnyPublisher() override func setup() { super.setup() self.notificationsView.isUserInteractionEnabled = true self.notificationsView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.onNotifications))) self.biometricksSwitch.isEnabled = Account.Service.isBiometricksAvailable self.biometricksSwitch.isOn = Account.Service.isBiometricksEnabled self.biometricksLbl.text = Account.Service.isFaceIdAvailable ? L10n.Account.Settings.faceId : L10n.Account.Settings.touchId self.passwordTitlesLbl.text = UserDefaults.standard.bool(forKey: "isPinPwdMode") ? L10n.Account.Settings.pin : L10n.Account.Settings.password self.versionLbl.text = "\(Bundle.main.major).\(Bundle.main.minor).\(Bundle.main.patch) (\(Bundle.main.buildNumber))" } @objc private func onNotifications() { if let appSettings = URL(string: UIApplication.openSettingsURLString), UIApplication.shared.canOpenURL(appSettings) { UIApplication.shared.open(appSettings) } } @IBAction private func onBiometricks(_ : AnyObject?) { if self.biometricksSwitch.isOn { Account.Service.checkBiometricks { [weak self] (success) in self?.biometricksSwitch.isOn = success } } else { Account.Service.isBiometricksEnabled = false } } @IBAction private func onPassword(_ : AnyObject?) { self.actionSubject.send(.password) } @IBAction private func onAbout(_ : AnyObject?) { self.actionSubject.send(.about) } @IBAction private func onChangeInterfaceStyle(_ sender: Any) { self.actionSubject.send(.changeInterfaceStyle) } @IBAction private func onChangeProtection(_ sender: Any) { self.actionSubject.send(.changeProtection) } }