import { PermissionAction } from '@supabase/shared-types/out/constants' import Link from 'next/link' import { useState } from 'react' import { useParams } from 'common' import { useProjectContext } from 'components/layouts/ProjectLayout/ProjectContext' import { ButtonTooltip } from 'components/ui/ButtonTooltip' import { useDatabaseExtensionsQuery } from 'data/database-extensions/database-extensions-query' import { useCheckPermissions } from 'hooks/misc/useCheckPermissions' import { Alert_Shadcn_, AlertDescription_Shadcn_, AlertTitle_Shadcn_, Button, Separator, Sheet, SheetContent, WarningIcon, } from 'ui' import { IntegrationOverviewTab } from '../Integration/IntegrationOverviewTab' import { CreateWrapperSheet } from './CreateWrapperSheet' import { WRAPPERS } from './Wrappers.constants' import { WrapperTable } from './WrapperTable' export const WrapperOverviewTab = () => { const { id } = useParams() const { project } = useProjectContext() const [createWrapperShown, setCreateWrapperShown] = useState(false) const [isClosingCreateWrapper, setisClosingCreateWrapper] = useState(false) const canCreateWrapper = useCheckPermissions(PermissionAction.TENANT_SQL_ADMIN_WRITE, 'wrappers') const { data } = useDatabaseExtensionsQuery({ projectRef: project?.ref, connectionString: project?.connectionString, }) const wrapperMeta = WRAPPERS.find((w) => w.name === id) if (!wrapperMeta) { return
Unsupported integration type
} const wrappersExtension = data?.find((ext) => ext.name === 'wrappers') const isWrappersExtensionInstalled = !!wrappersExtension?.installed_version const hasRequiredVersion = (wrappersExtension?.installed_version ?? '') >= (wrapperMeta?.minimumExtensionVersion ?? '') // [Joshen] Default version is what's on the DB, so if the installed version is already the default version // but still doesnt meet the minimum extension version, then DB upgrade is required const databaseNeedsUpgrading = wrappersExtension?.installed_version === wrappersExtension?.default_version return (
The {wrapperMeta.label} wrapper requires a minimum extension version of{' '}
{wrapperMeta.minimumExtensionVersion}. You have version{' '}
{wrappersExtension?.installed_version} installed. Please{' '}
{databaseNeedsUpgrading && 'upgrade your database then '}update the extension by
disabling and enabling the wrappers extension to
create this wrapper.
Warning: Before reinstalling the wrapper extension, you must first remove all existing wrappers. Afterward, you can recreate the wrappers.