import React, { useState, useContext } from "react"; import { StyleSheet, View, Text } from "react-native"; import * as Yup from "yup"; import { Form, SubmitButton, FormField, ErrorMessage, } from "../components/forms"; import Screen from "../components/Screen"; import colors from "../config/colors"; import { dimensions } from "../config/dimensions"; import { AuthContext } from "../auth/context"; import authStorage from "../auth/storage"; import assets from "../config/assets"; import Button from "../components/Button"; import { TouchableNativeFeedback } from "react-native"; import { login, userPersonalData } from "../api/auth"; import PasswordFormField from "../components/forms/PasswordFormField"; import ConfirmationModal from "../components/ConfirmationModal"; import PhoneNumberFormField from "../components/forms/PhoneNumberFormField"; const phoneRegex = RegExp( /^\(?[\(]?([0-9]{2})?\)?[)\b]?([0-9]{4,5})[-. ]?([0-9]{4})$/ ); const validationSchema = Yup.object().shape({ name: Yup.string() .matches(phoneRegex, "Número inválido") .required("O número de telefone é obrigatório"), password: Yup.string() .required("A senha é obrigatória") .min(8, "Senha muito curta, minimo 8 caracteres") .matches(/[a-zA-Z]/, "A senha só pode conter letras"), }); function DashedOrSeparator() { return ( OU ); } export default function LoginScreen(props) { const authContext = useContext(AuthContext); const [showLog, setShowLog] = useState({ show: false, message: "" }); const handleSubmit = async (name, password, setLoginFailed) => { const result = await login(name, password); switch (result.status) { case 404: setLoginFailed(true); return; case 400: setShowLog({ show: true, message: "Um erro inesperado ocorreu. Tente novamente mais tarde", }); return; } await authStorage.setToken(result.data); result.ok && setLoginFailed(false); const user = await userPersonalData(); user.ok && authContext.setUser(user.data); }; const [loginFailed, setLoginFailed] = useState(false); return ( setShowLog({ ...showLog, show: false })} />
handleSubmit(name, password, setLoginFailed) } > { props.navigation.navigate("PasswordRecovery"); }} > Esqueceu a senha?