Merge pull request #38 from m1guelmcf/fix/doctor-dashboard-loop
fix: loop infinito no dashboard medico causado por dependencia instavel
This commit is contained in:
commit
cdac2dc69d
@ -21,7 +21,7 @@ import {
|
|||||||
} from "@/components/ui/alert-dialog";
|
} from "@/components/ui/alert-dialog";
|
||||||
|
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { useEffect, useState } from "react";
|
import { useEffect, useState, useMemo } from "react"; // Adicionado useMemo
|
||||||
import { toast } from "@/hooks/use-toast";
|
import { toast } from "@/hooks/use-toast";
|
||||||
|
|
||||||
import { useAuthLayout } from "@/hooks/useAuthLayout";
|
import { useAuthLayout } from "@/hooks/useAuthLayout";
|
||||||
@ -38,7 +38,6 @@ import Sidebar from "@/components/Sidebar";
|
|||||||
import WeeklyScheduleCard from "@/components/ui/WeeklyScheduleCard";
|
import WeeklyScheduleCard from "@/components/ui/WeeklyScheduleCard";
|
||||||
|
|
||||||
|
|
||||||
// --- TIPOS ADICIONADOS PARA CORREÇÃO ---
|
|
||||||
type Appointment = {
|
type Appointment = {
|
||||||
id: string;
|
id: string;
|
||||||
doctor_id: string;
|
doctor_id: string;
|
||||||
@ -50,7 +49,6 @@ type Appointment = {
|
|||||||
type EnrichedAppointment = Appointment & {
|
type EnrichedAppointment = Appointment & {
|
||||||
patientName: string;
|
patientName: string;
|
||||||
};
|
};
|
||||||
// --- FIM DOS TIPOS ADICIONADOS ---
|
|
||||||
|
|
||||||
type Availability = {
|
type Availability = {
|
||||||
id: string;
|
id: string;
|
||||||
@ -142,14 +140,17 @@ interface Exception {
|
|||||||
created_by: string;
|
created_by: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Minimal type for Patient, adjust if more fields are needed
|
|
||||||
type Patient = {
|
type Patient = {
|
||||||
id: string;
|
id: string;
|
||||||
full_name: string;
|
full_name: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
export default function PatientDashboard() {
|
export default function DoctorDashboard() {
|
||||||
const { user } = useAuthLayout({ requiredRole: ['medico'] });
|
// --- CORREÇÃO CRÍTICA DO LOOP ---
|
||||||
|
// Usamos useMemo para garantir que o array de roles seja uma referência estável
|
||||||
|
// e não dispare o useEffect do useAuthLayout infinitamente.
|
||||||
|
const requiredRoles = useMemo(() => ['medico'], []);
|
||||||
|
const { user } = useAuthLayout({ requiredRole: requiredRoles });
|
||||||
|
|
||||||
const [loggedDoctor, setLoggedDoctor] = useState<Doctor | null>(null);
|
const [loggedDoctor, setLoggedDoctor] = useState<Doctor | null>(null);
|
||||||
const [userData, setUserData] = useState<UserData>();
|
const [userData, setUserData] = useState<UserData>();
|
||||||
@ -218,7 +219,7 @@ export default function PatientDashboard() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
fetchData();
|
fetchData();
|
||||||
}, [user]);
|
}, [user?.id]);
|
||||||
|
|
||||||
function findDoctorById(id: string, doctors: Doctor[]) {
|
function findDoctorById(id: string, doctors: Doctor[]) {
|
||||||
return doctors.find((doctor) => doctor.user_id === id);
|
return doctors.find((doctor) => doctor.user_id === id);
|
||||||
@ -325,7 +326,7 @@ export default function PatientDashboard() {
|
|||||||
<CardDescription>Acesse rapidamente as principais funcionalidades</CardDescription>
|
<CardDescription>Acesse rapidamente as principais funcionalidades</CardDescription>
|
||||||
</CardHeader>
|
</CardHeader>
|
||||||
<CardContent className="space-y-4">
|
<CardContent className="space-y-4">
|
||||||
<Link href="/doctor/medicos/consultas">
|
<Link href="/doctor/consultas">
|
||||||
<Button className="w-full justify-start">
|
<Button className="w-full justify-start">
|
||||||
<Calendar className="mr-2 h-4 w-4" />
|
<Calendar className="mr-2 h-4 w-4" />
|
||||||
Ver Minhas Consultas
|
Ver Minhas Consultas
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user