import AlertKonfirmasi from "@/components/alertKonfirmasi"; import BorderBottomItem from "@/components/borderBottomItem"; import ButtonBackHeader from "@/components/buttonBackHeader"; import DrawerBottom from "@/components/drawerBottom"; import ImageUser from "@/components/imageNew"; import MenuItemRow from "@/components/menuItemRow"; import SkeletonTwoItem from "@/components/skeletonTwoItem"; import Text from '@/components/Text'; import { ColorsStatus } from "@/constants/ColorsStatus"; import { ConstEnv } from "@/constants/ConstEnv"; import Styles from "@/constants/Styles"; import { apiDeleteMemberDiscussionGeneral, apiGetDiscussionGeneralOne } from "@/lib/api"; import { useAuthSession } from "@/providers/AuthProvider"; import { Feather, MaterialCommunityIcons } from "@expo/vector-icons"; import { router, Stack, useLocalSearchParams } from "expo-router"; import { useEffect, useState } from "react"; import { SafeAreaView, ScrollView, View } from "react-native"; import Toast from "react-native-toast-message"; import { useSelector } from "react-redux"; type Props = { idUser: string, name: string, img: string } export default function MemberDiscussionDetail() { const { token, decryptToken } = useAuthSession() const entityUser = useSelector((state: any) => state.user) const { id } = useLocalSearchParams<{ id: string }>() const [data, setData] = useState([]) const [isModal, setModal] = useState(false) const [chooseUser, setChooseUser] = useState({ idUser: '', name: '', img: '' }) const update = useSelector((state: any) => state.discussionGeneralDetailUpdate) const [loading, setLoading] = useState(true) const arrSkeleton = Array.from({ length: 5 }, (_, index) => index) async function handleLoad(loading: boolean) { try { setLoading(loading) const hasil = await decryptToken(String(token?.current)) const response = await apiGetDiscussionGeneralOne({ id: id, user: hasil, cat: 'anggota' }) setData(response.data) } catch (error) { console.error(error) } finally { setLoading(false) } } useEffect(() => { handleLoad(false) }, [update]); useEffect(() => { handleLoad(true) }, []); async function handleDeleteUser() { try { const hasil = await decryptToken(String(token?.current)) await apiDeleteMemberDiscussionGeneral({ user: hasil, idUser: chooseUser.idUser }, id) Toast.show({ type: 'small', text1: 'Berhasil mengeluarkan anggota dari diskusi', }) handleLoad(false) } catch (error) { console.error(error) } finally { setModal(false) } } return ( { router.back() }} />, headerTitle: 'Anggota Diskusi', headerTitleAlign: 'center', }} /> {data.length} Anggota { entityUser.role != "user" && entityUser.role != "coadmin" && { router.push(`/discussion/add-member/${id}`) }} borderType="none" icon={ } title="Tambah Anggota" /> } { loading ? arrSkeleton.map((item, index) => { return ( ) }) : data.map((item, index) => { return ( } title={item.name} onPress={() => { setChooseUser(item) setModal(true) }} /> ) }) } } title="Lihat Profil" onPress={() => { setModal(false) router.push(`/member/${chooseUser.idUser}`) }} /> } title="Keluarkan" onPress={() => { setModal(false) AlertKonfirmasi({ title: 'Konfirmasi', desc: 'Apakah Anda yakin ingin mengeluarkan anggota?', onPress: () => { handleDeleteUser() } }) }} /> ) }