/* eslint-disable react-hooks/exhaustive-deps */ // src/app/admin/user&role/menu-access/page.tsx 'use client' import { navBar } from '@/app/admin/_com/list_PageAdmin' import { Button, Checkbox, Group, Paper, Select, Stack, Text, Title } from '@mantine/core' import { useEffect, useState } from 'react' import { useProxy } from 'valtio/utils' import user from '../../_state/user/user-state' import { useShallowEffect } from '@mantine/hooks' // ✅ Helper: ekstrak semua menu ID dari struktur navBar const extractMenuIds = (navSections: typeof navBar) => { return navSections.map(section => ({ value: section.id, // "Landing Page", "Kesehatan", dll label: section.name // "Landing Page", "Kesehatan", dll })); }; function MenuAccessPage() { const stateUser = useProxy(user.userState) const [selectedUserId, setSelectedUserId] = useState(null) const [userMenus, setUserMenus] = useState([]) useShallowEffect(() => { stateUser.findMany.load() }, []) // ✅ Gunakan helper untuk ekstrak menu const availableMenus = extractMenuIds(navBar); // Ambil data menu akses user const loadUserMenuAccess = async () => { if (!selectedUserId) return try { // ✅ Perbaiki URL: gunakan query string bukan dynamic route const res = await fetch(`/api/admin/user-menu-access?userId=${selectedUserId}`) const data = await res.json() if (data.success) { setUserMenus(data.menuIds || []) } } catch (error) { console.error('Gagal memuat menu akses:', error) } } useEffect(() => { if (selectedUserId) { loadUserMenuAccess() } }, [selectedUserId]) const handleToggleMenu = (menuId: string) => { setUserMenus(prev => prev.includes(menuId) ? prev.filter(id => id !== menuId) : [...prev, menuId] ) } const handleSave = async () => { if (!selectedUserId) return try { const res = await fetch('/api/admin/user-menu-access', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ userId: selectedUserId, menuIds: userMenus }), }) const data = await res.json() if (data.success) { alert('Menu akses berhasil disimpan') } } catch (error) { console.error('Gagal menyimpan menu akses:', error) alert('Terjadi kesalahan') } } return ( Tampilan Menu Pilih User: