import { useState, useEffect } from "react"
import { useNavigate } from "react-router-dom"

export function requireAuthSync({ key = "username", redirectTo = "/login", replace = true } = {}) {
  const value = localStorage.getItem(key)
  if (!value) {
    if (replace) window.location.replace(redirectTo)
    else window.location.assign(redirectTo)
    return false
  }
  return true
}

// Default hook: ad vissza egy [value, setValue] párt, szinkronizálja localStorage-t és átirányít, ha nincs érték
export default function useRequireAuth({ key = "username", redirectTo = "/login" } = {}) {
  const navigate = useNavigate()
  const [value, setValue] = useState(() => {
    try {
      return localStorage.getItem(key)
    } catch {
      return null
    }
  })

  // Ha nincs érték, átirányítjuk (komponens mount-oláskor)
  useEffect(() => {
    if (!value) {
      navigate(redirectTo)
    }
  }, [navigate, value, redirectTo])

  // Szinkronizáljuk a localStorage-t amikor a state változik
  useEffect(() => {
    try {
      if (value == null) localStorage.removeItem(key)
      else localStorage.setItem(key, value)
    } catch {
      // fail silently
    }
  }, [key, value])

  return [value, setValue]
}
