diff --git a/MEDICONNECT 2/avatar_download_test.png b/MEDICONNECT 2/avatar_download_test.png new file mode 100644 index 000000000..4e4a03fb6 Binary files /dev/null and b/MEDICONNECT 2/avatar_download_test.png differ diff --git a/MEDICONNECT 2/src/pages/AcompanhamentoPaciente.tsx b/MEDICONNECT 2/src/pages/AcompanhamentoPaciente.tsx index ae3710db1..d4ea306dd 100644 --- a/MEDICONNECT 2/src/pages/AcompanhamentoPaciente.tsx +++ b/MEDICONNECT 2/src/pages/AcompanhamentoPaciente.tsx @@ -24,6 +24,7 @@ import { appointmentService, doctorService, reportService } from "../services"; import type { Report } from "../services/reports/types"; import AgendamentoConsulta from "../components/AgendamentoConsulta"; import { AvatarUpload } from "../components/ui/AvatarUpload"; +import { avatarService } from "../services/avatars/avatarService"; interface Consulta { _id: string; @@ -78,6 +79,33 @@ const AcompanhamentoPaciente: React.FC = () => { if (!user || !isPaciente) navigate("/paciente"); }, [user, roles, navigate]); + // Carregar avatar ao montar componente + useEffect(() => { + if (user?.id) { + // Tenta carregar avatar existente (testa png, jpg, webp) + const extensions = ["png", "jpg", "webp"]; + const testAvatar = async () => { + for (const ext of extensions) { + try { + const url = avatarService.getPublicUrl({ + userId: user.id, + ext: ext as "jpg" | "png" | "webp" + }); + const response = await fetch(url, { method: "HEAD" }); + if (response.ok) { + setAvatarUrl(url); + console.log(`[AcompanhamentoPaciente] Avatar encontrado: ${url}`); + break; + } + } catch (error) { + // Continua testando próxima extensão + } + } + }; + testAvatar(); + } + }, [user?.id]); + const fetchConsultas = useCallback(async () => { if (!pacienteId) return; setLoading(true); diff --git a/MEDICONNECT 2/src/pages/PainelMedico.tsx b/MEDICONNECT 2/src/pages/PainelMedico.tsx index 0eea32d3e..0f9a1d6e2 100644 --- a/MEDICONNECT 2/src/pages/PainelMedico.tsx +++ b/MEDICONNECT 2/src/pages/PainelMedico.tsx @@ -36,6 +36,7 @@ import { useAuth } from "../hooks/useAuth"; import DisponibilidadeMedico from "../components/DisponibilidadeMedico"; import ConsultaModal from "../components/consultas/ConsultaModal"; import { AvatarUpload } from "../components/ui/AvatarUpload"; +import { avatarService } from "../services/avatars/avatarService"; // Type aliases para compatibilidade type ServiceConsulta = Appointment; @@ -100,6 +101,33 @@ const PainelMedico: React.FC = () => { if (!medicoId) navigate("/login-medico"); }, [medicoId, navigate]); + // Carregar avatar ao montar componente + useEffect(() => { + if (user?.id) { + // Tenta carregar avatar existente (testa png, jpg, webp) + const extensions = ["png", "jpg", "webp"]; + const testAvatar = async () => { + for (const ext of extensions) { + try { + const url = avatarService.getPublicUrl({ + userId: user.id, + ext: ext as "jpg" | "png" | "webp" + }); + const response = await fetch(url, { method: "HEAD" }); + if (response.ok) { + setAvatarUrl(url); + console.log(`[PainelMedico] Avatar encontrado: ${url}`); + break; + } + } catch (error) { + // Continua testando próxima extensão + } + } + }; + testAvatar(); + } + }, [user?.id]); + const fetchConsultas = useCallback(async () => { setLoading(true); try { diff --git a/MEDICONNECT 2/temp_token.txt b/MEDICONNECT 2/temp_token.txt deleted file mode 100644 index bf38a8eac..000000000 Binary files a/MEDICONNECT 2/temp_token.txt and /dev/null differ