import { PermissionAction } from '@supabase/shared-types/out/constants' import { useParams } from 'common' import { useMemo } from 'react' import { GenericSkeletonLoader } from 'ui-patterns/ShimmeringLoader' import { IntegrationImageHandler } from '../IntegrationsSettings' import { GitHubIntegrationConnectionForm } from './GitHubIntegrationConnectionForm' import { ScaffoldContainer, ScaffoldSection, ScaffoldSectionContent, ScaffoldSectionDetail, } from '@/components/layouts/Scaffold' import NoPermission from '@/components/ui/NoPermission' import { useGitHubConnectionsQuery } from '@/data/integrations/github-connections-query' import { useAsyncCheckPermissions } from '@/hooks/misc/useCheckPermissions' import { useSelectedOrganizationQuery } from '@/hooks/misc/useSelectedOrganization' export const GitHubSection = () => { const { ref: projectRef } = useParams() const { data: organization } = useSelectedOrganizationQuery() const { can: canReadGitHubConnection, isLoading: isLoadingPermissions } = useAsyncCheckPermissions(PermissionAction.READ, 'integrations.github_connections') const { data: connections } = useGitHubConnectionsQuery( { organizationId: organization?.id }, { enabled: !!projectRef && !!organization?.id } ) const existingConnection = useMemo( () => connections?.find((c) => c.project.ref === projectRef), [connections, projectRef] ) const GitHubTitle = `GitHub Integration` return (

Connect any of your GitHub repositories to a project.

{isLoadingPermissions ? ( ) : !canReadGitHubConnection ? ( ) : (

How does the GitHub integration work?

Connect to GitHub to apply changes to your database when you merge into your production branch. If branching is enabled, each pull request gets its own preview database.

)}
) }