Skip to content

Instantly share code, notes, and snippets.

@vibze
Created August 18, 2017 05:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vibze/b5c9d369ce04f891f1ea906ac6b69e7d to your computer and use it in GitHub Desktop.
Save vibze/b5c9d369ce04f891f1ea906ac6b69e7d to your computer and use it in GitHub Desktop.
Flow example
import Foundation
class RegistrationFlow: Flow {
let phoneNumber: String
var registerToken: String
var navigationController: UINavigationController?
var completion: (() -> Void)?
init(phoneNumber: String, _ completion: () -> Void) {
self.phoneNumber = phoneNumber
self.completion = completion
}
func showEntryPage(in controller: UINavigationController) {
self.navigationController = controller
showOTPInputPage()
}
private func showOTPInputPage() {
let page = OTPInputPage() { [weak self] (otp) in
requestTokenWithOTP(otp)
}
navigationController?.pushViewController(page, animated: true)
}
private func requestTokenWithOTP(_ otp: String) {
API.requestToken(phoneNumber: phoneNumber, otp: otp, scope: .register) { token in
self.registerToken = token
self.showPasswordInputPage()
}
}
private func showPasswordInputPage() {
let passwordInputPage = PasswordInputPage() { [weak self] (password) in
registerUser(phoneNumber: self?.phoneNumber, password: password)
}
navigationController?.pushViewController(passwordInputPage, animated: true)
flow.showEntryPage(navigationController)
}
private func registerUser(phoneNumber: String, password: String) {
API.registerUser(phoneNumber: phoneNumber, password: password, token: registerToken) {
self.completion()
}
}
+
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment