mirror of
https://github.com/supabase/supabase.git
synced 2026-05-08 09:50:33 -04:00
4a0bb36ca8
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Ivan Vasilov <vasilov.ivan@gmail.com>
42 lines
1.3 KiB
TypeScript
42 lines
1.3 KiB
TypeScript
import { PermissionAction } from '@supabase/shared-types/out/constants'
|
|
import { useState } from 'react'
|
|
|
|
import { DeleteProjectModal } from './DeleteProjectModal'
|
|
import { ButtonTooltip } from '@/components/ui/ButtonTooltip'
|
|
import { useAsyncCheckPermissions } from '@/hooks/misc/useCheckPermissions'
|
|
import { useSelectedProjectQuery } from '@/hooks/misc/useSelectedProject'
|
|
|
|
export interface DeleteProjectButtonProps {
|
|
type?: 'danger' | 'default'
|
|
}
|
|
|
|
export const DeleteProjectButton = ({ type = 'danger' }: DeleteProjectButtonProps) => {
|
|
const { data: project } = useSelectedProjectQuery()
|
|
const [isOpen, setIsOpen] = useState(false)
|
|
|
|
const { can: canDeleteProject } = useAsyncCheckPermissions(PermissionAction.UPDATE, 'projects', {
|
|
resource: { project_id: project?.id },
|
|
})
|
|
|
|
return (
|
|
<>
|
|
<ButtonTooltip
|
|
type={type}
|
|
disabled={!canDeleteProject}
|
|
onClick={() => setIsOpen(true)}
|
|
tooltip={{
|
|
content: {
|
|
side: 'bottom',
|
|
text: !canDeleteProject
|
|
? 'You need additional permissions to delete this project'
|
|
: undefined,
|
|
},
|
|
}}
|
|
>
|
|
Delete project
|
|
</ButtonTooltip>
|
|
<DeleteProjectModal visible={isOpen} onClose={() => setIsOpen(false)} />
|
|
</>
|
|
)
|
|
}
|