You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

160 lines
6.1 KiB

//
// 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
}
}