"use client"

import { useEffect, useState, useCallback } from "react"
import { useRouter } from "next/navigation"
import { hasValidAccessToken } from "@/src/lib/api/session"



export function useAuthGuard(options: {
  mode: "requireAuth" | "redirectIfAuth"
  redirectTo: string
}) {
  const router = useRouter()
  const [checking, setChecking] = useState(true)

  const runCheck = useCallback(() => {
    const isAuth = hasValidAccessToken()

    if (options.mode === "requireAuth" && !isAuth) {
      router.replace(options.redirectTo)
      return
    }

    if (options.mode === "redirectIfAuth" && isAuth) {
      router.replace(options.redirectTo)
      return
    }

    setChecking(false)
  }, [router, options.mode, options.redirectTo])

  useEffect(() => {
    // 1) check au montage
    runCheck()

    // 2) check quand on revient via bouton "Back" (bfcache)
    const onPageShow = () => runCheck()

    // 3) check quand l’onglet redevient visible
    const onVisibility = () => {
      if (document.visibilityState === "visible") runCheck()
    }

    window.addEventListener("pageshow", onPageShow)
    document.addEventListener("visibilitychange", onVisibility)

    return () => {
      window.removeEventListener("pageshow", onPageShow)
      document.removeEventListener("visibilitychange", onVisibility)
    }
  }, [runCheck])

  return { checking }
}
export type TenantLite = {
    id: number
    name: string
    slug: string
    status: string
}
