Skip to content

Instantly share code, notes, and snippets.

@nic004
Last active March 8, 2018 08:20
Show Gist options
  • Select an option

  • Save nic004/9f9f95bc22cdfd8c9711fc9894591624 to your computer and use it in GitHub Desktop.

Select an option

Save nic004/9f9f95bc22cdfd8c9711fc9894591624 to your computer and use it in GitHub Desktop.
phone number verification without Reactive #5
import ReactiveSwift
import ReactiveCocoa
import enum Result.NoError
class PhoneVerifyViewController: UIViewController {
...
enum PhoneNumberVerifyStep {
case inputPhoneNumber, inputVerifyNumber, verifying, succeed, failed
var isVerifiedStep: Bool {
return [PhoneNumberVerifyStep.succeed, .failed].contains(self)
}
}
var verifyStep = MutableProperty<PhoneNumberVerifyStep>(.inputPhoneNumber)
override func viewDidLoad() {
super.viewDidLoad()
requestVerifyNumberButton.reactive.isEnabled <~ phoneNumberTextField
.reactive.continuousTextValues.map { !($0?.isEmpty ?? true) }
verifyButton.reactive.controlEvents(.touchUpInside).observeValues { _ in
_ = self.api.getUsersVerify(PhoneNumberVerifyParams(phone_number: self.phoneNumberTextField.text, code: self.verifyNumberTextField.text))
.on(value: { _ in
self.verifyStep.value = .succeed
})
.on(failed: { error in
self.verifyStep.value = .failed
})
}
verifyNumberTextField.reactive.isHidden <~ verifyStep.map { $0 == .succeed }
verifyButton.reactive.isHidden <~ verifyStep.map { $0 == .succeed }
statusLabel.reactive.isHidden <~ verifyStep.map { !$0.isVerifiedStep }
statusLabel.reactive.text <~ verifyStep.signal.filter { $0.isVerifiedStep }.map {
$0 == .succeed ? "인증이 완료되었습니다." : "번호가 일치하지 않습니다. 유효시간 ..."
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment