/** * External dependencies */ import { SETTINGS_STORE_NAME } from '@woocommerce/data'; import { recordEvent } from '@woocommerce/tracks'; import { useEffect, useState } from '@wordpress/element'; import { useSelect, useDispatch } from '@wordpress/data'; /** * Internal dependencies */ import { getCountryCode } from '~/dashboard/utils'; import { hasCompleteAddress, SettingsSelector } from '../../tax/utils'; import { default as StoreLocationForm } from '~/tasks/fills/steps/location'; export const StoreLocation: React.FC< { nextStep: () => void; onLocationComplete: () => void; } > = ( { nextStep, onLocationComplete } ) => { const { createNotice } = useDispatch( 'core/notices' ); const { updateAndPersistSettingsForGroup } = useDispatch( SETTINGS_STORE_NAME ); const { generalSettings, isResolving } = useSelect( ( select ) => { const { getSettings, hasFinishedResolution } = select( SETTINGS_STORE_NAME ) as SettingsSelector; return { generalSettings: getSettings( 'general' )?.general, isResolving: ! hasFinishedResolution( 'getSettings', [ 'general', ] ), }; } ); useEffect( () => { if ( isResolving || ! hasCompleteAddress( generalSettings ) ) { return; } onLocationComplete(); }, [ generalSettings, onLocationComplete, isResolving ] ); if ( isResolving ) { return null; } return ( { const country = getCountryCode( values.countryState ); recordEvent( 'tasklist_shipping_recommendation_set_location', { country, } ); nextStep(); } } isSettingsRequesting={ false } settings={ generalSettings } updateAndPersistSettingsForGroup={ updateAndPersistSettingsForGroup } createNotice={ createNotice } isSettingsError={ false } /> ); };