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.

266 lines
8.5 KiB

6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
  1. //
  2. // SendMoneyCodeViewController.swift
  3. // GME Remit
  4. //
  5. // Created by gme_2 on 27/02/2019.
  6. //Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
  7. //
  8. import UIKit
  9. import PMAlertController
  10. import Hex
  11. class SendMoneyCodeViewController: UIViewController {
  12. // MARK: IBOutlets
  13. @IBOutlet weak var otpCodeTitlelabel: UILabel!
  14. @IBOutlet weak var titleLabel: UILabel!
  15. @IBOutlet weak var verificationCodeTextField: UITextField!
  16. @IBOutlet weak var viewSampleButton: UIButton!
  17. @IBOutlet weak var resendButton: UIButton!
  18. @IBOutlet weak var submitButton: UIButton!
  19. @IBOutlet weak var notNowButton: UIButton!
  20. @IBOutlet weak var counterLabel: UILabel!
  21. @IBOutlet weak var counterTitleLabel: UILabel!
  22. @IBOutlet weak var counterStackView: UIStackView!
  23. @IBOutlet weak var backGourndBorderView: UIView!
  24. var timer: Timer?
  25. let expiryTime = 120 // second
  26. var count: Int = 120 {
  27. didSet {
  28. if ( count <= 0) {
  29. count = expiryTime // two minutes passed
  30. self.timer?.invalidate()
  31. self.resendButton.isUserInteractionEnabled = true
  32. self.counterStackView.isHidden = true
  33. } else {
  34. let result = count.quotientAndRemainder(dividingBy: 60)
  35. self.counterLabel.text = "\(result.quotient): \(result.remainder)"
  36. }
  37. }
  38. }
  39. // MARK: Properties
  40. var mNumberTransKeyView : TransKeyView!
  41. var numberCipherString : String!
  42. var presenter: SendMoneyCodeModuleInterface?
  43. var completion: ((String) -> ())?
  44. var encryptedNumber: String! {
  45. didSet {
  46. self.dismiss(animated: true, completion: {
  47. self.completion?(self.encryptedNumber)
  48. })
  49. }
  50. }
  51. var isShowNumber : Bool!
  52. var isTranskeyShowing : Bool!
  53. // MARK: VC's Life cycle
  54. override func viewDidLoad() {
  55. super.viewDidLoad()
  56. self.keyboardSetup()
  57. self.setup()
  58. self.requestOtpCode()
  59. }
  60. override func viewDidDisappear(_ animated: Bool) {
  61. super.viewDidDisappear(animated)
  62. mNumberTransKeyView?.mTK_ClearDelegateSubviews()
  63. if isTranskeyShowing == false{
  64. mNumberTransKeyView?.delegate = nil;
  65. }
  66. }
  67. private func keyboardSetup() {
  68. isShowNumber = false
  69. isTranskeyShowing = false
  70. setNumberTranskey()
  71. }
  72. private func setNumberTranskey(){
  73. mNumberTransKeyView = TransKeyView()
  74. mNumberTransKeyView?.mTK_Init(self)
  75. mNumberTransKeyView?.delegate = self
  76. mNumberTransKeyView?.mTK_MakeSecureKey()
  77. mNumberTransKeyView?.mTK_Supported(byDeviceOrientation: SupportedByDevicePortraitAndLandscape)
  78. mNumberTransKeyView?.mTK_LicenseCheck("license_IBK_TEST_IONEBANK_20181105_20190531")
  79. }
  80. func showNumberTranskeyAction(){
  81. if mNumberTransKeyView?.isBeingPresented == false{
  82. isShowNumber = true
  83. isTranskeyShowing = true
  84. mNumberTransKeyView?.mTK_SetHint("password", font:UIFont(name:"Arial", size: 15.0))
  85. mNumberTransKeyView?.mTK_ShowMessageIfMinLength("0자리 이상 입력해주세요.")
  86. mNumberTransKeyView?.mTK_ShowMessageIfMaxLength("16자리 입력이 초과되었습니다.")
  87. mNumberTransKeyView?.mTK_UseVoiceOver(false)
  88. mNumberTransKeyView?.mTK_setIgnoreStatusbar(false)
  89. mNumberTransKeyView?.mTK_SetControlCenter(false)
  90. mNumberTransKeyView?.mTK_UseAllDeleteButton(false)
  91. mNumberTransKeyView?.mTK_Supported(byDeviceOrientation: SupportedByDevicePortraitAndLandscape)
  92. mNumberTransKeyView?.setKeyboardType(self,
  93. keypadType: TransKeyKeypadTypeText,
  94. mTK_inputType: 2,
  95. mTK_inputTitle: "password",
  96. mTK_cryptType: 0,
  97. mTK_maxLength: 16,
  98. mTK_minLength: 0,
  99. mTK_keypadUpper: false,
  100. mTK_languageType: Int(mTK_Language_English.rawValue))
  101. if let mNumberTransKeyView = mNumberTransKeyView {
  102. self.present(mNumberTransKeyView, animated: true, completion: nil)
  103. }
  104. }
  105. }
  106. // MARK: IBActions
  107. // MARK: Other Functions
  108. private func setup() {
  109. // all setup should be done here
  110. self.titleLabel.text = "enter_otp_password_text".localized()
  111. self.verificationCodeTextField.placeholder = "otp_password_hint_text".localized()
  112. self.resendButton.setTitle("resend_request_text".localized(), for: UIControlState.normal)
  113. self.viewSampleButton.setTitle("view_sample_text".localized(), for: UIControlState.normal)
  114. self.submitButton.setTitle("submit_text".localized(), for: .normal)
  115. self.notNowButton.setTitle("not_now_text".localized(), for: .normal)
  116. verificationCodeTextField.delegate = self
  117. self.backGourndBorderView.layer.borderWidth = 0.5
  118. self.backGourndBorderView.layer.borderColor = UIColor.init(hex: "#EBECED").cgColor
  119. self.backGourndBorderView.layer.cornerRadius = 10
  120. }
  121. private func configureText() {
  122. self.titleLabel.text = "penny_test_promt_description_text".localized()
  123. self.otpCodeTitlelabel.text = "otp__Code_text".localized()
  124. self.viewSampleButton.setTitle("view_sample_text".localized(), for: UIControlState.normal)
  125. self.resendButton.setTitle("resend_text".localized(), for: UIControlState.normal)
  126. self.submitButton.setTitle("submit_text".localized(), for: UIControlState.normal)
  127. self.notNowButton.setTitle("not_now_text".localized(), for: UIControlState.normal)
  128. self.counterTitleLabel.text = "resend_code_text".localized()
  129. }
  130. @IBAction func viewSample(_ sender: Any) {
  131. self.showSampleImage()
  132. }
  133. @IBAction func resend(_ sender: Any) {
  134. self.requestOtpCode()
  135. }
  136. @IBAction func dismiss(_ sender: Any) {
  137. self.dismiss()
  138. }
  139. private func dismiss() {
  140. self.dismiss(animated: true, completion: nil)
  141. }
  142. func showSampleImage() {
  143. let image = #imageLiteral(resourceName: "penny3.jpg")
  144. let alertVC = PMAlertController(title: "", description: "", image: image, style: .alert)
  145. alertVC.alertView.layer.cornerRadius = 10
  146. let action = PMAlertAction(title: "ok_text".localized(), style: .cancel)
  147. alertVC.addAction(action)
  148. self.present(alertVC, animated: true, completion: nil)
  149. }
  150. // resend
  151. private func requestOtpCode() {
  152. // request otp
  153. self.presenter?.viewIsReady()
  154. self.startTimer()
  155. }
  156. private func startTimer() {
  157. self.timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(self.updateCounter), userInfo: nil, repeats: true)
  158. self.timer?.fire()
  159. self.resendButton.isUserInteractionEnabled = false
  160. self.counterStackView.isHidden = false
  161. }
  162. @objc func updateCounter() {
  163. self.count -= 1
  164. }
  165. private func requestOtpCodeRetryCount() {
  166. let _default = UserDefaults.standard
  167. }
  168. }
  169. // MARK: SendMoneyCodeViewInterface
  170. extension SendMoneyCodeViewController: SendMoneyCodeViewInterface {
  171. func showLoading() {
  172. self.showProgressHud()
  173. }
  174. func hideLoading() {
  175. self.hideProgressHud()
  176. }
  177. func show(message: String) {
  178. self.alert(message: message)
  179. }
  180. func show(error: String) {
  181. self.alert(message: error)
  182. }
  183. }
  184. extension SendMoneyCodeViewController: TransKeyViewDelegate {
  185. func secureInputFinish(_ type: Int) {
  186. var targetView : TransKeyView?
  187. numberCipherString = mNumberTransKeyView?.mTK_GetSecureData()
  188. targetView = mNumberTransKeyView
  189. targetView?.dismiss(animated: true, completion: {
  190. self.encryptedNumber = self.numberCipherString
  191. })
  192. }
  193. }
  194. extension SendMoneyCodeViewController: UITextFieldDelegate {
  195. func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
  196. self.showNumberTranskeyAction()
  197. return false
  198. }
  199. }
  200. extension SendMoneyCodeViewController: OtpCodeRequestApiService {
  201. }