82 lines
1.8 KiB
TypeScript
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 } />;
|
||
|
};
|