diff --git a/src/module/discussion/ui/detail_discussion.tsx b/src/module/discussion/ui/detail_discussion.tsx index 6e6cadd..5fd2c2d 100644 --- a/src/module/discussion/ui/detail_discussion.tsx +++ b/src/module/discussion/ui/detail_discussion.tsx @@ -1,21 +1,22 @@ "use client" +import { globalRole, keyWibu, LayoutDrawer, LayoutNavbarNew, TEMA } from "@/module/_global"; +import { globalIsAdminDivision } from "@/module/division_new"; +import { useHookstate } from "@hookstate/core"; import { ActionIcon, Avatar, Badge, Box, Center, Divider, Flex, Grid, Group, rem, Skeleton, Spoiler, Text, TextInput } from "@mantine/core"; -import { globalRole, LayoutDrawer, LayoutNavbarNew, TEMA } from "@/module/_global"; -import { GrChatOption } from "react-icons/gr"; -import { LuSendHorizonal } from "react-icons/lu"; -import { useState } from "react"; -import { funCreateComent, funGetDiscussionById } from "../lib/api_discussion"; -import { useShallowEffect } from "@mantine/hooks"; -import { IDetailDiscussion } from "../lib/type_discussion"; +import { useMediaQuery, useShallowEffect } from "@mantine/hooks"; import moment from "moment"; import "moment/locale/id"; import { useParams, useRouter } from "next/navigation"; +import { useState } from "react"; import toast from "react-hot-toast"; -import { useHookstate } from "@hookstate/core"; -import { globalRefreshDiscussion } from "../lib/val_discussion"; +import { GrChatOption } from "react-icons/gr"; import { HiMenu } from "react-icons/hi"; +import { LuSendHorizonal } from "react-icons/lu"; +import { useWibuRealtime } from "wibu-realtime"; +import { funCreateComent, funGetDiscussionById } from "../lib/api_discussion"; +import { IDetailDiscussion } from "../lib/type_discussion"; +import { globalRefreshDiscussion } from "../lib/val_discussion"; import DrawerDetailDiscussion from "./drawer_detail_discussion"; -import {globalIsAdminDivision } from "@/module/division_new"; export default function DetailDiscussion({ id, idDivision }: { id: string, idDivision: string }) { const [isData, setData] = useState() @@ -28,10 +29,16 @@ export default function DetailDiscussion({ id, idDivision }: { id: string, idDiv const [isCreator, setCreator] = useState(false) const adminLogin = useHookstate(globalIsAdminDivision) const tema = useHookstate(TEMA) + const isMobile = useMediaQuery('(max-width: 369px)'); + const isMobile2 = useMediaQuery("(max-width: 438px)"); + const [dataRealTime, setDataRealtime] = useWibuRealtime({ + WIBU_REALTIME_TOKEN: keyWibu, + project: "sdm" + }) - const getData = async () => { + const getData = async (loading: boolean) => { try { - setIsLoad(true) + setIsLoad(loading) const response = await funGetDiscussionById(id) setData(response.data) setIsLoad(false) @@ -44,9 +51,15 @@ export default function DetailDiscussion({ id, idDivision }: { id: string, idDiv } useShallowEffect(() => { - getData() + getData(true) }, [refresh.get()]) + useShallowEffect(() => { + if (dataRealTime && dataRealTime.some((i: any) => i.category == 'discussion-comment' && i.id == id)) { + getData(false) + } + }, [dataRealTime]) + async function reloadData() { try { const response = await funGetDiscussionById(id) @@ -65,6 +78,10 @@ export default function DetailDiscussion({ id, idDivision }: { id: string, idDiv if (response.success) { setIsComent("") + setDataRealtime([{ + category: "discussion-comment", + id: id, + }]) reloadData() } else { toast.error(response.message) @@ -125,24 +142,22 @@ export default function DetailDiscussion({ id, idDivision }: { id: string, idDiv <> {isData?.totalComments == 0 ? - - {isData?.username ? - - - - - {isData?.username} - - {isData?.status === 1 ? "BUKA" : "TUTUP"} - - : "" - } - {isData?.createdAt} - + + + + + + + {isData?.username} + {isData?.status === 1 ? "BUKA" : "TUTUP"} + + + + + {isData?.createdAt} + + + : - - - + + + - - - - {isData?.username} - + + + {isData?.username} {isData?.status === 1 ? "BUKA" : "TUTUP"} - - {isData?.createdAt} + + + {isData?.createdAt} + @@ -245,17 +254,17 @@ export default function DetailDiscussion({ id, idDivision }: { id: string, idDiv return ( - + - + - + {v.username} - + {moment(v.createdAt).format("ll")}