71 lines
1.6 KiB
TypeScript
71 lines
1.6 KiB
TypeScript
/**
|
|
* External dependencies
|
|
*/
|
|
import { useSelect } from '@wordpress/data';
|
|
import { OPTIONS_STORE_NAME } from '@woocommerce/data';
|
|
|
|
type Props = {
|
|
/** Set to false to disable this query, defaults to true to query the data */
|
|
enabled?: boolean;
|
|
};
|
|
|
|
export const useLaunchYourStore = (
|
|
{ enabled }: Props = {
|
|
enabled: true,
|
|
}
|
|
) => {
|
|
const {
|
|
isLoading,
|
|
launchYourStoreEnabled,
|
|
comingSoon,
|
|
storePagesOnly,
|
|
privateLink,
|
|
shareKey,
|
|
} = useSelect( ( select ) => {
|
|
if ( ! enabled ) {
|
|
return {
|
|
isLoading: false,
|
|
comingSoon: null,
|
|
storePagesOnly: null,
|
|
privateLink: null,
|
|
shareKey: null,
|
|
launchYourStoreEnabled: null,
|
|
};
|
|
}
|
|
|
|
const { hasFinishedResolution, getOption } =
|
|
select( OPTIONS_STORE_NAME );
|
|
|
|
const allOptionResolutionsFinished =
|
|
! hasFinishedResolution( 'getOption', [
|
|
'woocommerce_coming_soon',
|
|
] ) &&
|
|
! hasFinishedResolution( 'getOption', [
|
|
'woocommerce_store_pages_only',
|
|
] ) &&
|
|
! hasFinishedResolution( 'getOption', [
|
|
'woocommerce_private_link',
|
|
] ) &&
|
|
! hasFinishedResolution( 'getOption', [ 'woocommerce_share_key' ] );
|
|
|
|
return {
|
|
isLoading: allOptionResolutionsFinished,
|
|
comingSoon: getOption( 'woocommerce_coming_soon' ),
|
|
storePagesOnly: getOption( 'woocommerce_store_pages_only' ),
|
|
privateLink: getOption( 'woocommerce_private_link' ),
|
|
shareKey: getOption( 'woocommerce_share_key' ),
|
|
launchYourStoreEnabled:
|
|
window.wcAdminFeatures[ 'launch-your-store' ],
|
|
};
|
|
} );
|
|
|
|
return {
|
|
isLoading,
|
|
comingSoon,
|
|
storePagesOnly,
|
|
privateLink,
|
|
shareKey,
|
|
launchYourStoreEnabled,
|
|
};
|
|
};
|