'use client'
import colors from '@/con/colors';
import {
Box,
Button,
Card,
Center,
Group,
Image,
Modal,
Paper,
Skeleton,
Stack,
Text,
Title
} 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';
import stateDashboardMusik from '../../_state/desa/musik';
export default function DetailMusik() {
const musikState = useProxy(stateDashboardMusik);
const router = useRouter();
const params = useParams();
const id = params.id as string;
const [showDeleteModal, setShowDeleteModal] = useState(false);
const [isDeleting, setIsDeleting] = useState(false);
const { data, loading, load } = musikState.musik.findUnique;
useShallowEffect(() => {
if (id) {
load(id);
}
}, [id]);
if (loading || !data) {
return (
);
}
if (!data) {
return (
Musik tidak ditemukan
);
}
const handleDelete = async () => {
try {
setIsDeleting(true);
await musikState.musik.delete.byId(id);
setShowDeleteModal(false);
router.push('/admin/musik');
} catch (error) {
console.error('Error deleting musik:', error);
} finally {
setIsDeleting(false);
}
};
return (
{/* Header dengan tombol kembali */}
Detail Musik
{/* Cover Image */}
{data.coverImage && (
)}
{/* Info Section */}
Judul
{data.judul}
Artis
{data.artis}
{data.deskripsi && (
Deskripsi
)}
Durasi
{data.durasi}
{data.genre && (
Genre
{data.genre}
)}
{data.tahunRilis && (
Tahun Rilis
{data.tahunRilis}
)}
{/* Audio File */}
{data.audioFile && (
File Audio
{data.audioFile.realName}
)}
{/* Action Buttons */}
}
onClick={() => setShowDeleteModal(true)}
>
Hapus
}
onClick={() => router.push(`/admin/musik/${id}/edit`)}
>
Edit
{/* Delete Confirmation Modal */}
setShowDeleteModal(false)}
title="Konfirmasi Hapus"
centered
>
Apakah Anda yakin ingin menghapus musik "{data.judul}"?
Tindakan ini tidak dapat dibatalkan.
);
}