PluginProbe ʕ •ᴥ•ʔ
GenerateBlocks / 2.0.0
GenerateBlocks v2.0.0
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 / pattern-library / components / library-cache.js
generateblocks / src / pattern-library / components Last commit date
add-library.js 2 years ago category-list.js 1 year ago insert-pattern.js 2 years ago library-cache.js 2 years ago library-layout.js 1 year ago library-provider.js 2 years ago library-selector.js 1 year ago manage-libraries.js 2 years ago pattern-details-header.js 1 year ago pattern-details.js 1 year ago pattern-list.js 1 year ago pattern-search.js 2 years ago pattern.js 1 year ago selected-patterns.js 1 year ago
library-cache.js
79 lines
1 import { useState, useEffect } from '@wordpress/element';
2 import { useLibrary } from './library-provider';
3 import apiFetch from '@wordpress/api-fetch';
4 import { addQueryArgs } from '@wordpress/url';
5 import { isEmpty } from 'lodash';
6 import { Button, Icon, Spinner } from '@wordpress/components';
7 import { __ } from '@wordpress/i18n';
8 import { backup } from '@wordpress/icons';
9
10 export default function LibraryCache( { setCacheIsClearing, cacheIsClearing } ) {
11 const { activeLibrary, setLibraryCategories, setLibraryPatterns, isLocal } = useLibrary();
12 const [ cacheData, setCacheData ] = useState( false );
13
14 async function checkCacheData() {
15 if ( isLocal ) {
16 setCacheData( {} );
17 return;
18 }
19
20 const cacheDataResponse = await apiFetch( {
21 path: addQueryArgs( `/generateblocks/v1/pattern-library/get-cache-data`, {
22 id: activeLibrary.id,
23 } ),
24 method: 'GET',
25 } );
26
27 if ( cacheDataResponse.success ) {
28 setCacheData( cacheDataResponse?.response?.data ?? {} );
29 } else {
30 setCacheData( {} );
31 }
32 }
33
34 useEffect( () => {
35 ( async function() {
36 if ( ! activeLibrary?.id ) {
37 return;
38 }
39
40 checkCacheData();
41 }() );
42 }, [ activeLibrary?.id ] );
43
44 if ( isEmpty( cacheData ) ) {
45 return null;
46 }
47
48 return (
49 <Button
50 className="has-icon"
51 variant="tertiary"
52 size="compact"
53 disabled={ ! cacheData.can_clear || cacheIsClearing }
54 label={ __( 'Refresh patterns', 'generateblocks' ) }
55 showTooltip
56 onClick={ async() => {
57 setCacheIsClearing( true );
58 const response = await apiFetch( {
59 path: '/generateblocks/v1/pattern-library/clear-cache',
60 data: {
61 id: activeLibrary?.id,
62 },
63 method: 'POST',
64 } );
65
66 if ( response.success ) {
67 await setLibraryCategories();
68 await setLibraryPatterns();
69 await checkCacheData();
70 }
71
72 setCacheIsClearing( false );
73 } }
74 >
75 { !! cacheIsClearing ? <Spinner /> : <Icon icon={ backup } /> }
76 </Button>
77 );
78 }
79