diff --git a/static/app/components/prevent/integratedOrgSelector/integratedOrgSelector.tsx b/static/app/components/prevent/integratedOrgSelector/integratedOrgSelector.tsx index d7a75c8fc8e79e..0b122666dc6753 100644 --- a/static/app/components/prevent/integratedOrgSelector/integratedOrgSelector.tsx +++ b/static/app/components/prevent/integratedOrgSelector/integratedOrgSelector.tsx @@ -1,7 +1,7 @@ import {useCallback, useMemo} from 'react'; import styled from '@emotion/styled'; -import {Button} from 'sentry/components/core/button'; +import Access from 'sentry/components/acl/access'; import {LinkButton} from 'sentry/components/core/button/linkButton'; import type {SelectOption} from 'sentry/components/core/compactSelect'; import {CompactSelect} from 'sentry/components/core/compactSelect'; @@ -14,11 +14,12 @@ import {usePreventContext} from 'sentry/components/prevent/context/preventContex import {integratedOrgIdToName} from 'sentry/components/prevent/utils'; import {IconAdd, IconBuilding, IconInfo} from 'sentry/icons'; import {t, tct} from 'sentry/locale'; -import type {IntegrationWithConfig} from 'sentry/types/integrations'; +import type {Integration} from 'sentry/types/integrations'; import {useApiQuery} from 'sentry/utils/queryClient'; import useOrganization from 'sentry/utils/useOrganization'; import {useGetActiveIntegratedOrgs} from 'sentry/views/prevent/tests/queries/useGetActiveIntegratedOrgs'; -import AddIntegration from 'sentry/views/settings/organizationIntegrations/addIntegration'; +import IntegrationButton from 'sentry/views/settings/organizationIntegrations/integrationButton'; +import {IntegrationContext} from 'sentry/views/settings/organizationIntegrations/integrationContext'; import type {IntegrationInformation} from 'sentry/views/settings/organizationIntegrations/integrationDetailedView'; const DEFAULT_ORG_LABEL = 'Select GitHub Org'; @@ -26,7 +27,7 @@ const DEFAULT_ORG_LABEL = 'Select GitHub Org'; function OrgFooterMessage() { const organization = useOrganization(); - const handleAddIntegration = useCallback((_integration: IntegrationWithConfig) => { + const handleAddIntegration = useCallback((_integration: Integration) => { window.location.reload(); }, []); @@ -46,7 +47,10 @@ function OrgFooterMessage() { } ); + const {data: installedIntegrations = []} = useGetActiveIntegratedOrgs({organization}); + const provider = integrationInfo?.providers[0]; + const hasInstalledIntegration = installedIntegrations.length > 0; return ( @@ -70,22 +74,31 @@ function OrgFooterMessage() { {isIntegrationInfoPending ? ( ) : provider ? ( - - {openDialog => ( - - )} - + + {({hasAccess}) => ( + {}} + buttonProps={{ + size: 'sm', + priority: 'primary', + }} + /> + )} + + ) : ( ; }; diff --git a/static/app/views/settings/organizationIntegrations/integrationContext.tsx b/static/app/views/settings/organizationIntegrations/integrationContext.tsx index 0efe51aa53a194..d4fd52bfbc9fa1 100644 --- a/static/app/views/settings/organizationIntegrations/integrationContext.tsx +++ b/static/app/views/settings/organizationIntegrations/integrationContext.tsx @@ -12,7 +12,8 @@ type IntegrationContextProps = { | 'integrations_directory' | 'onboarding' | 'project_creation' - | 'test_analytics_onboarding'; + | 'test_analytics_onboarding' + | 'test_analytics_org_selector'; referrer?: string; }; installStatus: string;