diff --git a/src/app/api/position/[id]/route.ts b/src/app/api/position/[id]/route.ts index 5d0d165..f469d63 100644 --- a/src/app/api/position/[id]/route.ts +++ b/src/app/api/position/[id]/route.ts @@ -120,7 +120,6 @@ export async function PUT(request: Request, context: { params: { id: string } }) }, data: { name: data.name, - // idGroup: data.idGroup, }, }); diff --git a/src/app/api/position/route.ts b/src/app/api/position/route.ts index 9112a5f..be5acd7 100644 --- a/src/app/api/position/route.ts +++ b/src/app/api/position/route.ts @@ -113,6 +113,7 @@ export async function POST(request: Request) { select: { id: true, name: true, + idGroup: true }, }); diff --git a/src/module/_global/components/wrap_layout.tsx b/src/module/_global/components/wrap_layout.tsx index efead1c..6d7869b 100644 --- a/src/module/_global/components/wrap_layout.tsx +++ b/src/module/_global/components/wrap_layout.tsx @@ -53,15 +53,6 @@ export default function WrapLayout({ children, role, theme, user }: { children: onClose={() => { '' }} /> } - - {/* { - '' - } - } - title='UPDATE' - /> */} {children} ); diff --git a/src/module/position/ui/drawer_detail_position.tsx b/src/module/position/ui/drawer_detail_position.tsx index 7ed430e..d81ad4e 100644 --- a/src/module/position/ui/drawer_detail_position.tsx +++ b/src/module/position/ui/drawer_detail_position.tsx @@ -1,4 +1,4 @@ -import { LayoutDrawer, TEMA, WARNA } from "@/module/_global" +import { keyWibu, LayoutDrawer, TEMA, WARNA } from "@/module/_global" import LayoutModal from "@/module/_global/layout/layout_modal" import { funGetAllGroup, IDataGroup } from "@/module/group" import { Box, Stack, SimpleGrid, Flex, Text, Select, TextInput, Button, Skeleton } from "@mantine/core" @@ -10,6 +10,7 @@ import { funEditPosition, funEditStatusPosition, funGetOnePosition } from "../li import { IDataPosition } from "../lib/type_position" import { useHookstate } from "@hookstate/core" import { globalRefreshPosition } from "../lib/val_posisition" +import { useWibuRealtime } from "wibu-realtime" export default function DrawerDetailPosition({ onUpdated, id, isActive }: { onUpdated: (val: boolean) => void, id: string, isActive: boolean; @@ -29,6 +30,10 @@ export default function DrawerDetailPosition({ onUpdated, id, isActive }: { const [touched, setTouched] = useState({ name: false, }); + const [dataRealTime, setDataRealtime] = useWibuRealtime({ + WIBU_REALTIME_TOKEN: keyWibu, + project: "sdm" + }) function onCLose() { onUpdated(true) @@ -78,6 +83,10 @@ export default function DrawerDetailPosition({ onUpdated, id, isActive }: { if (res.success) { toast.success(res.message); + setDataRealtime([{ + category: "data-position", + group: data.idGroup, + }]) refresh.set(!refresh.get()) onUpdated(true); onCLose(); @@ -122,6 +131,10 @@ export default function DrawerDetailPosition({ onUpdated, id, isActive }: { const res = await funEditStatusPosition(id, { isActive: isActive }) if (res.success) { toast.success(res.message); + setDataRealtime([{ + category: "data-position", + group: data.idGroup, + }]) refresh.set(!refresh.get()) onUpdated(true); } else { diff --git a/src/module/position/ui/drawer_list_position.tsx b/src/module/position/ui/drawer_list_position.tsx index 83d8ed2..78a647b 100644 --- a/src/module/position/ui/drawer_list_position.tsx +++ b/src/module/position/ui/drawer_list_position.tsx @@ -1,4 +1,4 @@ -import { WARNA, LayoutDrawer, globalRole, TEMA } from "@/module/_global"; +import { WARNA, LayoutDrawer, globalRole, TEMA, keyWibu } from "@/module/_global"; import { funGetAllGroup, IDataGroup } from "@/module/group"; import { Box, Stack, SimpleGrid, Flex, TextInput, Button, Text, Select } from "@mantine/core"; import { useShallowEffect } from "@mantine/hooks"; @@ -10,6 +10,7 @@ import { RiFilter2Line } from "react-icons/ri"; import { funCreatePosition } from "../lib/api_position"; import { useHookstate } from "@hookstate/core"; import { globalRefreshPosition } from "../lib/val_posisition"; +import { useWibuRealtime } from "wibu-realtime"; export default function DrawerListPosition({ onCreated }: { onCreated: (val: boolean) => void }) { @@ -26,11 +27,14 @@ export default function DrawerListPosition({ onCreated }: { onCreated: (val: boo name: false, idGroup: false }); - const [listData, setListData] = useState({ name: "", idGroup: "", }) + const [dataRealTime, setDataRealtime] = useWibuRealtime({ + WIBU_REALTIME_TOKEN: keyWibu, + project: "sdm" + }) async function getAllGroup() { try { @@ -60,10 +64,14 @@ export default function DrawerListPosition({ onCreated }: { onCreated: (val: boo }) if (res.success) { - setOpenDrawerGroup(false) toast.success(res.message) + setDataRealtime([{ + category: "data-position", + group: res.positions.idGroup, + }]) refresh.set(!refresh.get()) onCreated(true) + setOpenDrawerGroup(false) } else { toast.error(res.message) setOpenDrawerGroup(false) diff --git a/src/module/position/ui/list_position_active.tsx b/src/module/position/ui/list_position_active.tsx index ef7bd3e..c1c049a 100644 --- a/src/module/position/ui/list_position_active.tsx +++ b/src/module/position/ui/list_position_active.tsx @@ -1,17 +1,17 @@ -import { globalRole, LayoutDrawer, SkeletonSingle, TEMA, WARNA } from "@/module/_global"; +import { globalRole, keyWibu, LayoutDrawer, TEMA } from "@/module/_global"; +import { useHookstate } from "@hookstate/core"; import { ActionIcon, Box, Flex, Grid, Group, Skeleton, Text, TextInput } from "@mantine/core"; -import React, { useState } from "react"; -import { FaUserTie } from "react-icons/fa6"; -import { HiMagnifyingGlass } from "react-icons/hi2"; -import DrawerDetailPosition from "./drawer_detail_position"; -import toast from "react-hot-toast"; -import _ from "lodash"; import { useShallowEffect } from "@mantine/hooks"; import { useSearchParams } from "next/navigation"; +import { useState } from "react"; +import toast from "react-hot-toast"; +import { FaUserTie } from "react-icons/fa6"; +import { HiMagnifyingGlass } from "react-icons/hi2"; +import { useWibuRealtime } from "wibu-realtime"; import { funGetAllPosition } from "../lib/api_position"; import { IDataPosition } from "../lib/type_position"; -import { useHookstate } from "@hookstate/core"; import { globalRefreshPosition } from "../lib/val_posisition"; +import DrawerDetailPosition from "./drawer_detail_position"; export default function ListPositionActive() { @@ -29,10 +29,14 @@ export default function ListPositionActive() { const roleLogin = useHookstate(globalRole) const [nameGroup, setNameGroup] = useState('') const tema = useHookstate(TEMA) + const [dataRealTime, setDataRealtime] = useWibuRealtime({ + WIBU_REALTIME_TOKEN: keyWibu, + project: "sdm" + }) - async function getAllPosition() { + async function getAllPosition(loading: boolean) { try { - setLoading(true) + setLoading(loading) const res = await funGetAllPosition('?active=' + status + '&group=' + group + '&search=' + searchQuery) setDataPosition(res.data); setNameGroup(res.filter.name) @@ -46,9 +50,15 @@ export default function ListPositionActive() { } useShallowEffect(() => { - getAllPosition(); + getAllPosition(true); }, [status, group, searchQuery, refresh.get()]) + useShallowEffect(() => { + if (dataRealTime && dataRealTime.some((i: any) => i.category == 'data-position' && i.group == group)) { + getAllPosition(false) + } + }, [dataRealTime]) + return (