| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- 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 (
- <TextConfirmModal
- variant="destructive"
- visible={visible}
- onCancel={() => onClose()}
- onConfirm={handleDelete}
- title="Delete this queue"
- loading={isPending}
- confirmLabel={`Delete queue ${queueName}`}
- confirmPlaceholder="Type in name of queue"
- confirmString={queueName ?? 'Unknown'}
- text={
- <>
- <span>This will delete the queue</span>{' '}
- <span className="text-bold text-foreground">{queueName}</span>
- </>
- }
- alert={{ title: 'You cannot recover this queue and its messages once deleted.' }}
- />
- )
- }
|