diff --git a/src/app/api/discussion/route.ts b/src/app/api/discussion/route.ts index ec3355f..20546dc 100644 --- a/src/app/api/discussion/route.ts +++ b/src/app/api/discussion/route.ts @@ -170,6 +170,25 @@ export async function POST(request: Request) { }) } + if (userRoleLogin != "cosupadmin") { + const ketuaGrup = await prisma.user.findFirst({ + where: { + isActive: true, + idUserRole: "cosupadmin", + idGroup: user.idGroup + } + }) + + dataNotif.push({ + idUserTo: ketuaGrup?.id, + idUserFrom: userId, + category: 'division/' + idDivision + '/discussion', + idContent: data.id, + title: 'Diskusi Baru', + desc: 'Terdapat diskusi baru. Silahkan periksa detailnya.' + }) + } + const insertNotif = await prisma.notifications.createMany({ data: dataNotif }) diff --git a/src/module/discussion/ui/drawer_detail_discussion.tsx b/src/module/discussion/ui/drawer_detail_discussion.tsx index 5474478..d2fb230 100644 --- a/src/module/discussion/ui/drawer_detail_discussion.tsx +++ b/src/module/discussion/ui/drawer_detail_discussion.tsx @@ -59,11 +59,16 @@ export default function DrawerDetailDiscussion({ onSuccess, id, status, idDivisi setLoadingDelete(true) const response = await funDeleteDiscussion(id) if (response.success) { - setDataRealtime([{ - category: "discussion-delete", - id: id, - user: response.user - }]) + setDataRealtime([ + { + category: "discussion-delete", + id: id, + user: response.user + }, + { + category: "division/" + param.id + "/discussion", + } + ]) toast.success(response.message) onSuccess(false) router.push(`/division/${param.id}/discussion`) diff --git a/src/module/discussion/ui/list_discussion.tsx b/src/module/discussion/ui/list_discussion.tsx index bdda9e4..c8fcac5 100644 --- a/src/module/discussion/ui/list_discussion.tsx +++ b/src/module/discussion/ui/list_discussion.tsx @@ -1,5 +1,5 @@ 'use client' -import { currentScroll, globalNotifPage, ReloadButtonTop, TEMA } from "@/module/_global"; +import { currentScroll, globalNotifPage, keyWibu, ReloadButtonTop, TEMA } from "@/module/_global"; import { useHookstate } from "@hookstate/core"; import { Avatar, Badge, Box, Divider, Flex, Grid, Group, Skeleton, Spoiler, Text, TextInput } from "@mantine/core"; import { useShallowEffect } from "@mantine/hooks"; @@ -9,6 +9,7 @@ import { useEffect, useState } from "react"; import toast from "react-hot-toast"; import { GrChatOption } from "react-icons/gr"; import { HiMagnifyingGlass } from "react-icons/hi2"; +import { useWibuRealtime } from "wibu-realtime"; import { funGetAllDiscussion } from "../lib/api_discussion"; import { IDataDiscussion } from "../lib/type_discussion"; @@ -24,6 +25,10 @@ export default function ListDiscussion({ id }: { id: string }) { const [isPage, setPage] = useState(1) const notifLoadPage = useHookstate(globalNotifPage) const [isRefresh, setRefresh] = useState(false) + const [dataRealTime, setDataRealtime] = useWibuRealtime({ + WIBU_REALTIME_TOKEN: keyWibu, + project: "sdm" + }) const getData = async (loading: boolean) => { try { @@ -83,6 +88,12 @@ export default function ListDiscussion({ id }: { id: string }) { } }, [notifLoadPage.get().load]) + useShallowEffect(() => { + if (dataRealTime && dataRealTime.some((i: any) => i.category == 'division/' + param.id + '/discussion')) { + setRefresh(true) + } + }, [dataRealTime]) + function onRefresh() { notifLoadPage.set({ category: '',