"use client" import { globalRole, LayoutDrawer, LayoutNavbarNew, SkeletonList, TEMA } from '@/module/_global'; import LayoutModal from '@/module/_global/layout/layout_modal'; import { useHookstate } from '@hookstate/core'; import { ActionIcon, Avatar, Box, Divider, Grid, Group, Text } from '@mantine/core'; import { useMediaQuery, useShallowEffect } from '@mantine/hooks'; import { useParams, useRouter } from 'next/navigation'; import { useState } from 'react'; import toast from 'react-hot-toast'; import { AiOutlineUserAdd } from 'react-icons/ai'; import { FaUserTie } from 'react-icons/fa6'; import { IoIosCloseCircle } from 'react-icons/io'; import { funDelMemberDiscussionGeneral, funGetOneDiscussionGeneral } from '../lib/api_discussion_general'; import { IFormMemberDisscussionGeneral } from '../lib/type_discussion_general'; export default function MemberDiscussionGeneral() { const router = useRouter() const [openDrawer, setDrawer] = useState(false) const param = useParams<{ id: string }>() const [member, setMember] = useState([]) const [loading, setLoading] = useState(true) const [valChooseMemberId, setChooseMemberId] = useState("") const [valChooseMemberName, setChooseMemberName] = useState("") const [isOpenModal, setOpenModal] = useState(false) const roleLogin = useHookstate(globalRole) const isMobile = useMediaQuery('(max-width: 455px)') const isMobile2 = useMediaQuery("(max-width: 438px)") const tema = useHookstate(TEMA) const [loadingDelete, setLoadingDelete] = useState(false) async function getOneData(loading: boolean) { try { setLoading(loading) const res = await funGetOneDiscussionGeneral(param.id, "?cat=anggota"); if (res.success) { setMember(res.data) } else { toast.error(res.message); } } catch (error) { console.error(error); toast.error("Gagal mendapatkan data, coba lagi nanti"); } finally { setLoading(false) } } useShallowEffect(() => { getOneData(true); }, [param.id]) async function onClickMember(id: string, name: string) { setChooseMemberId(id) setChooseMemberName(name) setDrawer(true) } async function deleteMember() { try { setLoadingDelete(true) const res = await funDelMemberDiscussionGeneral(param.id, { idUser: valChooseMemberId }) if (res.success) { toast.success(res.message) setDrawer(false) getOneData(false) } else { toast.error(res.message) } } catch (error) { console.error(error); toast.error("Gagal mendapatkan divisi, coba lagi nanti"); } finally { setLoadingDelete(false) setOpenModal(false) } } return ( } /> {member.length} Anggota {!loading ? roleLogin.get() != "user" && roleLogin.get() != "coadmin" ? router.push('/discussion/' + param.id + '/add-member/')}> Tambah Anggota : <> : <> } {loading ? Array(6) .fill(null) .map((_, i) => ( )) : member.map((v, i) => { return ( { onClickMember(v.idUser, v.name) }} > {v.name} ); }) } setDrawer(false)} title={valChooseMemberName}> { router.push('/member/' + valChooseMemberId) }} > Lihat Profil { (roleLogin.get() != "user" && roleLogin.get() != "coadmin") && setOpenModal(true)}> Keluarkan dari diskusi } setOpenModal(false)} description="Apakah Anda yakin ingin mengeluarkan anggota?" onYes={(val) => { if (!val) { setOpenModal(false) } else { deleteMember() } }} /> ); }