import { useState } from "react" import { Trash2 } from "lucide-react" import { toast } from "sonner" import { deleteAppVersion } from "../../../api/app-versions.api" import { Button } from "../../../components/ui/button" import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "../../../components/ui/dialog" import { formatAppPlatform, versionLabel } from "../../../lib/appVersions" import type { AppVersion } from "../../../types/app-version.types" type DeleteAppVersionDialogProps = { version: AppVersion | null open: boolean onOpenChange: (open: boolean) => void onDeleted: (id: number) => void } export function DeleteAppVersionDialog({ version, open, onOpenChange, onDeleted, }: DeleteAppVersionDialogProps) { const [deleting, setDeleting] = useState(false) const handleOpenChange = (next: boolean) => { if (!next && !deleting) onOpenChange(false) } const handleConfirm = async () => { if (!version) return setDeleting(true) try { const res = await deleteAppVersion(version.id) toast.success(res.message || "App version deleted successfully") onDeleted(version.id) onOpenChange(false) } catch (e: unknown) { console.error(e) const msg = (e as { response?: { data?: { message?: string } } })?.response?.data?.message ?? "Failed to delete app version" toast.error(msg) } finally { setDeleting(false) } } return ( Delete app version? This permanently removes the release record. Learners will no longer receive update prompts for this version entry. This action cannot be undone. {version ? (

{versionLabel(version)}

#{version.id} · {formatAppPlatform(version.platform)}

) : null}
) }