DatabaseTriggersLayout.tsx 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import { PermissionAction } from '@supabase/shared-types/out/constants'
  2. import { useParams } from 'common'
  3. import { PropsWithChildren } from 'react'
  4. import DatabaseLayout from './DatabaseLayout'
  5. import { PageLayout } from '@/components/layouts/PageLayout/PageLayout'
  6. import NoPermission from '@/components/ui/NoPermission'
  7. import { useAsyncCheckPermissions } from '@/hooks/misc/useCheckPermissions'
  8. type DatabaseTriggersLayoutProps = PropsWithChildren
  9. export const DatabaseTriggersLayout = ({ children }: DatabaseTriggersLayoutProps) => {
  10. const { ref } = useParams()
  11. const { can: canReadTriggers, isSuccess: isPermissionsLoaded } = useAsyncCheckPermissions(
  12. PermissionAction.TENANT_SQL_ADMIN_READ,
  13. 'triggers'
  14. )
  15. const navigationItems = [
  16. {
  17. label: 'Data',
  18. href: `/project/${ref}/database/triggers/data`,
  19. },
  20. {
  21. label: 'Event',
  22. href: `/project/${ref}/database/triggers/event`,
  23. },
  24. ]
  25. return (
  26. <DatabaseLayout title="Triggers">
  27. {isPermissionsLoaded && !canReadTriggers ? (
  28. <NoPermission isFullPage resourceText="view database triggers" />
  29. ) : (
  30. <PageLayout
  31. title="Database Triggers"
  32. subtitle="Execute actions automatically when database events occur"
  33. navigationItems={navigationItems}
  34. size="large"
  35. >
  36. {children}
  37. </PageLayout>
  38. )}
  39. </DatabaseLayout>
  40. )
  41. }