PluginProbe ʕ •ᴥ•ʔ
Presto Player / trunk
Presto Player vtrunk
4.4.1 4.4.0 4.3.3 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 / useAbilities.js
presto-player / src / admin / dashboard / hooks Last commit date
test 2 months ago useAbilities.js 1 week ago useCompleteOnboarding.js 2 months ago useDateRangePicker.js 3 months ago useEmail.ts 3 months ago useEngagementChartData.js 3 months ago useLicenseSettings.js 3 months ago useLink.js 3 months ago useMcpAdapterInstall.js 1 week ago useMediaDetail.js 3 months ago useMediaLibrary.js 3 months ago useMediaList.ts 3 months ago usePerformanceSettings.js 3 months ago useRegisterActivePage.js 3 months ago useSettingOption.js 1 week ago useSimpleSettingsPage.js 1 week ago useTopPerforming.js 3 months ago useTopVideosPaginated.js 3 months ago useUpgradeCTA.js 3 months ago useUserDetail.js 3 months ago
useAbilities.js
54 lines
1 import { useEffect, useState } from 'react';
2 import apiFetch from '@wordpress/api-fetch';
3
4 /**
5 * Fetches the registered abilities catalog from the read-only REST endpoint.
6 * Only runs when AI access is enabled (no point fetching when the feature is off).
7 *
8 * @param {boolean} enabled Whether AI access is on.
9 * @return {{abilities: Array, counts: Object, loading: boolean, error: any}} State.
10 */
11 const useAbilities = ( enabled ) => {
12 const [ abilities, setAbilities ] = useState( [] );
13 const [ counts, setCounts ] = useState( { total: 0, free: 0, pro: 0 } );
14 const [ loading, setLoading ] = useState( false );
15 const [ error, setError ] = useState( null );
16
17 useEffect( () => {
18 if ( ! enabled ) {
19 return undefined;
20 }
21
22 let active = true;
23 setLoading( true );
24 setError( null );
25
26 apiFetch( { path: '/presto-player/v1/abilities' } )
27 .then( ( res ) => {
28 if ( ! active ) {
29 return;
30 }
31 setAbilities( Array.isArray( res?.abilities ) ? res.abilities : [] );
32 setCounts( res?.counts || { total: 0, free: 0, pro: 0 } );
33 } )
34 .catch( ( err ) => {
35 if ( active ) {
36 setError( err );
37 }
38 } )
39 .finally( () => {
40 if ( active ) {
41 setLoading( false );
42 }
43 } );
44
45 return () => {
46 active = false;
47 };
48 }, [ enabled ] );
49
50 return { abilities, counts, loading, error };
51 };
52
53 export default useAbilities;
54