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.
193 lines
6.0 KiB
193 lines
6.0 KiB
//
|
|
// NewRegisterViewController.swift
|
|
// GME Remit
|
|
//
|
|
// Created by InKwon James Kim on 2019/12/02.
|
|
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
|
|
//
|
|
|
|
import UIKit
|
|
import RxSwift
|
|
import RxCocoa
|
|
|
|
protocol NewRegisterDelegate: class {
|
|
func newRegister(
|
|
_ viewController: UIViewController,
|
|
currentStep: NewRegisterViewController.Step,
|
|
nextStep: NewRegisterViewController.Step)
|
|
}
|
|
|
|
class NewRegisterViewController: UIViewController {
|
|
enum Step: Int {
|
|
case first
|
|
case upload
|
|
case terms
|
|
case finish
|
|
}
|
|
|
|
// MARK: Properties
|
|
var presenter: NewRegisterPresenter!
|
|
let moveStep = BehaviorSubject<Step>(value: .first)
|
|
|
|
private let disposeBag = DisposeBag()
|
|
|
|
private var stepButtons = [UIButton]()
|
|
// MARK: Computed Properties
|
|
|
|
// MARK: IBOutlets
|
|
@IBOutlet private weak var step1Button: UIButton!
|
|
@IBOutlet private weak var step2Button: UIButton!
|
|
@IBOutlet private weak var step1TitleLabel: UILabel!
|
|
@IBOutlet private weak var step2TitleLabel: UILabel!
|
|
@IBOutlet weak var step3Button: UIButton!
|
|
@IBOutlet weak var step3TitleLabel: UILabel!
|
|
|
|
@IBOutlet private weak var step1ToStep2Line: UIView!
|
|
|
|
@IBOutlet weak var containerView: UIView!
|
|
|
|
// MARK: VC's Life cycle
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
setup()
|
|
}
|
|
|
|
override func viewWillAppear(_ animated: Bool) {
|
|
super.viewWillAppear(animated)
|
|
|
|
title = "new_registration_title_text".localized()
|
|
|
|
setupNormalNavigation()
|
|
//navigationItem.setHidesBackButton(true, animated: true)
|
|
|
|
if self.presentingViewController != nil {
|
|
let closeButton = UIBarButtonItem(
|
|
image: UIImage(named: "ic_back_button"),
|
|
style: .plain,
|
|
target: self,
|
|
action: #selector(close)
|
|
)
|
|
|
|
navigationItem.leftBarButtonItem = closeButton
|
|
} else {
|
|
let closeButton = UIBarButtonItem(
|
|
image: UIImage(named: "ic_back_button"),
|
|
style: .plain,
|
|
target: self,
|
|
action: #selector(back)
|
|
)
|
|
|
|
navigationItem.leftBarButtonItem = closeButton
|
|
}
|
|
|
|
let supportButton = UIBarButtonItem(
|
|
image: UIImage(named: "contact"),
|
|
style: .plain,
|
|
target: self,
|
|
action: #selector(customerSupport)
|
|
)
|
|
navigationItem.rightBarButtonItem = supportButton
|
|
}
|
|
|
|
override func viewWillDisappear(_ animated: Bool) {
|
|
super.viewWillDisappear(animated)
|
|
|
|
title = ""
|
|
}
|
|
|
|
@objc func customerSupport(_ sender: Any) {
|
|
|
|
let actionArray = [ActionSheetElement(title: "Facebook", id: "https://www.facebook.com/", icon: "Facebook"), ActionSheetElement(title: "03-5475-3913", id: "tel://0354753913", icon: "contact")]
|
|
ActionSheetHelper.shared.open(parentVc: self, title: "help_you_text".localized(), values: actionArray) { (element) in
|
|
UIApplication.tryURL(url: element.id)
|
|
}
|
|
}
|
|
|
|
// MARK: IBActions
|
|
@IBAction func touchStepButtom(_ sender: UIButton) {
|
|
guard let step = Step(rawValue: sender.tag) else {
|
|
return
|
|
}
|
|
moveStep.onNext(step)
|
|
}
|
|
}
|
|
|
|
// MARK: Other Functions
|
|
extension NewRegisterViewController {
|
|
|
|
private func setup() {
|
|
setUI()
|
|
setBinding()
|
|
setUIBinding()
|
|
}
|
|
|
|
private func setUI() {
|
|
step1Button.rounded()
|
|
step2Button.rounded()
|
|
step3Button.rounded()
|
|
|
|
containerView.layer.cornerRadius = 5
|
|
|
|
stepButtons = [
|
|
step1Button,
|
|
step2Button,
|
|
step3Button
|
|
]
|
|
|
|
setMultilanguages()
|
|
}
|
|
|
|
private func setUIBinding() {
|
|
moveStep.asDriverOnErrorJustComplete()
|
|
.map {$0.rawValue}
|
|
.drive(onNext: { [weak self] tag in
|
|
DispatchQueue.main.async {
|
|
self?.stepButtons.enumerated().forEach { (index, button) in
|
|
if button.tag == tag || index <= tag {
|
|
button.backgroundColor = .themeBlue
|
|
button.setTitleColor(.white, for: .normal)
|
|
button.layer.borderWidth = 0
|
|
button.isEnabled = true
|
|
button.titleLabel?.font = .sanfrancisco(.medium, size: 12)
|
|
} else {
|
|
button.backgroundColor = .white
|
|
button.layer.borderColor = UIColor.lightGray.cgColor
|
|
button.layer.borderWidth = 1
|
|
button.setTitleColor(.black, for: .normal)
|
|
button.isEnabled = false
|
|
button.titleLabel?.font = .sanfrancisco(.regular, size: 12)
|
|
}
|
|
}
|
|
}
|
|
}).disposed(by: disposeBag)
|
|
}
|
|
|
|
private func setBinding() {
|
|
let input = NewRegisterPresenter.Input(
|
|
moveStep: moveStep.asDriverOnErrorJustComplete()
|
|
)
|
|
let output = presenter.transform(input: input)
|
|
|
|
output.isError
|
|
.drive(
|
|
onNext: { self.alert(type: .error, message: $0.localizedDescription) }
|
|
).disposed(by: disposeBag)
|
|
|
|
output.isProgress
|
|
.drive(
|
|
onNext: { $0 ? self.showProgressHud() : self.hideProgressHud() }
|
|
).disposed(by: disposeBag)
|
|
}
|
|
|
|
@objc private func close() {
|
|
dismiss(animated: true, completion: nil)
|
|
}
|
|
@objc private func back() {
|
|
self.navigationController?.popToRootViewController(animated: true)
|
|
}
|
|
func setMultilanguages() {
|
|
step1TitleLabel.text = "step1_sub_title_text".localized()
|
|
step2TitleLabel.text = "documents_text".localized()
|
|
step3TitleLabel.text = "terms_and_condition_title_text1".localized()
|
|
}
|
|
}
|