verifying user inputs in Login/register view controllers
//: A UIKit based Playground for presenting user interface
import UIKit
import PlaygroundSupport
var usernameTextfield = UITextField()
var userPasswordTextfield = UITextField()
func userTappedBtn(sender: UIButton) {
// verify
// call api
// handle response for api
}
func verifyUserInputs() {
do {
let username = try verifyInput(username: usernameTextfield)
let password = try verifyInput(email: usernameTextfield)
// call api
callAPi(username: username, password: password, completion: handleApiResponse)
}catch {
guard let error = error as? LoginError else {
return
}
showError(error)
}
}
func handleApiResponse(results: Bool) {
// segue
// show error if there's any
}
func showError(_ error: LoginError) {
// showAlert(error.localizedDescription)
}
enum LoginError: LocalizedError {
case usernameEmpty, usernameCount, emailIsEmpty
var localizedDescription: String {
switch self {
case .usernameEmpty:
return "من فضلك اسم المستخدم"
case .usernameCount:
return "عدد حروف اسم المستخدم اقل من المسموح به"
case .emailIsEmpty:
return "لا بد من إدخال البريد الإلكتروني"
}
}
}
func verifyInput(username: UITextField) throws -> String {
guard username.hasText else {
throw LoginError.usernameEmpty
}
guard let user = username.text, user.count > 5 else {
throw LoginError.usernameCount
}
return user
}
func verifyInput(email: UITextField) throws -> String {
guard email.hasText else {
throw LoginError.emailIsEmpty
}
guard let emailText = email.text, emailText.isEmail else {
throw LoginError.usernameCount
}
return emailText
}
extension String {
var isEmail: Bool {
return true
}
}
func callAPi(username: String, password: String, completion: (Bool) -> Void) {
}