/** * External dependencies */ import { Button } from '@wordpress/components'; import { __ } from '@wordpress/i18n'; import GridiconCheckmarkCircle from 'gridicons/dist/checkmark-circle'; import GridiconSync from 'gridicons/dist/sync'; import GridiconNotice from 'gridicons/dist/notice'; import classnames from 'classnames'; /** * Internal dependencies */ import { PluginCardBody } from '~/marketing/components'; import { RegisteredChannel, SyncStatusType } from '~/marketing/types'; import './RegisteredChannelCardBody.scss'; type RegisteredChannelCardBodyProps = { registeredChannel: RegisteredChannel; }; type SyncStatusPropsType = { status: SyncStatusType; }; const iconSize = 18; const className = 'woocommerce-marketing-sync-status'; const SyncStatus: React.FC< SyncStatusPropsType > = ( { status } ) => { if ( status === 'failed' ) { return (
{ __( 'Sync failed', 'woocommerce' ) }
); } if ( status === 'syncing' ) { return (
{ __( 'Syncing', 'woocommerce' ) }
); } return (
{ __( 'Synced', 'woocommerce' ) }
); }; type IssueStatusPropsType = { registeredChannel: RegisteredChannel; }; const issueStatusClassName = 'woocommerce-marketing-issue-status'; const IssueStatus: React.FC< IssueStatusPropsType > = ( { registeredChannel, } ) => { if ( registeredChannel.issueType === 'error' ) { return (
{ registeredChannel.issueText }
); } if ( registeredChannel.issueType === 'warning' ) { return (
{ registeredChannel.issueText }
); } return (
{ registeredChannel.issueText }
); }; export const RegisteredChannelCardBody: React.FC< RegisteredChannelCardBodyProps > = ( { registeredChannel } ) => { /** * The description section in the channel card. * * If setup is not completed, this would be the channel description. * * If setup is completed, this would be an element with sync status and issue status. */ const description = ! registeredChannel.isSetupCompleted ? ( registeredChannel.description ) : (
{ registeredChannel.syncStatus && ( <>
) }
); /** * The action button in the channel card. * * If setup is not completed, this would be a "Finish setup" primary button. * * If setup is completed, this would be a "Manage" secondary button. */ const button = ! registeredChannel.isSetupCompleted ? ( ) : ( ); return ( } name={ registeredChannel.title } description={ description } button={ button } /> ); };