import { useState } from "react" import { AlertTriangle, Trash2, X, AlertCircle } from "lucide-react" import { Button } from "../../../components/ui/button" import { Dialog } from "../../../components/ui/dialog" import { Input } from "../../../components/ui/input" import { Label } from "../../../components/ui/label" import { useDeleteFolder } from "../hooks/useDeleteFolder" interface DeleteFolderDialogProps { bucket: string currentPrefix: string folderPrefix: string | null folderName: string | null open: boolean onClose: () => void } export function DeleteFolderDialog({ bucket, currentPrefix, folderPrefix, folderName, open, onClose, }: DeleteFolderDialogProps) { const [confirmName, setConfirmName] = useState("") const [isNonEmptyError, setIsNonEmptyError] = useState(false) const [forceRecursive, setForceRecursive] = useState(false) const deleteMutation = useDeleteFolder(bucket, currentPrefix) if (!folderPrefix || !folderName) return null const handleClose = () => { setConfirmName("") setIsNonEmptyError(false) setForceRecursive(false) onClose() } const handleDelete = async () => { try { await deleteMutation.mutateAsync({ prefix: folderPrefix, recursive: forceRecursive, }) handleClose() } catch (err: unknown) { const msg = err instanceof Error ? err.message : String(err) if (msg.includes("not empty") || msg.includes("409")) { setIsNonEmptyError(true) } } } const isConfirmed = confirmName === folderName return (
{/* Header */}

Delete Folder

Move folder to Drive trash

{isNonEmptyError ? (
Folder is not empty

To recursively move this folder and all its contents to Google Drive Trash, please type the folder name{" "} {folderName} below:

{ setConfirmName(e.target.value) if (e.target.value === folderName) { setForceRecursive(true) } }} placeholder={folderName} autoFocus />
) : (

Are you sure you want to delete folder{" "} {folderName} ?

)} {deleteMutation.isError && !isNonEmptyError && (
{deleteMutation.error?.message || "Failed to delete folder"}
)}
) }