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

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