import styled from '@emotion/styled'; import moment from 'moment-timezone'; import {Alert} from 'sentry/components/core/alert'; import {t} from 'sentry/locale'; import type {Integration} from 'sentry/types/integrations'; import {getUserTimezone} from 'sentry/utils/dates'; import AlertContainer from 'sentry/views/settings/organizationIntegrations/integrationAlertContainer'; import UpsellButton from 'getsentry/components/upsellButton'; type Props = { integrations: Integration[]; hideCTA?: boolean; wrapWithContainer?: boolean; }; function FirstPartyIntegrationAlertHook({ integrations, wrapWithContainer, hideCTA, }: Props) { const getAlertInfo = () => { const disabledIntegrations = integrations.filter( i => i.organizationIntegrationStatus === 'disabled' ); if (disabledIntegrations.length > 0) { const integration = disabledIntegrations[0]!; return [ t('Your %s integration has been disabled', integration.provider.name), 'disabled-integration', integration.provider.key, ]; } const integrationsWithGracePeriod = integrations.filter(i => !!i.gracePeriodEnd); if (integrationsWithGracePeriod.length > 0) { const integration = integrationsWithGracePeriod[0]!; return [ t( 'Your %s integration will be disabled after %s', integration.provider.name, moment(integration.gracePeriodEnd) .tz(getUserTimezone()) .format('MMMM Do, YYYY h:mm A z') ), 'grace-period', integration.provider.key, ]; } return [null, '', '']; }; const [alert, alertType, provider] = getAlertInfo(); if (!alert) { return null; } const wrappedAlert = ( {alert} {!hideCTA && ( )} ); return wrapWithContainer ? ( {wrappedAlert} ) : ( wrappedAlert ); } export default FirstPartyIntegrationAlertHook; const InnerAlertWrapper = styled('div')` width: 100%; display: flex; justify-content: space-between; `;