import { createContext, useContext, useState, useEffect, useCallback } from 'react';
const SettingsContext = createContext( {} );
/**
* Consume the context
*
* @return {{emptyTrashDays: number}} context value
*/
export function useSettingsContext() {
return useContext( SettingsContext );
}
/**
* Settings Provider
*
* @param {*} props
* @return {JSX.Element} element
* @function Object() { [native code] }
*/
export function SettingsProvider( props ) {
const [ settings, setSettings ] = useState( {} );
const updateSettings = useCallback( ( newSettings ) => {
setSettings( ( prev ) => ( { ...prev, ...newSettings } ) );
}, [ setSettings ] );
useEffect( () => {
setSettings( props.value );
}, [ setSettings ] );
return (
<SettingsContext.Provider value={ { settings, setSettings, updateSettings } }>
{ props.children }
</SettingsContext.Provider>
);
}
SettingsProvider.propTypes = {
children: PropTypes.any,
value: PropTypes.object.isRequired,
};