import { __ } from '@wordpress/i18n'; import { useState, useMemo } from '@wordpress/element'; import { Button, Icon } from '@wordpress/components'; import { useDispatch } from '@wordpress/data'; import { reusableBlock } from '@wordpress/icons'; import SettingsCard from '../../ReusableComponents/SettingsCard'; import TodoSettingsBlock from '../../ReusableComponents/SettingsBlocks/TodoSettingsBlock'; import FeatureSettingsBlock from '../../ReusableComponents/SettingsBlocks/FeatureSettingsBlock'; import { TITLE_BADGE_POSITIVE } from '../../ReusableComponents/TitleBadge'; import { useMerchantInfo } from '../../../data/common/hooks'; import { STORE_NAME } from '../../../data/common'; import Features from './TabSettingsElements/Blocks/Features'; const TabOverview = () => { const [ todos, setTodos ] = useState( [] ); const [ todosData, setTodosData ] = useState( todosDataDefault ); const [ isRefreshing, setIsRefreshing ] = useState( false ); const { merchantFeatures } = useMerchantInfo(); const { refreshFeatureStatuses, setActiveModal } = useDispatch( STORE_NAME ); // Get the features data with access to setActiveModal const featuresData = useMemo( () => Features.getFeatures( setActiveModal ), [ setActiveModal ] ); // Map merchant features status to our config const features = useMemo( () => { return featuresData.map( ( feature ) => { const merchantFeature = merchantFeatures?.[ feature.id ]; return { ...feature, enabled: merchantFeature?.enabled ?? false, }; } ); }, [ featuresData, merchantFeatures ] ); const refreshHandler = async () => { setIsRefreshing( true ); try { const result = await refreshFeatureStatuses(); if ( result && ! result.success ) { console.error( 'Failed to refresh features:', result.message || 'Unknown error' ); } } finally { setIsRefreshing( false ); } }; return (
{ __( 'Enable additional features and capabilities on your WooCommerce store.', 'woocommerce-paypal-payments' ) }
{ __( 'Click Refresh to update your current features after making changes.', 'woocommerce-paypal-payments' ) }
> } contentItems={ features.map( ( feature ) => { return (