PluginProbe ʕ •ᴥ•ʔ
Presto Player / trunk
Presto Player vtrunk
4.3.1 4.3.0 4.2.4 4.2.3 4.2.2 4.2.0 4.2.1 trunk 1.10.0 1.10.1 1.10.2 1.11.0 1.12.0 1.13.0 1.14.0 1.14.1 1.5.10 1.5.11 1.5.12 1.5.13 1.5.14 1.5.15 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.10 1.6.11 1.6.12 1.6.13 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.9.0 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.14 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.10 2.0.11 2.0.12 2.0.13 2.0.14 2.0.15 2.0.16 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.2.0 2.2.1 2.2.2 2.2.3 2.2.3-beta1 2.3.0 2.3.1 2.3.2 2.3.3 3.0.0 3.0.0-beta1 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.1.0 3.1.1 3.1.2 3.1.3 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4
presto-player / src / admin / dashboard / hooks / useLicenseSettings.js
presto-player / src / admin / dashboard / hooks Last commit date
test 3 weeks ago useCompleteOnboarding.js 3 weeks ago useDateRangePicker.js 1 month ago useEmail.ts 1 month ago useEngagementChartData.js 1 month ago useLicenseSettings.js 1 month ago useLink.js 1 month ago useMediaDetail.js 1 month ago useMediaLibrary.js 1 month ago useMediaList.ts 1 month ago usePerformanceSettings.js 1 month ago useRegisterActivePage.js 1 month ago useSettingOption.js 1 month ago useSimpleSettingsPage.js 1 month ago useTopPerforming.js 1 month ago useTopVideosPaginated.js 1 month ago useUpgradeCTA.js 1 month ago useUserDetail.js 1 month ago
useLicenseSettings.js
89 lines
1 import { useState, useEffect, useCallback } from 'react';
2 import wpApiFetch from '@wordpress/api-fetch';
3
4 // Module-level cache so remounts of the License page (e.g. switching away and
5 // back in the Settings sidebar) don't re-fetch the status from the server.
6 // Activate/deactivate responses keep it in sync.
7 let cachedStatus = null;
8
9 const useLicenseSettings = () => {
10 const [ isLoading, setIsLoading ] = useState( cachedStatus === null );
11 const [ isActivating, setIsActivating ] = useState( false );
12 const [ isDeactivating, setIsDeactivating ] = useState( false );
13 const [ isActive, setIsActive ] = useState( cachedStatus?.active ?? false );
14 const [ licenseKey, setLicenseKey ] = useState( cachedStatus?.key ?? '' );
15
16 useEffect( () => {
17 if ( cachedStatus !== null ) {
18 return;
19 }
20
21 const fetchStatus = async () => {
22 setIsLoading( true );
23 try {
24 const data = await wpApiFetch( {
25 path: '/presto-player/v1/license/status',
26 } );
27 cachedStatus = { active: !! data.active, key: data.key || '' };
28 setIsActive( cachedStatus.active );
29 setLicenseKey( cachedStatus.key );
30 } catch ( err ) {
31 // eslint-disable-next-line no-console
32 console.error(
33 'useLicenseSettings: failed to fetch license status',
34 err
35 );
36 } finally {
37 setIsLoading( false );
38 }
39 };
40
41 fetchStatus();
42 }, [] );
43
44 const activate = useCallback( async ( key ) => {
45 setIsActivating( true );
46 try {
47 const data = await wpApiFetch( {
48 path: '/presto-player/v1/license/activate',
49 method: 'POST',
50 data: { key },
51 } );
52 cachedStatus = { active: true, key: data.key || '' };
53 setIsActive( true );
54 setLicenseKey( cachedStatus.key );
55 return data;
56 } finally {
57 setIsActivating( false );
58 }
59 }, [] );
60
61 const deactivate = useCallback( async () => {
62 setIsDeactivating( true );
63 try {
64 const data = await wpApiFetch( {
65 path: '/presto-player/v1/license/deactivate',
66 method: 'POST',
67 } );
68 cachedStatus = { active: false, key: '' };
69 setIsActive( false );
70 setLicenseKey( '' );
71 return data;
72 } finally {
73 setIsDeactivating( false );
74 }
75 }, [] );
76
77 return {
78 isLoading,
79 isActivating,
80 isDeactivating,
81 isActive,
82 licenseKey,
83 activate,
84 deactivate,
85 };
86 };
87
88 export default useLicenseSettings;
89