From 69b9513a19e8d0aa280bae8ec7b91dd5e81de2fa Mon Sep 17 00:00:00 2001 From: "Alberto Duarte (PWC)" Date: Mon, 9 Oct 2023 17:31:33 +0100 Subject: Second commit --- screens/signin.js | 356 +++++++++++++++++++++++++++--------------------------- 1 file changed, 178 insertions(+), 178 deletions(-) (limited to 'screens/signin.js') diff --git a/screens/signin.js b/screens/signin.js index 49d328d..85a179e 100644 --- a/screens/signin.js +++ b/screens/signin.js @@ -1,178 +1,178 @@ -import {useEffect, useState} from 'react'; -import { - Image, - Keyboard, - KeyboardAvoidingView, - Platform, - Pressable, - SafeAreaView, - Text, - TextInput, - TouchableWithoutFeedback, - View, -} from 'react-native'; - -import tw from 'twrnc'; - -import {EyeIcon} from 'react-native-heroicons/outline'; -import {EyeSlashIcon} from 'react-native-heroicons/outline'; -import auth from '@react-native-firebase/auth'; - -const SignIn = ({navigation}) => { - - const [email, setEmail] = useState(''); - const [password, setPassword] = useState(''); - const [isValidEmail, setIsValidEmail] = useState(false); - const [isValidPassword, setIsValidPassword] = useState(false); - const [isPasswordVisible, setIsPasswordVisible] = useState(true); - - useEffect(() => { - debounce(emailValidation()); - }, [email]); - - useEffect(() => { - debounce(passwordValidation()); - }, [password]); - - const emailValidation = () => { - const emailRegex = /^(([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i; - if (!email || emailRegex.test(email) === false) { - setIsValidEmail(false); - return false; - } - setIsValidEmail(true); - return true; - }; - - const passwordValidation = () => { - const passwordRegex = /^(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*()_+])[A-Za-z\d!@#$%^&*()_+]{8,}$/i; - - - if (!password || passwordRegex.test(password) === false) { - setIsValidPassword(false) - return false - } - setIsValidPassword(true) - return true - } - - // Utility FN · Mover a carpeta utils/utils.js - const debounce = fn => { - let id = null; - - return (...args) => { - if (id) { - clearTimeout(id); - } - id = setTimeout(() => { - fn(...args); - id = null; - }, 300); - }; - }; - - const loginUser = () => { - if (isValidEmail && isValidPassword) { - auth() - .signInWithEmailAndPassword(email, password) - .then(() => { - console.log('User signed in successfully!'); - // Navigate to the home screen or other desired screen - }) - .catch(error => { - console.error(error); - // Display an error message to the user - }); - } -}; - - return ( - - { - Keyboard.dismiss(); - }} - > - - - - - - - ingresar - - { - setEmail(textInput); - }} - autoCapitalize={'none'} - keyboardType={'email-address'} - /> - - email incorrecto. - - - { - setIsPasswordVisible(!isPasswordVisible) - }} style={tw`absolute top-3 right-3 z-10`}> - {!isPasswordVisible? ( - - ) : ( - - )} - - { - setPassword(passwordInput) - }} - secureTextEntry={!isPasswordVisible} - /> - - - debe contener a-b-0-! - - - ingresar - - navigation.navigate('PasswordRecovery')} - style={tw`mb-16`} - > - ¿olvidaste tu contraseña? - - - ¿no tienes una cuenta? - navigation.navigate('SignUp')}> - registrate - - - - - - - ); -}; - -export default SignIn; +import {useEffect, useState} from 'react'; +import { + Image, + Keyboard, + KeyboardAvoidingView, + Platform, + Pressable, + SafeAreaView, + Text, + TextInput, + TouchableWithoutFeedback, + View, +} from 'react-native'; + +import tw from 'twrnc'; + +import {EyeIcon} from 'react-native-heroicons/outline'; +import {EyeSlashIcon} from 'react-native-heroicons/outline'; +import auth from '@react-native-firebase/auth'; + +const SignIn = ({navigation}) => { + + const [email, setEmail] = useState(''); + const [password, setPassword] = useState(''); + const [isValidEmail, setIsValidEmail] = useState(false); + const [isValidPassword, setIsValidPassword] = useState(false); + const [isPasswordVisible, setIsPasswordVisible] = useState(true); + + useEffect(() => { + debounce(emailValidation()); + }, [email]); + + useEffect(() => { + debounce(passwordValidation()); + }, [password]); + + const emailValidation = () => { + const emailRegex = /^(([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i; + if (!email || emailRegex.test(email) === false) { + setIsValidEmail(false); + return false; + } + setIsValidEmail(true); + return true; + }; + + const passwordValidation = () => { + const passwordRegex = /^(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*()_+])[A-Za-z\d!@#$%^&*()_+]{8,}$/i; + + + if (!password || passwordRegex.test(password) === false) { + setIsValidPassword(false) + return false + } + setIsValidPassword(true) + return true + } + + // Utility FN · Mover a carpeta utils/utils.js + const debounce = fn => { + let id = null; + + return (...args) => { + if (id) { + clearTimeout(id); + } + id = setTimeout(() => { + fn(...args); + id = null; + }, 300); + }; + }; + + const loginUser = () => { + if (isValidEmail && isValidPassword) { + auth() + .signInWithEmailAndPassword(email, password) + .then(() => { + console.log('User signed in successfully!'); + // Navigate to the home screen or other desired screen + }) + .catch(error => { + console.error(error); + // Display an error message to the user + }); + } +}; + + return ( + + { + Keyboard.dismiss(); + }} + > + + + + + + + ingresar + + { + setEmail(textInput); + }} + autoCapitalize={'none'} + keyboardType={'email-address'} + /> + + email incorrecto. + + + { + setIsPasswordVisible(!isPasswordVisible) + }} style={tw`absolute top-3 right-3 z-10`}> + {!isPasswordVisible? ( + + ) : ( + + )} + + { + setPassword(passwordInput) + }} + secureTextEntry={!isPasswordVisible} + /> + + + debe contener a-b-0-! + + + ingresar + + navigation.navigate('PasswordRecovery')} + style={tw`mb-16`} + > + ¿olvidaste tu contraseña? + + + ¿no tienes una cuenta? + navigation.navigate('SignUp')}> + registrate + + + + + + + ); +}; + +export default SignIn; -- cgit v1.2.3-54-g00ecf