import { useState, useEffect } from "react"; import { checkUserLevelMenuAccess } from "@/service/user-level-menu-accesses"; import { getCookie } from "cookies-next"; interface UseMenuAccessResult { hasAccess: boolean; loading: boolean; error: Error | null; } /** * Hook untuk mengecek apakah user level memiliki akses ke menu tertentu * @param menuId - ID menu yang ingin dicek * @returns {hasAccess, loading, error} */ export function useMenuAccess(menuId: number | null | undefined): UseMenuAccessResult { const [hasAccess, setHasAccess] = useState(false); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { if (!menuId) { setLoading(false); return; } const checkAccess = async () => { try { setLoading(true); setError(null); // Get user level from cookie or context // Assuming userLevelId is stored in cookie or context const userLevelId = getCookie("userLevelId"); if (!userLevelId) { setHasAccess(false); setLoading(false); return; } const response = await checkUserLevelMenuAccess(Number(userLevelId), menuId); if (response?.data?.data?.has_access) { setHasAccess(true); } else { setHasAccess(false); } } catch (err) { setError(err instanceof Error ? err : new Error("Failed to check menu access")); setHasAccess(false); } finally { setLoading(false); } }; checkAccess(); }, [menuId]); return { hasAccess, loading, error }; }