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.

178 lines
5.6 KiB

6 years ago
6 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
6 years ago
6 years ago
5 years ago
5 years ago
5 years ago
6 years ago
5 years ago
  1. //
  2. // SettingViewController.swift
  3. // GMERemittance
  4. //
  5. // Created by Sujal on 2/18/18.
  6. // Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
  7. //
  8. import UIKit
  9. import Localize_Swift
  10. class SettingViewController: UIViewController {
  11. struct StringConstants {
  12. var changePasswordText = "change_password_text".localized()
  13. var settingText = "setting_text".localized()
  14. var languageText = "language_text".localized()
  15. }
  16. var languages: [SendMoneyCountryViewModel] = []
  17. var selectedLanguage: SendMoneyCountryViewModel? {
  18. didSet {
  19. let code = selectedLanguage?.code ?? "en"
  20. if code == "lk" {
  21. Localize.setCurrentLanguage("si")
  22. } else if code == "kh" {
  23. Localize.setCurrentLanguage("km")
  24. } else if code == "kr" {
  25. Localize.setCurrentLanguage("ko")
  26. } else if code == "mm" {
  27. Localize.setCurrentLanguage("my")
  28. } else if code == "bd" {
  29. Localize.setCurrentLanguage("bn")
  30. } else if code == "np" {
  31. Localize.setCurrentLanguage("ne")
  32. } else if code == "ru" {
  33. Localize.setCurrentLanguage("ru-RU")
  34. } else if code == "vn" {
  35. Localize.setCurrentLanguage("vi-VN")
  36. } else if code == "pk" {
  37. Localize.setCurrentLanguage("ur-PK")
  38. } else {
  39. Localize.setCurrentLanguage(code)
  40. }
  41. print("code: \(code)")
  42. GMEDB.shared.app.set(code, .firstTimeLanguageIsSet)
  43. }
  44. }
  45. @IBOutlet weak var settingLabel: UILabel!
  46. @IBOutlet weak var changePasswordButton: UIButton!
  47. @IBOutlet weak var useBiometricAuthLabel: UILabel!
  48. @IBOutlet weak var settingButton: UIButton!
  49. @IBOutlet weak var useBiometricAuthSwitch: UISwitch!
  50. @IBOutlet weak var settingTopBackgroundView: UIView!
  51. override func viewDidLoad() {
  52. super.viewDidLoad()
  53. NotificationCenter.default.addObserver(
  54. self,
  55. selector: #selector(setText),
  56. name: NSNotification.Name(LCLLanguageChangeNotification),
  57. object: nil
  58. )
  59. setupLanguages()
  60. configureLanguage()
  61. let userBiometricAuth = (KeyChain.shared.get(key: .biometricAuth) ?? "0" ) == "1" ? true : false
  62. self.useBiometricAuthSwitch.setOn(userBiometricAuth, animated: true)
  63. self.useBiometricAuthSwitch.onTintColor = .themeBlue
  64. self.useBiometricAuthSwitch.addTarget(
  65. self,
  66. action: #selector(self.changeBiometricAuthSwitch(_:)),
  67. for: .valueChanged
  68. )
  69. // settingTopBackgroundView.backgroundColor = .themeRed
  70. }
  71. @objc func changeBiometricAuthSwitch(_ sender: UISwitch) {
  72. let isOn = sender.isOn ? "1" : "0"
  73. if sender.isOn {
  74. BiometricAuthenticationWireframe().showBiometricAuthentication { error in
  75. if error != nil {
  76. DispatchQueue.main.async {
  77. self.alert(type: .error, message: error!.message)
  78. self.useBiometricAuthSwitch.setOn(false, animated: true)
  79. }
  80. } else {
  81. KeyChain.shared.save(data: isOn, key: .biometricAuth)
  82. }
  83. }
  84. } else {
  85. KeyChain.shared.save(data: isOn, key: .biometricAuth)
  86. }
  87. }
  88. @objc func setText() {
  89. self.changePasswordButton.setTitle("change_password_text".localized(), for: .normal)
  90. self.settingButton.setTitle("language_text".localized(), for: .normal)
  91. self.settingLabel.text = "setting_text".localized()
  92. useBiometricAuthLabel.text = "use_biometric_authentication_text".localized()
  93. }
  94. private func configureLanguage() {
  95. self.changePasswordButton.setTitle("change_password_text".localized(), for: .normal)
  96. self.settingButton.setTitle("language_text".localized(), for: .normal)
  97. useBiometricAuthLabel.text = "use_biometric_authentication_text".localized()
  98. }
  99. func setupLanguages() {
  100. self.languages = Utility.getLanguages()
  101. }
  102. override func viewWillAppear(_ animated: Bool) {
  103. super.viewWillAppear(animated)
  104. setupNormalNavigation(color: .themeRedDark)
  105. setupNavigationShadow(isUse: false)
  106. // self.navigationItem.title = StringConstants().settingText
  107. }
  108. override func viewWillDisappear(_ animated: Bool) {
  109. super.viewWillDisappear(animated)
  110. self.navigationItem.title = ""
  111. setupNavigationShadow(isUse: true)
  112. }
  113. @IBAction func redirectToChangePassword(_ sender: Any) {
  114. let storyboard = UIStoryboard.init(name: "Profile", bundle: Bundle.main)
  115. if let changePasswordViewController = storyboard.instantiateViewController(
  116. withIdentifier: "changePassword"
  117. ) as? ProfileChangePasswordViewController {
  118. self.navigationController!.pushViewController(changePasswordViewController, animated: true)
  119. }
  120. }
  121. @IBAction func settings(_ sender: Any) {
  122. self.showCountryPickerview()
  123. }
  124. @objc private func showCountryPickerview() {
  125. setupLanguages()
  126. TablePresenterWireframe().openWith(
  127. delegate: self,
  128. model: languages,
  129. source: self
  130. )
  131. }
  132. func countrySelected(models: [SendMoneyCountryViewModel]) {
  133. self.selectedLanguage = models.first
  134. }
  135. }
  136. extension SettingViewController: TablePresenterDelegate {
  137. func tablePresenterView(_ viewController: TablePresenterViewController) -> TablePresenterConfiguration {
  138. return TablePresenterConfiguration(
  139. presenterTitle: "select_country_text".localized(),
  140. closeButtonTitle: "cancel_text".localized(),
  141. notFoundTitle: "no_result_found_text".localized(),
  142. searchBarPlaceHolder: "search_country_text".localized()
  143. )
  144. }
  145. func tablePresenterView(
  146. _ viewController: TablePresenterViewController,
  147. didSelectModel model: TablePresenterProtocol?
  148. ) {
  149. self.selectedLanguage = (model as? SendMoneyCountryViewModel) ?? self.selectedLanguage
  150. }
  151. }