import { useState, useEffect } from "react" import HandleNavigate from "../utils/HandleNavigate/HandleNavigate" 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 } // New: non-redirecting check for auth status export function isAuthenticated(key = "username") { try { return !!localStorage.getItem(key) } catch { return false } } // Default hook: ad vissza egy [value, setValue] párt, szinkronizálja localStorage-t és opcionálisan átirányít, ha nincs érték export default function useRequireAuth({ key = "username", redirectTo = "/login", redirect = true } = {}) { const { goTo } = HandleNavigate() const [value, setValue] = useState(() => { try { return localStorage.getItem(key) } catch { return null } }) // Ha nincs érték és redirect engedélyezve van, átirányítjuk (komponens mount-oláskor) useEffect(() => { if (!value && redirect) { goTo(redirectTo) } }, [goTo, value, redirectTo, redirect]) // 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] }