'use client' import { ModalKonfirmasiHapus } from '@/app/admin/(dashboard)/_com/modalKonfirmasiHapus'; import stateGallery from '@/app/admin/(dashboard)/_state/desa/gallery'; import colors from '@/con/colors'; import { Box, Button, Group, Paper, Skeleton, Stack, Text } from '@mantine/core'; import { useShallowEffect } from '@mantine/hooks'; import { IconArrowBack, IconEdit, IconTrash } from '@tabler/icons-react'; import { useParams, useRouter } from 'next/navigation'; import { useState } from 'react'; import { useProxy } from 'valtio/utils'; function DetailVideo() { const videoState = useProxy(stateGallery.video); const [modalHapus, setModalHapus] = useState(false); const [selectedId, setSelectedId] = useState(null); const params = useParams(); const router = useRouter(); useShallowEffect(() => { videoState.findUnique.load(params?.id as string); }, []); const handleHapus = () => { if (selectedId) { videoState.delete.byId(selectedId); setModalHapus(false); setSelectedId(null); router.push("/admin/desa/gallery/video"); } }; if (!videoState.findUnique.data) { return ( ); } const data = videoState.findUnique.data; return ( {/* Tombol Kembali */} {/* Detail Video */} Detail Video Judul {data?.name || '-'} Video {data?.linkVideo ? ( ) : ( Tidak ada video )} Tanggal Video {data?.createdAt ? new Date(data.createdAt).toDateString() : '-'} Deskripsi {data?.deskripsi ? ( ) : ( Tidak ada deskripsi )} {/* Tombol Aksi */} {/* Modal Konfirmasi Hapus */} setModalHapus(false)} onConfirm={handleHapus} text="Apakah Anda yakin ingin menghapus video ini?" /> ); function convertToEmbedUrl(youtubeUrl: string): string { try { const url = new URL(youtubeUrl); const videoId = url.searchParams.get("v"); if (!videoId) return youtubeUrl; return `https://www.youtube.com/embed/${videoId}`; } catch (err) { console.error("Error converting YouTube URL to embed:", err); return youtubeUrl; } } } export default DetailVideo;