import { __ } from '@wordpress/i18n'; import { createPortal } from 'react-dom'; import { useState } from '@wordpress/element'; import { hasSettingsTabs, SettingsTabsRenderer, } from 'growthstack/slotfills/settings'; import LianaAutomationTab from './components/LianaAutomationTab'; import LianaMailerTab from './components/LianaMailerTab'; import Tabs from './../shared/Tabs'; import Tab from './../shared/Tab'; import useNotice from './../shared/useNotice'; import { getConnectionStatus } from './utils'; type SettingsProps = { cookieConsentPluginActive: boolean; formsPageUrl: string; lianaAutomationChannels: object[]; lianaAutomationConnected: boolean; lianaAutomationEndpoint: string; lianaAutomationSettings: LianaAutomationSettings; lianaMailerConnected: boolean; lianaMailerEndpoint: string; lianaMailerSettings: LianaAPISettings; migrationEndpoint: string; migrationStatus: string; }; export default function Settings( props: SettingsProps ) { const { cookieConsentPluginActive, formsPageUrl, lianaAutomationChannels, lianaAutomationConnected, lianaAutomationEndpoint, lianaAutomationSettings, lianaMailerConnected, lianaMailerEndpoint, lianaMailerSettings, migrationEndpoint, } = props; const { showNotice } = useNotice(); const [ migrationStatus, setMigrationStatus ] = useState( props.migrationStatus ); const [ mailerSettings, setMailerSettings ] = useState( lianaMailerSettings ); const [ mailerConnected, setMailerConnected ] = useState( lianaMailerConnected ); const [ automationChannels, setAutomationChannels ] = useState( lianaAutomationChannels ); const [ automationSettings, setAutomationSettings ] = useState( lianaAutomationSettings ); const [ automationConnected, setAutomationConnected ] = useState( lianaAutomationConnected ); const tabHeadersTarget = typeof window !== 'undefined' ? document.querySelector( '.js-growthstack-view-tabs' ) : null; const automationStatus = getConnectionStatus( { connected: automationConnected, settings: automationSettings.api, } ); const mailerStatus = getConnectionStatus( { connected: mailerConnected, settings: mailerSettings, } ); const [ licenseStatus, setLicenseStatus ] = useState( 'empty' ); return ( <> tabHeadersTarget ? createPortal( headers, tabHeadersTarget ) : null } urlKey="tab" > { hasSettingsTabs() && ( ) } ); }