"use client"; import { gs_admin_ntf } from "@/app/lib/global_state"; import { ActionIcon, AppShell, Divider, Drawer, Grid, Group, Indicator, Navbar, ScrollArea, Stack, Text, Title, } from "@mantine/core"; import { useMediaQuery, useShallowEffect } from "@mantine/hooks"; import { IconBell } from "@tabler/icons-react"; import { useAtom } from "jotai"; import { useState } from "react"; import { AccentColor } from "../_global/color"; import { MODEL_USER } from "../home/model/interface"; import { MODEL_NOTIFIKASI } from "../notifikasi/model/interface"; import { Admin_ComponentButtonUserCircle, Admin_ComponentSkeletonNavbar, Admin_UiNavbar, } from "./_admin_global"; import { gs_admin_navbar_menu, gs_admin_navbar_subMenu, } from "./_admin_global/new_global_state"; import adminNotifikasi_getByUserId from "./notifikasi/fun/get/get_notifikasi_by_user_id"; import { ComponentAdmin_UIDrawerNotifikasi } from "./notifikasi/ui_drawer_notifikasi"; export function Admin_NewLayout({ children, user, countNotifikasi, listNotifikasi, }: { children: React.ReactNode; user: MODEL_USER; countNotifikasi: number; listNotifikasi: MODEL_NOTIFIKASI[]; }) { const matches = useMediaQuery("(min-width: 1024px)"); const [dataUser, setDataUser] = useState(user); const userRoleId = dataUser.masterUserRoleId; const [opened, setOpened] = useState(false); const [activeId, setActiveId] = useAtom(gs_admin_navbar_menu); const [activeChildId, setActiveChildId] = useAtom(gs_admin_navbar_subMenu); const [dataNotifikasi, setDataNotifikasi] = useState(listNotifikasi); // Notifikasi const [isDrawerNotifikasi, setDrawerNotifikasi] = useState(false); const [countNtf, setCountNtf] = useState(countNotifikasi); const [newAdminNtf, setNewAdminNtf] = useAtom(gs_admin_ntf); useShallowEffect(() => { setCountNtf((e) => e + newAdminNtf), setNewAdminNtf(0); }, [newAdminNtf, setNewAdminNtf]); async function onLoadListNotifikasi() { const loadNotifikasi = await adminNotifikasi_getByUserId(); setDataNotifikasi(loadNotifikasi as []); setDrawerNotifikasi(true); } return ( <> {/* Notifikasi */} Notifikasi } opened={isDrawerNotifikasi} onClose={() => setDrawerNotifikasi(false)} position="right" size={"xs"} > { setActiveId(val.id); setActiveChildId(val.childId); }} onToggleNavbar={(val: any) => { // console.log(val, "toggle navbar"); // setDrawerNotifikasi(val); }} onLoadCountNotif={(val: any) => { setCountNtf(val); }} /> ); }