index.tsx40 lines · main
1import { PermissionAction } from '@supabase/shared-types/out/constants'
2import { PageContainer } from 'ui-patterns/PageContainer'
3import { PageSection } from 'ui-patterns/PageSection'
4
5import { PublicationsList } from '@/components/interfaces/Database/Publications/PublicationsList'
6import DatabaseLayout from '@/components/layouts/DatabaseLayout/DatabaseLayout'
7import { DefaultLayout } from '@/components/layouts/DefaultLayout'
8import { PageLayout } from '@/components/layouts/PageLayout/PageLayout'
9import { NoPermission } from '@/components/ui/NoPermission'
10import { useAsyncCheckPermissions } from '@/hooks/misc/useCheckPermissions'
11import type { NextPageWithLayout } from '@/types'
12
13const DatabasePublications: NextPageWithLayout = () => {
14 const { can: canViewPublications, isSuccess: isPermissionsLoaded } = useAsyncCheckPermissions(
15 PermissionAction.TENANT_SQL_ADMIN_READ,
16 'publications'
17 )
18
19 if (isPermissionsLoaded && !canViewPublications) {
20 return <NoPermission isFullPage resourceText="view database publications" />
21 }
22
23 return (
24 <PageLayout title="Database Publications" size="large">
25 <PageContainer size="large">
26 <PageSection className="gap-y-4">
27 <PublicationsList />
28 </PageSection>
29 </PageContainer>
30 </PageLayout>
31 )
32}
33
34DatabasePublications.getLayout = (page) => (
35 <DefaultLayout>
36 <DatabaseLayout title="Publications">{page}</DatabaseLayout>
37 </DefaultLayout>
38)
39
40export default DatabasePublications