// // SettingViewController.swift // GMERemittance // // Created by Sujal on 2/18/18. // Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved. // import UIKit import Localize_Swift class SettingViewController: UIViewController { struct StringConstants { var changePasswordText = "change_password_text".localized() var settingText = "setting_text".localized() var languageText = "language_text".localized() } var languages: [SendMoneyCountryViewModel] = [] var selectedLanguage: SendMoneyCountryViewModel? { didSet { let code = selectedLanguage?.code ?? "en" if code == "lk" { Localize.setCurrentLanguage("si") }else if code == "kh" { Localize.setCurrentLanguage("km") }else if code == "kr" { Localize.setCurrentLanguage("ko") }else if code == "mm" { Localize.setCurrentLanguage("my") }else if code == "bd" { Localize.setCurrentLanguage("bn") } else if code == "np" { Localize.setCurrentLanguage("ne") }else if code == "ru" { Localize.setCurrentLanguage("ru-RU") }else if code == "vn" { Localize.setCurrentLanguage("vi-VN") } else { Localize.setCurrentLanguage(code) } print("code: \(code)") UserDefaults.standard.set(code, forKey: AppConstants.firstTimeLanguageIsSet) } } @IBOutlet weak var settingLabel: UILabel! @IBOutlet weak var changePasswordButton: UIButton! @IBOutlet weak var useBiometricAuthLabel: UILabel! @IBOutlet weak var settingButton: UIButton! @IBOutlet weak var useBiometricAuthSwitch: UISwitch! override func viewDidLoad() { super.viewDidLoad() NotificationCenter.default.addObserver(self, selector: #selector(setText), name: NSNotification.Name(LCLLanguageChangeNotification), object: nil) setupLanguages() configureLanguage() let userBiometricAuth = (KeyChain.shared.get(key: .biometricAuth) ?? "0" ) == "1" ? true : false self.useBiometricAuthSwitch.setOn(userBiometricAuth, animated: true) self.useBiometricAuthSwitch.onTintColor = AppConstants.themeBlueColor self.useBiometricAuthSwitch.addTarget(self, action: #selector(self.changeBiometricAuthSwitch(_:)), for: .valueChanged) } @objc func changeBiometricAuthSwitch(_ sender: UISwitch){ let isOn = sender.isOn ? "1" : "0" if sender.isOn { BiometricAuthenticationWireframe().showBiometricAuthentication() { error in if error != nil { DispatchQueue.main.async { self.useBiometricAuthSwitch.setOn(false, animated: true) } } else { KeyChain.shared.save(data: isOn, key: .biometricAuth) } } } else { KeyChain.shared.save(data: isOn, key: .biometricAuth) } } @objc func setText() { self.changePasswordButton.setTitle("change_password_text".localized(), for: .normal) self.settingButton.setTitle("language_text".localized(), for: .normal) self.settingLabel.text = "setting_text".localized() useBiometricAuthLabel.text = "use_biometric_authentication".localized() } private func configureLanguage() { self.changePasswordButton.setTitle("change_password_text".localized(), for: .normal) self.settingButton.setTitle("language_text".localized(), for: .normal) useBiometricAuthLabel.text = "use_biometric_authentication".localized() } func setupLanguages() { self.languages = Utility.getLanguages() } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) self.setupNormalNavigation() self.navigationItem.title = StringConstants().settingText } override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) self.navigationItem.title = "" } @IBAction func redirectToChangePassword(_ sender: Any) { let storyboard = UIStoryboard.init(name: "Profile", bundle: Bundle.main) if let changePasswordViewController = storyboard.instantiateViewController(withIdentifier: "changePassword") as? ProfileChangePasswordViewController { self.navigationController!.pushViewController(changePasswordViewController, animated: true) } } @IBAction func settings(_ sender: Any) { self.showCountryPickerview() } @objc private func showCountryPickerview() { setupLanguages() let viewcontroller = UIStoryboard.init(name: "CountryPicker", bundle: nil).instantiateViewController(withIdentifier: "CountryPickerViewController") as! CountryPickerViewController let data: [SendMoneyCountryViewModel] = self.languages viewcontroller.isLanguageSelection = true viewcontroller.data = data viewcontroller.doneAction = self.countrySelected viewcontroller.type = PickerTitle.country self.present(viewcontroller, animated: true, completion: nil) } func countrySelected(models: [SendMoneyCountryViewModel]) { self.selectedLanguage = models.first } }