// app/dev/api-check/page.tsx (V2 - Com Mocks e Seções Colapsáveis) "use client"; import React, { useState } from 'react'; import { authService, userService, patientService, doctorService, scheduleService, reportService, } from '@/services/api/apiService'; import * as TestData from '@/services/api/apiTestData'; import { LoginResponse, SendMagicLinkResponse, LogoutResponse, GetCurrentUserResponse, RequestPasswordResetResponse, HardDeleteUserResponse, RegisterPatientResponse, ListResponse, Patient, GetAvailableSlotsResponse } from '@/services/api/types'; type ApiResponse = { status: number | 'network_error'; data?: any; error?: Error }; const getStyleForResponse = (response: ApiResponse | null): React.CSSProperties => { if (!response) return {}; const baseStyle: React.CSSProperties = { padding: '10px', border: '1px solid', borderRadius: '4px', whiteSpace: 'pre-wrap', wordBreak: 'break-all', marginTop: '10px' }; if (response.status === 'network_error') return { ...baseStyle, backgroundColor: 'lightgoldenrodyellow', borderColor: 'goldenrod' }; if (response.status >= 200 && response.status < 300) return { ...baseStyle, backgroundColor: 'lightgreen', borderColor: 'green' }; if (response.status >= 400) return { ...baseStyle, backgroundColor: 'lightcoral', borderColor: 'darkred' }; return {}; }; const ApiVerificationPage: React.FC = () => { // --- ESTADOS --- const [loginData, setLoginData] = useState(TestData.loginTestData.success); const [loginResponse, setLoginResponse] = useState(null); const [magicLinkEmail, setMagicLinkEmail] = useState(TestData.magicLinkTestData.success); const [magicLinkResponse, setMagicLinkResponse] = useState(null); const [logoutResponse, setLogoutResponse] = useState(null); const [currentUserResponse, setCurrentUserResponse] = useState(null); const [resetPassData, setResetPassData] = useState(TestData.resetPassTestData.success); const [resetPassResponse, setResetPassResponse] = useState(null); const [deleteUserData, setDeleteUserData] = useState(TestData.deleteUserTestData.success); const [deleteUserResponse, setDeleteUserResponse] = useState(null); const [registerPatientData, setRegisterPatientData] = useState(TestData.registerPatientTestData.success); const [registerPatientResponse, setRegisterPatientResponse] = useState(null); const [listPatientsFilter, setListPatientsFilter] = useState(TestData.listPatientsTestData.success); const [listPatientsResponse, setListPatientsResponse] = useState | null>(null); const [slotsData, setSlotsData] = useState(TestData.slotsTestData.success); const [slotsResponse, setSlotsResponse] = useState(null); // --- HANDLERS --- const handleApiCall = async (apiFunction: (...args: any[]) => Promise, payload: any, setResponse: React.Dispatch>) => { setResponse(null); const response = await apiFunction(payload); setResponse(response); }; const handleApiCallNoPayload = async (apiFunction: () => Promise, setResponse: React.Dispatch>) => { setResponse(null); const response = await apiFunction(); setResponse(response); }; const handleRequestPasswordReset = async () => { setResetPassResponse(null); const response = await userService.requestPasswordReset(resetPassData.email, resetPassData.redirectUrl || undefined); setResetPassResponse(response); }; const handleGetAvailableSlots = async () => { setSlotsResponse(null); const response = await scheduleService.getAvailableSlots(slotsData.doctorId, slotsData.date); setSlotsResponse(response); }; return (

Painel de Verificação da API

Use este painel para executar cada função do `apiService` e verificar o objeto de resposta completo.

Autenticação

authService.login

{JSON.stringify(loginData, null, 2)}
{loginResponse &&
{JSON.stringify(loginResponse, null, 2)}
}

authService.sendMagicLink

{JSON.stringify(magicLinkEmail, null, 2)}
{magicLinkResponse &&
{JSON.stringify(magicLinkResponse, null, 2)}
}

authService.logout

{logoutResponse &&
{JSON.stringify(logoutResponse, null, 2)}
}

authService.getCurrentUser

{currentUserResponse &&
{JSON.stringify(currentUserResponse, null, 2)}
}

Usuários

userService.requestPasswordReset

{JSON.stringify(resetPassData, null, 2)}
{resetPassResponse &&
{JSON.stringify(resetPassResponse, null, 2)}
}

userService.hardDeleteUser_DANGEROUS

{JSON.stringify(deleteUserData, null, 2)}
{deleteUserResponse &&
{JSON.stringify(deleteUserResponse, null, 2)}
}

Pacientes

patientService.registerPatient

{JSON.stringify(registerPatientData, null, 2)}
{registerPatientResponse &&
{JSON.stringify(registerPatientResponse, null, 2)}
}

patientService.list

{JSON.stringify(listPatientsFilter, null, 2)}
{listPatientsResponse &&
{JSON.stringify(listPatientsResponse, null, 2)}
}

Agendamentos

scheduleService.getAvailableSlots

{JSON.stringify(slotsData, null, 2)}
{slotsResponse &&
{JSON.stringify(slotsResponse, null, 2)}
}
); }; export default ApiVerificationPage;