2025-10-20 21:49:35 -03:00

66 lines
1.9 KiB
TypeScript

// Caminho: app/(doctor)/layout.tsx
"use client";
import type React from "react";
import { useState, useEffect } from "react";
import { useRouter } from "next/navigation";
// Nossas importações centralizadas
import { usuariosApi } from "@/services/usuariosApi";
import DashboardLayout, { UserProfile } from "@/components/layout/DashboardLayout";
import { dashboardConfig } from "@/config/dashboard.config";
interface DoctorLayoutProps {
children: React.ReactNode;
}
export default function DoctorLayout({ children }: DoctorLayoutProps) {
const [userProfile, setUserProfile] = useState<UserProfile | null>(null);
const [isLoading, setIsLoading] = useState(true);
const router = useRouter();
useEffect(() => {
const checkAuthentication = async () => {
try {
// Busca o usuário logado
const userData = await usuariosApi.getCurrentUser();
// Pega a configuração específica do "doctor"
const config = dashboardConfig.doctor;
// Formata os dados para o perfil
setUserProfile(config.getUserProfile(userData));
} catch (error) {
// Se falhar, redireciona para o login
router.push("/login");
} finally {
setIsLoading(false);
}
};
checkAuthentication();
}, [router]);
// Enquanto verifica, mostra uma tela de carregamento
if (isLoading) {
return (
<div className="flex h-screen w-full items-center justify-center bg-background">
<p className="text-muted-foreground">Verificando autenticação...</p>
</div>
);
}
// Se não tiver perfil (redirect em andamento), não renderiza nada
if (!userProfile) {
return null;
}
// Pega os itens de menu da configuração
const menuItems = dashboardConfig.doctor.menuItems;
// Renderiza o layout genérico com as props corretas
return (
<DashboardLayout menuItems={menuItems} userProfile={userProfile}>
{children}
</DashboardLayout>
);
}