"use client"; import { useState, useTransition } from "react"; import { Activity } from "@prisma/client"; import { Plus, Edit2, Trash2, X, Save } from "lucide-react"; import { loadMockActivities, addActivity, updateActivity, deleteActivity } from "@/app/actions/activities"; export default function ActivitiesClient({ activities }: { activities: Activity[] }) { const [isModalOpen, setIsModalOpen] = useState(false); const [editingActivity, setEditingActivity] = useState(null); const [isPending, startTransition] = useTransition(); const [error, setError] = useState(null); const openAddModal = () => { setEditingActivity(null); setError(null); setIsModalOpen(true); }; const openEditModal = (activity: Activity) => { setEditingActivity(activity); setError(null); setIsModalOpen(true); }; const closeModal = () => { setIsModalOpen(false); setEditingActivity(null); setError(null); }; const handleDelete = (id: number) => { if (confirm("Bu aktiviteyi silmek istediğinize emin misiniz?")) { startTransition(async () => { const result = await deleteActivity(id); if (result.error) { alert(result.error); } }); } }; const handleSubmit = async (formData: FormData) => { setError(null); if (editingActivity) { formData.append("id", editingActivity.id.toString()); const result = await updateActivity(null, formData); if (result.error) { setError(result.error); } else { closeModal(); } } else { const result = await addActivity(null, formData); if (result.error) { setError(result.error); } else { closeModal(); } } }; return ( <>

Aktiviteler

{activities.length === 0 ? (
Henüz aktivite eklenmemiş. Sağ üstten yeni ekleyebilir veya örnek verileri yükleyebilirsiniz.
) : (
{activities.map(act => ( ))}
Başlık Dil Fiyat İşlemler
{act.title} {act.lang} {act.price}
)} {/* Modal */} {isModalOpen && (

{editingActivity ? "Aktivite Düzenle" : "Yeni Aktivite Ekle"}

{error && (
{error}
)}