woocommerce/plugins/woocommerce-admin/client/tasks/fills/tax/woocommerce-tax/index.tsx

82 lines
1.8 KiB
TypeScript

/**
* External dependencies
*/
import { __ } from '@wordpress/i18n';
import { difference } from 'lodash';
import { useSelect } from '@wordpress/data';
import { Spinner } from '@woocommerce/components';
import { PLUGINS_STORE_NAME, SETTINGS_STORE_NAME } from '@woocommerce/data';
/**
* Internal dependencies
*/
import {
AUTOMATION_PLUGINS,
hasCompleteAddress,
SettingsSelector,
TaxChildProps,
} from '../utils';
import { AutomatedTaxes } from './automated-taxes';
import { Setup } from './setup';
export const WooCommerceTax: React.FC< TaxChildProps > = ( {
isPending,
onAutomate,
onManual,
onDisable,
} ) => {
const {
generalSettings,
isJetpackConnected,
isResolving,
pluginsToActivate,
} = useSelect( ( select ) => {
const { getSettings } = select(
SETTINGS_STORE_NAME
) as SettingsSelector;
const { getActivePlugins, hasFinishedResolution } = select(
PLUGINS_STORE_NAME
);
const activePlugins = getActivePlugins();
return {
generalSettings: getSettings( 'general' ).general,
isJetpackConnected: select(
PLUGINS_STORE_NAME
).isJetpackConnected(),
isResolving:
! hasFinishedResolution( 'isJetpackConnected' ) ||
! select(
SETTINGS_STORE_NAME
).hasFinishedResolution( 'getSettings', [ 'general' ] ) ||
! hasFinishedResolution( 'getActivePlugins' ),
pluginsToActivate: difference( AUTOMATION_PLUGINS, activePlugins ),
};
} );
const canAutomateTaxes = () => {
return (
hasCompleteAddress( generalSettings ) &&
! pluginsToActivate.length &&
isJetpackConnected
);
};
if ( isResolving ) {
return <Spinner />;
}
const childProps = {
isPending,
onAutomate,
onManual,
onDisable,
};
if ( canAutomateTaxes() ) {
return <AutomatedTaxes { ...childProps } />;
}
return <Setup { ...childProps } />;
};