import { useRouter } from 'next/router' import { toast } from 'sonner' import { TextConfirmModal } from '@/components/ui/TextConfirmModalWrapper' import { useDatabaseQueueDeleteMutation } from '@/data/database-queues/database-queues-delete-mutation' import { useSelectedProjectQuery } from '@/hooks/misc/useSelectedProject' interface DeleteQueueProps { queueName: string visible: boolean onClose: () => void } export const DeleteQueue = ({ queueName, visible, onClose }: DeleteQueueProps) => { const router = useRouter() const { data: project } = useSelectedProjectQuery() const { mutate: deleteDatabaseQueue, isPending } = useDatabaseQueueDeleteMutation({ onSuccess: () => { toast.success(`Successfully removed queue ${queueName}`) router.push(`/project/${project?.ref}/integrations/queues/queues`) onClose() }, }) async function handleDelete() { if (!project) return console.error('Project is required') deleteDatabaseQueue({ queueName: queueName, projectRef: project.ref, connectionString: project.connectionString, }) } if (!queueName) { return null } return ( onClose()} onConfirm={handleDelete} title="Delete this queue" loading={isPending} confirmLabel={`Delete queue ${queueName}`} confirmPlaceholder="Type in name of queue" confirmString={queueName ?? 'Unknown'} text={ <> This will delete the queue{' '} {queueName} } alert={{ title: 'You cannot recover this queue and its messages once deleted.' }} /> ) }