import Styles from "@/constants/Styles"; import { apiDeleteLinkProject, apiGetProjectOne } from "@/lib/api"; import { setUpdateProject } from "@/lib/projectUpdate"; import { useAuthSession } from "@/providers/AuthProvider"; import { useTheme } from "@/providers/ThemeProvider"; import { Ionicons } from "@expo/vector-icons"; import { useLocalSearchParams } from "expo-router"; import { useEffect, useState } from "react"; import { View } from "react-native"; import Toast from "react-native-toast-message"; import { useDispatch, useSelector } from "react-redux"; import ModalConfirmation from "../ModalConfirmation"; import DrawerBottom from "../drawerBottom"; import MenuItemRow from "../menuItemRow"; import Text from "../Text"; import ItemSectionLink from "./itemSectionLink"; type Props = { id: string link: string } export default function SectionLink({ status, member, refreshing }: { status: number | undefined, member: boolean, refreshing?: boolean }) { const { colors } = useTheme(); const entityUser = useSelector((state: any) => state.user) const [isModal, setModal] = useState(false) const { token, decryptToken } = useAuthSession(); const { id } = useLocalSearchParams<{ id: string }>(); const [data, setData] = useState([]); const update = useSelector((state: any) => state.projectUpdate) const dispatch = useDispatch() const [selectLink, setSelectLink] = useState(null) const [showDeleteModal, setShowDeleteModal] = useState(false) async function handleLoad() { try { const hasil = await decryptToken(String(token?.current)); const response = await apiGetProjectOne({ user: hasil, cat: "link", id: id, }); setData(response.data); } catch (error) { console.error(error); } } useEffect(() => { handleLoad(); }, [update.link]); useEffect(() => { if (refreshing) handleLoad(); }, [refreshing]); async function handleDelete() { try { const hasil = await decryptToken(String(token?.current)); const response = await apiDeleteLinkProject({ user: hasil, idLink: String(selectLink?.id) }, String(id)); if (response.success) { Toast.show({ type: 'small', text1: 'Berhasil menghapus link', }) dispatch(setUpdateProject({ ...update, link: !update.link })) } else { Toast.show({ type: 'small', text1: response.message, }) } } catch (error : any ) { console.error(error); const message = error?.response?.data?.message || "Gagal menghapus link" Toast.show({ type: 'small', text1: message }) } finally { setModal(false) } } return ( <> { data.length > 0 && <> Link { data.map((item, index) => { const canDelete = member || (entityUser.role !== "user" && entityUser.role !== "coadmin") return ( { setSelectLink(item); setModal(true) }} /> ) }) } } title="Hapus Link" onPress={() => { setModal(false) setTimeout(() => setShowDeleteModal(true), 600) }} /> { setShowDeleteModal(false) handleDelete() }} onCancel={() => setShowDeleteModal(false)} confirmText="Hapus" cancelText="Batal" /> } ) }