Files
Woka_Native_iOS/WOKA/Authentication/Controller/LoginVC.swift
BilalKhanWDI 3c69db0032 - Added send OTP api
- Added verify  OTP api
- Modified the flow
- Made a authfunc to handle the type of user and the language selected
- Added OTP fields combine logic. Also handled the otp blank checks.
- Added API for intrestes get
2024-05-07 19:33:29 +05:30

119 lines
4.2 KiB
Swift

//
// LoginVC.swift
// WOKA
//
// Created by Bilal on 03/05/2024.
//
import UIKit
class LoginVC: UIViewController {
@IBOutlet weak var loginBtn: LocalisedElementsButton!
@IBOutlet weak var createAccountBtn: LocalisedElementsButton!
@IBOutlet weak var userNameTF: TextFieldShadow!
@IBOutlet weak var passwordTF: TextFieldShadow!
@IBOutlet weak var passwordStack: UIStackView!
@IBOutlet weak var passwordEyeBtn: UIButton!
var vm = LoginVM()
override func viewDidLoad() {
super.viewDidLoad()
vm.vc = self
vm.initView()
}
@IBAction func loginBtnTapped(_ sender: LocalisedElementsButton) {
guard let userName = userNameTF.text , let pass = passwordTF.text else{return}
/*
Check for userName
*/
if userName.count < 2{
userNameTF.rightView?.isHidden = false
userNameTF.setError("Username is too short.", show: true)
return
}
/*
Check for password
*/
if pass.count < 6{
let sb = UIStoryboard(name: K.StoryBoard.customAlerts, bundle: nil)
let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.CustomAlerts.alertCustomVC) as! AlertCustomVC
vcPush.contentLabel = "Password is too short."
vcPush.mainTitleText = "Error"
// vcPush.onDoneBlock = { isDone in }
vcPush.modalPresentationStyle = .overCurrentContext
vcPush.modalTransitionStyle = .crossDissolve
self.present(vcPush, animated: true)
return
}
vm.loginUser()
}
@IBAction func createAccountBtnTapped(_ sender: LocalisedElementsButton) {
let sb = UIStoryboard(name: K.StoryBoard.main, bundle: nil)
let vc = sb.instantiateViewController(withIdentifier: K.StoryBoardID.OnBoarding.selectAgeVC) as! SelectAgeVC
self.navigationController?.pushViewController(vc, animated: true)
}
@IBAction func continueGuestBtnTapped(_ sender: UIButton) {
}
@IBAction func forgotPasswordBtnTapped(_ sender: UIButton) {
let sb = UIStoryboard(name: K.StoryBoard.authenticationSB, bundle: nil)
let vc = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Authentication.resetPassUserNameVC) as! ResetPassUserNameVC
self.navigationController?.pushViewController(vc, animated: true)
}
}
// MARK: - Textfield Delegate
extension LoginVC : UITextFieldDelegate{
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
switch textField{
// username - 2,16 , password - 6,16
case userNameTF:
if let rightView = textField.rightView {
// Hide the right view
rightView.isHidden = true
// Check if the right view is hidden
if rightView.isHidden {
// If hidden, hide the associated error view
if let errorView = errorViews.object(forKey: userNameTF) {
errorView.isHidden = true
}
}
}
if !string.numberAndCharacterAndSpecialChar(){return false}
return ValidatorClass.sharedInstanec.limitCharacter(length: 16,textField, shouldChangeCharactersIn: range, replacementString: string)
case passwordTF:
let currentString = (textField.text ?? "") as NSString
let newString = currentString.replacingCharacters(in: range, with: string)
newString.count == 0 ? (textField.rightView?.isHidden = true) : (textField.rightView?.isHidden = false)
return ValidatorClass.sharedInstanec.limitCharacter(length: 16,textField, shouldChangeCharactersIn: range, replacementString: string)
default:
return true
}
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
switch textField{
case userNameTF:
passwordTF.becomeFirstResponder()
case passwordTF:
self.view.endEditing(true)
default:
break
}
return true
}
}