'use client' import { keyWibu, TEMA } from "@/module/_global" import LayoutModal from "@/module/_global/layout/layout_modal" import { Box, Group, Avatar, Textarea, Button, Grid, rem, Skeleton } from "@mantine/core" import { useParams, useRouter } from "next/navigation" import { useState } from "react" import toast from "react-hot-toast" import { funEditDiscussion, funGetDiscussionById } from "../lib/api_discussion" import { useShallowEffect } from "@mantine/hooks" import { funGetProfileByCookies } from "@/module/user/profile/lib/api_profile" import { useHookstate } from "@hookstate/core" import { useWibuRealtime } from "wibu-realtime" export default function FormEditDiscussion() { const [isValModal, setValModal] = useState(false) const [loadingModal, setLoadingModal] = useState(false) const router = useRouter() const param = useParams<{ id: string, detail: string }>() const [isDataOne, setDataOne] = useState("") const [loading, setLoading] = useState(true) const [img, setIMG] = useState() const tema = useHookstate(TEMA) const [touched, setTouched] = useState({ desc: false, }); const [dataRealTime, setDataRealtime] = useWibuRealtime({ WIBU_REALTIME_TOKEN: keyWibu, project: "sdm" }) async function fetchGetOneDiscussion() { try { setLoading(true) const response = await funGetDiscussionById(param.detail) setDataOne(response.data.desc) } catch (error) { console.error(error); toast.error("Gagal menampilkan discussion, coba lagi nanti"); } finally { setLoading(false) } } async function fetchEditDiscussion() { try { setLoadingModal(true) const response = await funEditDiscussion(param.detail, { desc: isDataOne }) if (response.success) { toast.success(response.message) setValModal(false) setDataRealtime([{ category: "discussion-detail", id: param.detail, }]) router.push(`/division/${param.id}/discussion/${param.detail}`) } else { toast.error(response.message) } } catch (error) { console.error(error); setValModal(false) toast.error("Gagal menambahkan diskusi, coba lagi nanti"); } finally { setValModal(false) setLoadingModal(false) } } async function getData() { try { setLoading(true) const res = await funGetProfileByCookies() setIMG(`https://wibu-storage.wibudev.com/api/files/${res.data.img}`) setLoading(false) } catch (error) { console.error(error); } finally { setLoading(false) } } useShallowEffect(() => { fetchGetOneDiscussion() getData() }, []) return ( {loading ? : } {loading ? Array(10) .fill(null) .map((_, i) => ( )) :