DeleteProjectButton.tsx 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import { PermissionAction } from '@supabase/shared-types/out/constants'
  2. import { useState } from 'react'
  3. import { DeleteProjectModal } from './DeleteProjectModal'
  4. import { ButtonTooltip } from '@/components/ui/ButtonTooltip'
  5. import { useAsyncCheckPermissions } from '@/hooks/misc/useCheckPermissions'
  6. import { useSelectedProjectQuery } from '@/hooks/misc/useSelectedProject'
  7. export interface DeleteProjectButtonProps {
  8. type?: 'danger' | 'default'
  9. }
  10. export const DeleteProjectButton = ({ type = 'danger' }: DeleteProjectButtonProps) => {
  11. const { data: project } = useSelectedProjectQuery()
  12. const [isOpen, setIsOpen] = useState(false)
  13. const { can: canDeleteProject } = useAsyncCheckPermissions(PermissionAction.UPDATE, 'projects', {
  14. resource: { project_id: project?.id },
  15. })
  16. return (
  17. <>
  18. <ButtonTooltip
  19. type={type}
  20. disabled={!canDeleteProject}
  21. onClick={() => setIsOpen(true)}
  22. tooltip={{
  23. content: {
  24. side: 'bottom',
  25. text: !canDeleteProject
  26. ? 'You need additional permissions to delete this project'
  27. : undefined,
  28. },
  29. }}
  30. >
  31. Delete project
  32. </ButtonTooltip>
  33. <DeleteProjectModal visible={isOpen} onClose={() => setIsOpen(false)} />
  34. </>
  35. )
  36. }