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
266 lines
8.5 KiB
//
|
|
// SendMoneyCodeViewController.swift
|
|
// GME Remit
|
|
//
|
|
// Created by gme_2 on 27/02/2019.
|
|
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
|
|
//
|
|
|
|
import UIKit
|
|
import PMAlertController
|
|
import Hex
|
|
|
|
class SendMoneyCodeViewController: UIViewController {
|
|
|
|
// MARK: IBOutlets
|
|
@IBOutlet weak var otpCodeTitlelabel: UILabel!
|
|
@IBOutlet weak var titleLabel: UILabel!
|
|
@IBOutlet weak var verificationCodeTextField: UITextField!
|
|
@IBOutlet weak var viewSampleButton: UIButton!
|
|
@IBOutlet weak var resendButton: UIButton!
|
|
@IBOutlet weak var submitButton: UIButton!
|
|
@IBOutlet weak var notNowButton: UIButton!
|
|
@IBOutlet weak var counterLabel: UILabel!
|
|
@IBOutlet weak var counterTitleLabel: UILabel!
|
|
@IBOutlet weak var counterStackView: UIStackView!
|
|
|
|
|
|
@IBOutlet weak var backGourndBorderView: UIView!
|
|
var timer: Timer?
|
|
let expiryTime = 120 // second
|
|
var count: Int = 120 {
|
|
didSet {
|
|
|
|
|
|
if ( count <= 0) {
|
|
count = expiryTime // two minutes passed
|
|
self.timer?.invalidate()
|
|
self.resendButton.isUserInteractionEnabled = true
|
|
self.counterStackView.isHidden = true
|
|
} else {
|
|
|
|
|
|
|
|
let result = count.quotientAndRemainder(dividingBy: 60)
|
|
self.counterLabel.text = "\(result.quotient): \(result.remainder)"
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
// MARK: Properties
|
|
|
|
var mNumberTransKeyView : TransKeyView!
|
|
var numberCipherString : String!
|
|
var presenter: SendMoneyCodeModuleInterface?
|
|
|
|
var completion: ((String) -> ())?
|
|
|
|
var encryptedNumber: String! {
|
|
didSet {
|
|
self.dismiss(animated: true, completion: {
|
|
self.completion?(self.encryptedNumber)
|
|
})
|
|
}
|
|
}
|
|
|
|
var isShowNumber : Bool!
|
|
var isTranskeyShowing : Bool!
|
|
|
|
// MARK: VC's Life cycle
|
|
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
self.keyboardSetup()
|
|
self.setup()
|
|
self.requestOtpCode()
|
|
}
|
|
|
|
override func viewDidDisappear(_ animated: Bool) {
|
|
super.viewDidDisappear(animated)
|
|
|
|
mNumberTransKeyView?.mTK_ClearDelegateSubviews()
|
|
if isTranskeyShowing == false{
|
|
mNumberTransKeyView?.delegate = nil;
|
|
}
|
|
|
|
}
|
|
|
|
private func keyboardSetup() {
|
|
isShowNumber = false
|
|
isTranskeyShowing = false
|
|
setNumberTranskey()
|
|
}
|
|
|
|
private func setNumberTranskey(){
|
|
mNumberTransKeyView = TransKeyView()
|
|
mNumberTransKeyView?.mTK_Init(self)
|
|
mNumberTransKeyView?.delegate = self
|
|
mNumberTransKeyView?.mTK_MakeSecureKey()
|
|
mNumberTransKeyView?.mTK_Supported(byDeviceOrientation: SupportedByDevicePortraitAndLandscape)
|
|
mNumberTransKeyView?.mTK_LicenseCheck("license_IBK_TEST_IONEBANK_20181105_20190531")
|
|
}
|
|
|
|
func showNumberTranskeyAction(){
|
|
if mNumberTransKeyView?.isBeingPresented == false{
|
|
isShowNumber = true
|
|
isTranskeyShowing = true
|
|
mNumberTransKeyView?.mTK_SetHint("password", font:UIFont(name:"Arial", size: 15.0))
|
|
mNumberTransKeyView?.mTK_ShowMessageIfMinLength("0자리 이상 입력해주세요.")
|
|
mNumberTransKeyView?.mTK_ShowMessageIfMaxLength("16자리 입력이 초과되었습니다.")
|
|
mNumberTransKeyView?.mTK_UseVoiceOver(false)
|
|
mNumberTransKeyView?.mTK_setIgnoreStatusbar(false)
|
|
mNumberTransKeyView?.mTK_SetControlCenter(false)
|
|
mNumberTransKeyView?.mTK_UseAllDeleteButton(false)
|
|
mNumberTransKeyView?.mTK_Supported(byDeviceOrientation: SupportedByDevicePortraitAndLandscape)
|
|
mNumberTransKeyView?.setKeyboardType(self,
|
|
keypadType: TransKeyKeypadTypeText,
|
|
mTK_inputType: 2,
|
|
mTK_inputTitle: "password",
|
|
mTK_cryptType: 0,
|
|
mTK_maxLength: 16,
|
|
mTK_minLength: 0,
|
|
mTK_keypadUpper: false,
|
|
mTK_languageType: Int(mTK_Language_English.rawValue))
|
|
if let mNumberTransKeyView = mNumberTransKeyView {
|
|
self.present(mNumberTransKeyView, animated: true, completion: nil)
|
|
}
|
|
}
|
|
}
|
|
|
|
// MARK: IBActions
|
|
|
|
// MARK: Other Functions
|
|
|
|
private func setup() {
|
|
// all setup should be done here
|
|
self.titleLabel.text = "enter_otp_password_text".localized()
|
|
self.verificationCodeTextField.placeholder = "otp_password_hint_text".localized()
|
|
self.resendButton.setTitle("resend_request_text".localized(), for: UIControlState.normal)
|
|
self.viewSampleButton.setTitle("view_sample_text".localized(), for: UIControlState.normal)
|
|
self.submitButton.setTitle("submit_text".localized(), for: .normal)
|
|
self.notNowButton.setTitle("not_now_text".localized(), for: .normal)
|
|
verificationCodeTextField.delegate = self
|
|
self.backGourndBorderView.layer.borderWidth = 0.5
|
|
self.backGourndBorderView.layer.borderColor = UIColor.init(hex: "#EBECED").cgColor
|
|
self.backGourndBorderView.layer.cornerRadius = 10
|
|
}
|
|
|
|
private func configureText() {
|
|
self.titleLabel.text = "penny_test_promt_description_text".localized()
|
|
self.otpCodeTitlelabel.text = "otp__Code_text".localized()
|
|
self.viewSampleButton.setTitle("view_sample_text".localized(), for: UIControlState.normal)
|
|
self.resendButton.setTitle("resend_text".localized(), for: UIControlState.normal)
|
|
self.submitButton.setTitle("submit_text".localized(), for: UIControlState.normal)
|
|
self.notNowButton.setTitle("not_now_text".localized(), for: UIControlState.normal)
|
|
self.counterTitleLabel.text = "resend_code_text".localized()
|
|
|
|
}
|
|
|
|
@IBAction func viewSample(_ sender: Any) {
|
|
self.showSampleImage()
|
|
}
|
|
|
|
|
|
@IBAction func resend(_ sender: Any) {
|
|
self.requestOtpCode()
|
|
}
|
|
|
|
@IBAction func dismiss(_ sender: Any) {
|
|
self.dismiss()
|
|
}
|
|
|
|
private func dismiss() {
|
|
|
|
self.dismiss(animated: true, completion: nil)
|
|
|
|
}
|
|
|
|
func showSampleImage() {
|
|
let image = #imageLiteral(resourceName: "penny3.jpg")
|
|
let alertVC = PMAlertController(title: "", description: "", image: image, style: .alert)
|
|
alertVC.alertView.layer.cornerRadius = 10
|
|
let action = PMAlertAction(title: "ok_text".localized(), style: .cancel)
|
|
alertVC.addAction(action)
|
|
self.present(alertVC, animated: true, completion: nil)
|
|
}
|
|
|
|
|
|
// resend
|
|
|
|
|
|
private func requestOtpCode() {
|
|
// request otp
|
|
self.presenter?.viewIsReady()
|
|
self.startTimer()
|
|
|
|
}
|
|
|
|
private func startTimer() {
|
|
self.timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(self.updateCounter), userInfo: nil, repeats: true)
|
|
self.timer?.fire()
|
|
self.resendButton.isUserInteractionEnabled = false
|
|
self.counterStackView.isHidden = false
|
|
}
|
|
|
|
@objc func updateCounter() {
|
|
self.count -= 1
|
|
}
|
|
|
|
private func requestOtpCodeRetryCount() {
|
|
let _default = UserDefaults.standard
|
|
}
|
|
}
|
|
|
|
// MARK: SendMoneyCodeViewInterface
|
|
extension SendMoneyCodeViewController: SendMoneyCodeViewInterface {
|
|
func showLoading() {
|
|
self.showProgressHud()
|
|
}
|
|
|
|
func hideLoading() {
|
|
self.hideProgressHud()
|
|
}
|
|
|
|
func show(message: String) {
|
|
self.alert(message: message)
|
|
}
|
|
|
|
func show(error: String) {
|
|
self.alert(message: error)
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
extension SendMoneyCodeViewController: TransKeyViewDelegate {
|
|
func secureInputFinish(_ type: Int) {
|
|
|
|
var targetView : TransKeyView?
|
|
|
|
numberCipherString = mNumberTransKeyView?.mTK_GetSecureData()
|
|
|
|
targetView = mNumberTransKeyView
|
|
|
|
|
|
targetView?.dismiss(animated: true, completion: {
|
|
self.encryptedNumber = self.numberCipherString
|
|
})
|
|
|
|
}
|
|
}
|
|
|
|
extension SendMoneyCodeViewController: UITextFieldDelegate {
|
|
func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
|
|
self.showNumberTranskeyAction()
|
|
return false
|
|
}
|
|
}
|
|
|
|
|
|
|
|
extension SendMoneyCodeViewController: OtpCodeRequestApiService {
|
|
|
|
}
|
|
|