143 lines
5.3 KiB
Swift
143 lines
5.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()
|
|
|
|
// self.userNameTF.text = "child1"
|
|
// self.passwordTF.text = "Admin@123"
|
|
}
|
|
|
|
@IBAction func loginBtnTapped(_ sender: LocalisedElementsButton) {
|
|
vm.hideErrors()
|
|
PersistentStorage.shared.addOthersCount()
|
|
guard let userName = userNameTF.text?.trimmingCharacters(in: .whitespaces) , let pass = passwordTF.text else{return}
|
|
|
|
/*
|
|
Check for userName
|
|
*/
|
|
if userName.count < 2{
|
|
userNameTF.rightView?.isHidden = false
|
|
userNameTF.setError("Username is too short.".localized(loc: AuthFunc.shareInstance.languageSelected.rawValue), 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.".localized(loc: AuthFunc.shareInstance.languageSelected.rawValue)
|
|
vcPush.mainTitleText = "Error".localized(loc: AuthFunc.shareInstance.languageSelected.rawValue)
|
|
|
|
// vcPush.onDoneBlock = { isDone in }
|
|
vcPush.modalPresentationStyle = .overCurrentContext
|
|
vcPush.modalTransitionStyle = .crossDissolve
|
|
self.present(vcPush, animated: true)
|
|
return
|
|
}
|
|
vm.loginUser()
|
|
}
|
|
|
|
@IBAction func createAccountBtnTapped(_ sender: LocalisedElementsButton) {
|
|
PersistentStorage.shared.addOthersCount()
|
|
vm.hideErrors()
|
|
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) {
|
|
vm.hideErrors()
|
|
PersistentStorage.shared.addOthersCount()
|
|
vm.guestLogin()
|
|
}
|
|
|
|
@IBAction func forgotPasswordBtnTapped(_ sender: UIButton) {
|
|
vm.hideErrors()
|
|
PersistentStorage.shared.addOthersCount()
|
|
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)
|
|
}
|
|
|
|
@IBAction func forgotUsername(_ sender: LocalisedElementsButton) {
|
|
vm.hideErrors()
|
|
PersistentStorage.shared.addOthersCount()
|
|
let sb = UIStoryboard(name: K.StoryBoard.authenticationSB, bundle: nil)
|
|
let vc = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Authentication.emailVC) as! EmailVC
|
|
vc.vm.forgetUsername = true
|
|
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
|
|
}
|
|
}
|