From 5bb8bc5f5dcadec8ec6e7d7f820b9e162af5979c Mon Sep 17 00:00:00 2001 From: GabrielTrettel Date: Tue, 22 Feb 2022 17:12:01 -0300 Subject: [PATCH] Adding api response error handling --- src/app/navigation/AuthNavigator.js | 1 + .../PasswordRecoveryChangePswdScreen.js | 60 +++++++++++++++++-- src/app/screens/PasswordRecoveryScreen.js | 3 +- 3 files changed, 58 insertions(+), 6 deletions(-) diff --git a/src/app/navigation/AuthNavigator.js b/src/app/navigation/AuthNavigator.js index cb0cf95..9ff86f4 100644 --- a/src/app/navigation/AuthNavigator.js +++ b/src/app/navigation/AuthNavigator.js @@ -36,6 +36,7 @@ const AuthNavigator = () => ( diff --git a/src/app/screens/PasswordRecoveryChangePswdScreen.js b/src/app/screens/PasswordRecoveryChangePswdScreen.js index a3c7620..4ed0928 100644 --- a/src/app/screens/PasswordRecoveryChangePswdScreen.js +++ b/src/app/screens/PasswordRecoveryChangePswdScreen.js @@ -1,4 +1,4 @@ -import React from "react"; +import React, { useState } from "react"; import { StyleSheet, View, Text } from "react-native"; import * as Yup from "yup"; @@ -6,6 +6,7 @@ import { Form, SubmitButton } from "../components/forms"; import colors from "../config/colors"; import { dimensions } from "../config/dimensions"; import PasswordFormField from "../components/forms/PasswordFormField"; +import ConfirmationModal from "../components/ConfirmationModal"; const validationSchema = Yup.object().shape({ password: Yup.string() @@ -18,13 +19,58 @@ const validationSchema = Yup.object().shape({ .matches(/[a-zA-Z]/, "A senha só pode conter letras"), }); -export default function PasswordRecoveryChangePswd() { +export default function PasswordRecoveryChangePswd({ route }) { + const authToken = route.params.authToken; + console.log(authToken); + + const [confirmatioModalData, setConfirmatioModalData] = useState({ + show: false, + message: "", + }); + const comparePassword = (password, confirmPassword) => { return password !== confirmPassword; }; + const handleApiReturn = (apiReturn) => { + console.log(apiReturn); + switch (apiReturn) { + case 200: + setConfirmatioModalData({ + message: "Senha alterada com sucesso", + show: true, + }); + break; + case 404: + setConfirmatioModalData({ + message: "Número de telefone inválido", + show: true, + }); + break; + case 500: + case 403: + console.log("EXPIRED TOKEN"); + break; + default: + setConfirmatioModalData({ + message: "Algo deu errado, tente novamente mais tarde", + show: true, + }); + break; + } + }; + return ( + + setConfirmatioModalData({ ...confirmatioModalData, show: false }) + } + /> +
{ - const psw_match = comparePassword( + const psw_not_match = comparePassword( form.password, form.confirmPassword ); - if (psw_match) { + if (psw_not_match) { actions.setFieldError( "confirmPassword", "As senhas não correspondem" ); + } else { + // FIXME: This should be replaced by the proper api call in future + const apiReturnTest = 403; + + handleApiReturn(apiReturnTest); } - console.log("redefinir senha -> atualizar senha -> confirmar"); }} > diff --git a/src/app/screens/PasswordRecoveryScreen.js b/src/app/screens/PasswordRecoveryScreen.js index 5bea2c4..084bba8 100644 --- a/src/app/screens/PasswordRecoveryScreen.js +++ b/src/app/screens/PasswordRecoveryScreen.js @@ -98,11 +98,12 @@ export default function PasswordRecovery({ navigation }) { onSubmit={() => { // FIXME: This should be replaced by the proper api call in future const apiReturnTest = 200; + const apiReturnTokenTest = "API EXAMPLE TOKEN API"; switch (apiReturnTest) { case 200: console.log("ir pra proxima tela...."); - navigation.navigate("PasswordRecoveryChangePswd") + navigation.navigate("PasswordRecoveryChangePswd", { authToken : apiReturnTokenTest }) break; case 404: setConfirmatioModalData({