51 lines
938 B
JavaScript
51 lines
938 B
JavaScript
|
/**
|
||
|
* External dependencies
|
||
|
*/
|
||
|
import { useSelect } from '@wordpress/data';
|
||
|
|
||
|
/**
|
||
|
* Internal dependencies
|
||
|
*/
|
||
|
import { STORE_NAME } from './constants';
|
||
|
|
||
|
/**
|
||
|
* Custom react hook for shortcut methods around user.
|
||
|
*
|
||
|
* This is a wrapper around @wordpress/core-data's getCurrentUser().
|
||
|
*/
|
||
|
export const useUser = () => {
|
||
|
const userData = useSelect( ( select ) => {
|
||
|
const {
|
||
|
getCurrentUser,
|
||
|
hasStartedResolution,
|
||
|
hasFinishedResolution,
|
||
|
} = select( STORE_NAME );
|
||
|
|
||
|
return {
|
||
|
isRequesting:
|
||
|
hasStartedResolution( 'getCurrentUser' ) &&
|
||
|
! hasFinishedResolution( 'getCurrentUser' ),
|
||
|
user: getCurrentUser(),
|
||
|
getCurrentUser,
|
||
|
};
|
||
|
} );
|
||
|
|
||
|
const currentUserCan = ( capability ) => {
|
||
|
if (
|
||
|
userData.user &&
|
||
|
userData.user &&
|
||
|
userData.user.capabilities[ capability ]
|
||
|
) {
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
return false;
|
||
|
};
|
||
|
|
||
|
return {
|
||
|
currentUserCan,
|
||
|
user: userData.user,
|
||
|
isRequesting: userData.isRequesting,
|
||
|
};
|
||
|
};
|