PluginProbe ʕ •ᴥ•ʔ
Presto Player / 4.3.2
Presto Player v4.3.2
4.3.2 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 1 month ago useCompleteOnboarding.js 1 month ago useDateRangePicker.js 2 months ago useEmail.ts 2 months ago useEngagementChartData.js 2 months ago useLicenseSettings.js 2 months ago useLink.js 2 months ago useMediaDetail.js 2 months ago useMediaLibrary.js 2 months ago useMediaList.ts 1 month ago usePerformanceSettings.js 2 months ago useRegisterActivePage.js 2 months ago useSettingOption.js 2 months ago useSimpleSettingsPage.js 2 months ago useTopPerforming.js 2 months ago useTopVideosPaginated.js 2 months ago useUpgradeCTA.js 2 months ago useUserDetail.js 2 months 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