PluginProbe ʕ •ᴥ•ʔ
GenerateBlocks / 1.8.2
GenerateBlocks v1.8.2
trunk 1.0 1.0.1 1.0.2 1.1.0 1.1.1 1.1.2 1.2.0 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.6.0 1.7.0 1.7.1 1.7.2 1.7.3 1.8.0 1.8.1 1.8.2 1.8.3 1.9.0 1.9.1 2.0.0 2.0.1 2.0.2 2.1.0 2.1.1 2.1.2 2.2.0 2.2.1 2.3.0
generateblocks / src / components / onboard-popover / index.js
generateblocks / src / components / onboard-popover Last commit date
onboards 3 years ago index.js 3 years ago styles.scss 3 years ago
index.js
61 lines
1 import { memo, useEffect, useState } from '@wordpress/element';
2 import { Button, Popover } from '@wordpress/components';
3 import { __ } from '@wordpress/i18n';
4 import './styles.scss';
5 import { store as coreStore } from '@wordpress/core-data';
6 import { useSelect } from '@wordpress/data';
7 import apiFetch from '@wordpress/api-fetch';
8
9 const OnboardPopover = memo( function OnboardPopover( { onboardingKey, children } ) {
10 const [ showOnboard, setShowOnboard ] = useState( false );
11 const user = useSelect( ( select ) => select( coreStore )?.getCurrentUser(), [] );
12
13 useEffect( function() {
14 if (
15 sessionStorage.getItem( `generateblocks_onboarding_${ onboardingKey }` ) !== '1' &&
16 ! user?.meta?.generateblocks_onboarding[ onboardingKey ]
17 ) {
18 setShowOnboard( true );
19 }
20 }, [ user?.id, JSON.stringify( user?.meta ), onboardingKey ] );
21
22 return (
23 <>
24 { showOnboard &&
25 <Popover
26 position="bottom right"
27 className="gb-onboard-popover"
28 focusOnMount={ true }
29 noArrow={ false }
30 variant="toolbar"
31 offset={ 10 }
32 flip={ true }
33 >
34 { children }
35 <div className="gb-onboard-popover__button">
36 <Button
37 variant="primary"
38 onClick={ () => {
39 apiFetch( {
40 path: '/generateblocks/v1/onboarding',
41 method: 'POST',
42 data: {
43 key: onboardingKey,
44 },
45 } ).then( () => {
46 setShowOnboard( false );
47 sessionStorage.setItem( `generateblocks_onboarding_${ onboardingKey }`, '1' );
48 } );
49 } }
50 >
51 { __( 'Got it', 'generateblocks' ) }
52 </Button>
53 </div>
54 </Popover>
55 }
56 </>
57 );
58 } );
59
60 export default OnboardPopover;
61