'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, Flex, Paper, Skeleton, Stack, Text } from '@mantine/core'; import { useShallowEffect } from '@mantine/hooks'; import { IconArrowBack, IconEdit, IconX } 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 ( ) } return ( Detail Video {videoState.findUnique.data ? ( Judul {videoState.findUnique.data?.name} Video Tanggal Video {new Date(videoState.findUnique.data?.createdAt).toDateString()} Deskripsi ) : null} {/* Modal Konfirmasi Hapus */} setModalHapus(false)} onConfirm={handleHapus} text='Apakah anda yakin ingin menghapus berita 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;