diff --git a/src/routes/_authenticated/attendance.tsx b/src/routes/_authenticated/attendance.tsx index 528c8cc..ba5f7b1 100644 --- a/src/routes/_authenticated/attendance.tsx +++ b/src/routes/_authenticated/attendance.tsx @@ -14,20 +14,22 @@ export const Route = createFileRoute("/_authenticated/attendance")({ }); function AttendancePage() { - const { user, roles } = useAuth(); + const { user, roles, loading } = useAuth(); const isAdmin = roles.includes("admin"); const qc = useQueryClient(); const [date, setDate] = useState(new Date().toISOString().slice(0, 10)); const [classId, setClassId] = useState(""); const { data: classes } = useQuery({ - queryKey: ["my-classes", user?.id], + // isAdmin is in the key so the query refetches once roles resolve; gated on + // !loading so it never runs with a not-yet-known (false) admin status. + queryKey: ["my-classes", user?.id, isAdmin], queryFn: async () => { let q = supabase.from("classes").select("id, name, teacher_id"); if (!isAdmin) q = q.eq("teacher_id", user!.id); return (await q.order("name")).data ?? []; }, - enabled: !!user, + enabled: !!user && !loading, }); const { data: students } = useQuery({