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

//
// 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()
}
}