"use client";

import { useEffect, useState } from "react";
import { useAuthStore } from "@/store/auth";

/**
 * true une fois que le store a fini de relire la session depuis localStorage.
 * Indispensable avant de décider si l'utilisateur est connecté ou non,
 * sinon on redirige à tort avant que la session persistée ait été relue.
 *
 * Tout l'accès à l'API `persist` reste dans useEffect (jamais exécuté côté
 * serveur/prérendu), sinon `useAuthStore.persist` peut être indéfini pendant
 * le rendu SSR d'une page qui utilise ce hook.
 */
export function useAuthHydrated(): boolean {
  const [hydrated, setHydrated] = useState(false);

  useEffect(() => {
    if (useAuthStore.persist.hasHydrated()) {
      setHydrated(true);
      return;
    }
    return useAuthStore.persist.onFinishHydration(() => setHydrated(true));
  }, []);

  return hydrated;
}
