/**
* External dependencies
*/
import { useSelect, useDispatch } from '@wordpress/data';
import { useEffect, useCallback } from '@wordpress/element';
/**
* Internal dependencies
*/
import { SETTINGS_STORE_NAME } from '../data';
export const useSettingsSelect = ( selector = 'getSettings' ) => {
return useSelect( ( select ) =>
select( SETTINGS_STORE_NAME )[ selector ]()
);
};
export const useSettingsDispatch = ( saveToDb = false ) => {
const { updateSettings } = useDispatch( SETTINGS_STORE_NAME );
return ( data ) => updateSettings( data, saveToDb );
};
export const useSyncSettingsDispatch = () => {
const { syncSettings } = useDispatch( SETTINGS_STORE_NAME );
return () => syncSettings();
};
export const useCreateNotice = () => {
const { createNotice } = useDispatch( 'core/notices' );
return useCallback(
( type, message, options = {} ) =>
message && createNotice( type, message, options ),
[ createNotice ]
);
};
export const useBodyClasses = ( style ) => {
useEffect( () => {
document.body.classList.add( 'woocommerce-setup-guide__body' );
if ( style === 'wizard' ) {
document.body.parentNode.classList.remove( 'wp-toolbar' );
document.body.classList.remove( 'woocommerce-admin-is-loading' );
document.body.classList.add( 'woocommerce-onboarding' );
document.body.classList.add( 'woocommerce-admin-full-screen' );
}
return () => {
document.body.classList.remove( 'woocommerce-setup-guide__body' );
if ( style === 'wizard' ) {
document.body.classList.remove( 'woocommerce-onboarding' );
document.body.classList.remove(
'woocommerce-admin-full-screen'
);
document.body.parentNode.classList.add( 'wp-toolbar' );
}
};
}, [ style ] );
};
export const useResetSettings = () => {
const { invalidateResolution } = useDispatch( SETTINGS_STORE_NAME );
return () => invalidateResolution( 'getSettings', [] );
};