import { useParams } from 'common' import { PropsWithChildren, ReactNode } from 'react' import { cn } from 'ui' import { IntegrationDefinition, INTEGRATIONS } from '../Landing/Integrations.constants' import { BuiltBySection } from './BuildBySection' import { MarkdownContent } from './MarkdownContent' import { RequiredExtensionsSection } from './RequiredExtensionsSection' import { useDatabaseExtensionsQuery } from '@/data/database-extensions/database-extensions-query' import { useSelectedProjectQuery } from '@/hooks/misc/useSelectedProject' export interface IntegrationOverviewTabProps { actions?: ReactNode status?: string | ReactNode alert?: ReactNode hideRequiredExtensionsSection?: boolean } export const OverviewTabSharedContent = ({ integration, hideRequiredExtensionsSection = false, actions, alert, children, }: PropsWithChildren<{ integration: IntegrationDefinition hideRequiredExtensionsSection?: boolean actions?: ReactNode alert?: ReactNode }>) => { const { data: project } = useSelectedProjectQuery() const { data: extensions } = useDatabaseExtensionsQuery({ projectRef: project?.ref, connectionString: project?.connectionString, }) if (!integration) { return
Unsupported integration type
} const installableExtensions = (extensions ?? []).filter((ext) => (integration.requiredExtensions ?? []).includes(ext.name) ) const hasToInstallExtensions = installableExtensions.some((x) => !x.installed_version) return ( <> {!!alert &&
{alert}
} {!!actions && (
{actions}
)} {children} ) } export const IntegrationOverviewTab = ({ actions, alert, status, children, hideRequiredExtensionsSection = false, }: PropsWithChildren) => { const { id } = useParams() const integration = INTEGRATIONS.find((i) => i.id === id) if (!integration) { return
Unsupported integration type
} return (
{children}
) }