Files
Woka_Native_iOS/WOKA/Authentication/Controller/LoginVC.swift
Bilal ecfa31b57f - Removed the pod for center collection view. Now instead of library i have created a custom flowlayout
- Added the Forgot password otp send api.
- Done the error handling and navigation for the same.
- Added api for password updated.
- Added necessary Checks for the password.
- Fixed the versioning issue of the centered flow layout. Also fixed the errors, for the complex calculations , splitted the calculations to avoid crash.
2024-05-10 20:43:57 +05:30

121 lines
4.3 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()
// MARK: - View LifeCycle
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
}
}