This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class PhoneVerifyViewController: UIViewController { | |
enum PhoneNumberVerifyStep { | |
case inputPhoneNumber, inputVerifyNumber, verifying, succeed, failed | |
} | |
var verifyStep: PhoneNumberVerifyStep = .inputPhoneNumber | |
@IBOutlet weak var phoneNumberTextField: UITextField! | |
@IBOutlet weak var verifyNumberTextField: UITextField! | |
@IBOutlet weak var requestVerifyNumberButton: UIButton! |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import ReactiveSwift | |
import ReactiveCocoa | |
import enum Result.NoError | |
class PhoneVerifyViewController: UIViewController { | |
... | |
enum PhoneNumberVerifyStep { | |
case inputPhoneNumber, inputVerifyNumber, verifying, succeed, failed |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
override func viewDidLoad() { | |
super.viewDidLoad() | |
phoneNumberTextField.addTarget(self, action: #selector(phoneNumberEditingChanged), for: .editingChanged) | |
} | |
func phoneNumberEditingChanged(_ textField: UITextField) { | |
requestVerifyNumberButton.isEnabled = !(textField.text?.isEmpty ?? true) | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@IBAction func requestVerifyNumberAction(_ sender: Any) { | |
guard let phoneNumber = phoneTextField.text else { return } | |
api.postUsersVerify(phoneNumber: phoneNumber).on(value: { _ in | |
self.verifyStep = .inputVerifyNumber | |
}) | |
} | |
@IBAction func verifyAction(_ sender: Any) { | |
guard let phoneNumber = phoneTextField.text, let code = verifyNumberTextField.text else { return } | |
api.getUsersVerify(PhoneNumberVerifyParams(phone_number: phoneNumber, code: code)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var verifyStep: PhoneNumberVerifyStep = .inputPhoneNumber { | |
didSet { | |
switch verifyStep { | |
... | |
case .succeed: | |
verifyNumberTextField.isHidden = true | |
verifyButton.isHidden = true | |
statusLabel.text = "인증이 완료되었습니다." | |
case .failed: | |
... |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class ViewController: UIViewController { | |
@IBOutlet weak var phoneNumberTextField: UITextField! | |
@IBOutlet weak var verifyNumberTextField: UITextField! | |
@IBOutlet weak var requestVerifyNumberButton: UIButton! | |
@IBOutlet weak var verifyButton: UIButton! | |
@IBOutlet weak var statusLabel: UILabel! | |
var verifyStep: PhoneNumberVerifyStep = .inputPhoneNumber { | |
didSet { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
func job() -> SignalProducer<Int, NoError> { | |
return SignalProducer<Int, NoError> { observer, disposable in | |
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + .seconds(10)) { | |
observer.send(value: 300) | |
observer.sendCompleted() | |
} | |
} | |
} | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Promise<JSON, CommonError> { observer, disposable in | |
Alamofire.request("https://httpbin.org/get").responseJSON { response in | |
guard case let .success(value) = response.result else { | |
observer.send(error: .anyError) | |
return | |
} | |
observer.send(value: JSON(value)) | |
observer.sendCompleted() | |
} | |
}.value { json in |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
... | |
class Promise<Value, Error: Swift.Error> { | |
... | |
@discardableResult func started(_ then: @escaping () -> Void) -> Promise<Value, Error> { | |
sp.on(started: then) | |
return self | |
} | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Promise<Value, Error: Swift.Error> { | |
... | |
deinit { | |
sp.start() | |
} | |
} |
NewerOlder