Files
supabase/apps/studio/components/interfaces/Integrations/Webhooks/ListTab.tsx
T
Joshen Lim d46525eac1 Chore/swap use check permissions with use async check project permissions part 8 (Season Finale) (#38619)
* Update perms checking in audit logs

* Deprecate useCheckPermissions, useIsPermissionsLoaded and useCheckProjectPermissions as they're no longer used

* Rename useAsyncCheckProjectPermissions to useAsyncCheckPermissions

* Fix TS
2025-09-16 17:05:57 +08:00

57 lines
1.9 KiB
TypeScript

import { PostgresTrigger } from '@supabase/postgres-meta'
import { PermissionAction } from '@supabase/shared-types/out/constants'
import { useState } from 'react'
import DeleteHookModal from 'components/interfaces/Database/Hooks/DeleteHookModal'
import { EditHookPanel } from 'components/interfaces/Database/Hooks/EditHookPanel'
import { HooksList } from 'components/interfaces/Database/Hooks/HooksList/HooksList'
import NoPermission from 'components/ui/NoPermission'
import { useAsyncCheckPermissions } from 'hooks/misc/useCheckPermissions'
export const WebhooksListTab = () => {
const [selectedHook, setSelectedHook] = useState<any>()
const [showCreateHookForm, setShowCreateHookForm] = useState<boolean>(false)
const [showDeleteHookForm, setShowDeleteHookForm] = useState<boolean>(false)
const { can: canReadWebhooks, isSuccess: isPermissionsLoaded } = useAsyncCheckPermissions(
PermissionAction.TENANT_SQL_ADMIN_READ,
'triggers'
)
const createHook = () => {
setSelectedHook(undefined)
setShowCreateHookForm(true)
}
const editHook = (hook: PostgresTrigger) => {
setSelectedHook(hook)
setShowCreateHookForm(true)
}
const deleteHook = (hook: PostgresTrigger) => {
setSelectedHook(hook)
setShowDeleteHookForm(true)
}
if (isPermissionsLoaded && !canReadWebhooks) {
return <NoPermission isFullPage resourceText="view database webhooks" />
}
return (
<div className="p-10">
<HooksList createHook={createHook} editHook={editHook} deleteHook={deleteHook} />
<EditHookPanel
key={selectedHook?.id}
visible={showCreateHookForm}
selectedHook={selectedHook}
onClose={() => setShowCreateHookForm(false)}
/>
<DeleteHookModal
visible={showDeleteHookForm}
selectedHook={selectedHook}
onClose={() => setShowDeleteHookForm(false)}
/>
</div>
)
}