diff --git a/src/assets/utils/apiHandler.jsx b/src/assets/utils/apiHandler.jsx new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/DoctorCadastroManager.jsx b/src/pages/DoctorCadastroManager.jsx index 3a928c4..67bc475 100644 --- a/src/pages/DoctorCadastroManager.jsx +++ b/src/pages/DoctorCadastroManager.jsx @@ -3,12 +3,14 @@ import React, { useState } from 'react'; // Importamos os dois novos componentes que criamos import DoctorList from '../components/doctors/DoctorList'; import DoctorForm from '../components/doctors/DoctorForm'; +import handleApiResponse from '../assets/utils/apiHandler'; function DoctorCadastroManager( ) { // Este estado vai controlar qual "tela" mostrar: 'list' (lista) ou 'form' (formulário) const [view, setView] = useState('form'); + const [errorMessage, setErrorMessage] = useState(""); + const [fieldErrors, setFieldErrors] = useState({}); - var myHeaders = new Headers(); myHeaders.append("Content-Type", "application/json"); @@ -29,8 +31,14 @@ function DoctorCadastroManager( ) { fetch("https://mock.apidog.com/m1/1053378-0-default/pacientes", requestOptions) .then(response => response.text()) + .then(handleApiResponse) .then(result => console.log(result)) - .catch(error => console.log('error', error)); + // .catch(error => console.log('error', error)); + .catch((error) => { + console.log('error', error) + setErrorMessage(error.message || "Erro desconhecido"); + setFieldErrors(error.details || {}); + }); alert(`Médico "${patientData.nome}" salvo com sucesso!`); //altere isso para integração com backend // Após salvar, voltamos para a tela de lista @@ -39,11 +47,31 @@ function DoctorCadastroManager( ) { return ( <> + {/* Mensagens de erro específicas */} + {Object.keys(fieldErrors).length > 0 && ( +
+ {Object.entries(fieldErrors).map(([campo, mensagens]) => ( +
+ {campo}: + +
+ ))} +
+ )}

Cadastro de Médicos

+ {errorMessage && ( +
+ {errorMessage} +
+ )}
{/* Aqui está a lógica principal: */} {/* Se a view for 'list', mostramos a lista com o botão. */}