"use client" import { useState } from "react" import { Row } from "@tanstack/react-table" import { MoreHorizontal, Pencil, Trash, Undo } from "lucide-react" import { Button } from "@/components/ui/button" import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu" import { Hero } from "@/types/hero" import { heroService } from "@/services/heroService" import { toast } from "sonner" import { HeroDialog } from "./hero-dialog" import Swal from "sweetalert2" interface DataTableRowActionsProps { row: Row onSuccess: () => void } export function HeroRowActions({ row, onSuccess, }: DataTableRowActionsProps) { const hero = row.original const [showEditDialog, setShowEditDialog] = useState(false) const handleDelete = async () => { const result = await Swal.fire({ title: "Emin misiniz?", text: "Bu hero silinecek! (Geri alabilirsiniz)", icon: "warning", showCancelButton: true, confirmButtonText: "Evet, sil", cancelButtonText: "İptal", }) if (result.isConfirmed) { try { await heroService.deleteHero(hero.ID) toast.success("Hero başarıyla silindi") onSuccess() } catch { toast.error("Silme işlemi başarısız") } } } const handleRestore = async () => { const result = await Swal.fire({ title: "Geri yüklemek istiyor musunuz?", text: "Bu hero tekrar aktif listeye alınacak.", icon: "question", showCancelButton: true, confirmButtonText: "Evet, geri yükle", cancelButtonText: "İptal", }) if (result.isConfirmed) { try { await heroService.restoreHero(hero.ID) toast.success("Hero başarıyla geri yüklendi") onSuccess() } catch { toast.error("Geri yükleme işlemi başarısız") } } } const isDeleted = !!hero.DeletedAt return ( <> İşlemler navigator.clipboard.writeText(hero.ID.toString())} > Hero ID Kopyala {!isDeleted && ( <> setShowEditDialog(true)}> Düzenle Sil )} {isDeleted && ( Geri Yükle )} ) }