APIKeyDeleteDialog.tsx 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import { PermissionAction } from '@supabase/shared-types/out/constants'
  2. import { Trash2 } from 'lucide-react'
  3. import { DropdownMenuItemTooltip } from '@/components/ui/DropdownMenuItemTooltip'
  4. import type { APIKeysData } from '@/data/api-keys/api-keys-query'
  5. import { useAsyncCheckPermissions } from '@/hooks/misc/useCheckPermissions'
  6. interface APIKeyDeleteDialogProps {
  7. apiKey: Extract<APIKeysData[number], { type: 'secret' | 'publishable' }>
  8. setKeyToDelete: (id: string | null) => void
  9. }
  10. export const APIKeyDeleteDialog = ({ apiKey, setKeyToDelete }: APIKeyDeleteDialogProps) => {
  11. const { can: canDeleteAPIKeys } = useAsyncCheckPermissions(
  12. PermissionAction.TENANT_SQL_ADMIN_WRITE,
  13. '*'
  14. )
  15. return (
  16. <DropdownMenuItemTooltip
  17. className="flex gap-2"
  18. onClick={() => {
  19. if (canDeleteAPIKeys) {
  20. setKeyToDelete(apiKey.id)
  21. }
  22. }}
  23. disabled={!canDeleteAPIKeys}
  24. tooltip={{
  25. content: {
  26. side: 'left',
  27. text: !canDeleteAPIKeys
  28. ? 'You need additional permissions to delete API keys'
  29. : undefined,
  30. },
  31. }}
  32. >
  33. <Trash2 size={14} /> Delete API key
  34. </DropdownMenuItemTooltip>
  35. )
  36. }