DeleteTrigger.tsx 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import type { PGTrigger } from '@supabase/pg-meta'
  2. import { TextConfirmModal } from '@/components/ui/TextConfirmModalWrapper'
  3. import { useSelectedProjectQuery } from '@/hooks/misc/useSelectedProject'
  4. interface DeleteTriggerProps {
  5. trigger?: PGTrigger
  6. visible: boolean
  7. setVisible: (value: string | null) => void
  8. onDelete: (params: {
  9. projectRef: string
  10. connectionString?: string | null
  11. trigger: PGTrigger
  12. }) => void
  13. isLoading: boolean
  14. }
  15. export const DeleteTrigger = ({
  16. trigger,
  17. visible,
  18. setVisible,
  19. onDelete,
  20. isLoading,
  21. }: DeleteTriggerProps) => {
  22. const { data: project } = useSelectedProjectQuery()
  23. const { name, schema } = trigger ?? {}
  24. async function handleDelete() {
  25. if (!project) return console.error('Project is required')
  26. if (!trigger) return console.error('Trigger ID is required')
  27. onDelete({
  28. projectRef: project.ref,
  29. connectionString: project.connectionString,
  30. trigger,
  31. })
  32. }
  33. return (
  34. <TextConfirmModal
  35. variant={'warning'}
  36. visible={visible}
  37. onCancel={() => setVisible('')}
  38. onConfirm={handleDelete}
  39. title="Delete this trigger"
  40. loading={isLoading}
  41. confirmLabel={`Delete trigger ${name}`}
  42. confirmPlaceholder="Type in name of trigger"
  43. confirmString={name ?? ''}
  44. text={
  45. <>
  46. This will delete your trigger called{' '}
  47. <span className="text-bold text-foreground">{name}</span> of schema{' '}
  48. <span className="text-bold text-foreground">{schema}</span>
  49. </>
  50. }
  51. alert={{
  52. title: 'You cannot recover this trigger once deleted.',
  53. }}
  54. />
  55. )
  56. }