/** * External dependencies */ import jetpackAnalytics from '@automattic/jetpack-analytics'; import { __ } from '@wordpress/i18n'; import { useState, useCallback } from 'react'; /** * Internal dependencies */ import { useIntegrationsStatus } from '../../blocks/contact-form/components/jetpack-integrations-modal/hooks/use-integrations-status'; import AkismetDashboardCard from './akismet-card'; import CreativeMailDashboardCard from './creative-mail-card'; import GoogleSheetsDashboardCard from './google-sheets-card'; import JetpackCRMDashboardCard from './jetpack-crm-card'; import MailPoetDashboardCard from './mailpoet-card'; import SalesforceDashboardCard from './salesforce-card'; import './style.scss'; /** * Types */ import type { Integration } from '../../types'; const Integrations = () => { const { integrations, refreshIntegrations } = useIntegrationsStatus(); const [ expandedCards, setExpandedCards ] = useState( { akismet: false, googleSheets: false, crm: false, creativemail: false, salesforce: false, mailpoet: false, } ); const toggleCard = useCallback( ( cardId: keyof typeof expandedCards ) => { setExpandedCards( prev => { const isExpanding = ! prev[ cardId ]; if ( isExpanding ) { jetpackAnalytics.tracks.recordEvent( 'jetpack_forms_integrations_card_expand', { card: cardId, origin: 'dashboard', } ); } return { ...prev, [ cardId ]: isExpanding, }; } ); }, [] ); const handleToggleAkismet = useCallback( () => toggleCard( 'akismet' ), [ toggleCard ] ); const handleToggleGoogleSheets = useCallback( () => toggleCard( 'googleSheets' ), [ toggleCard ] ); const handleToggleCRM = useCallback( () => toggleCard( 'crm' ), [ toggleCard ] ); const handleToggleSalesforce = useCallback( () => toggleCard( 'salesforce' ), [ toggleCard ] ); const handleToggleCreativeMail = useCallback( () => toggleCard( 'creativemail' ), [ toggleCard ] ); const handleToggleMailPoet = useCallback( () => toggleCard( 'mailpoet' ), [ toggleCard ] ); const findIntegrationById = ( id: string ) => integrations?.find( ( integration: Integration ) => integration.id === id ); return (