PluginProbe ʕ •ᴥ•ʔ
Presto Player / 4.5.0
Presto Player v4.5.0
4.5.0 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 / useSimpleSettingsPage.js
presto-player / src / admin / dashboard / hooks Last commit date
test 2 months ago useAbilities.js 2 weeks 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 2 weeks 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 2 weeks ago useSimpleSettingsPage.js 2 weeks ago useTopPerforming.js 3 months ago useTopVideosPaginated.js 3 months ago useUpgradeCTA.js 3 months ago useUserDetail.js 3 months ago
useSimpleSettingsPage.js
61 lines
1 import { __ } from '@wordpress/i18n';
2 import { useCallback } from 'react';
3 import { toast } from '@bsf/force-ui';
4 import useSettingOption from './useSettingOption';
5 import useRegisterActivePage from './useRegisterActivePage';
6
7 /**
8 * Collapses the "single-option page" ceremony into one call: option read,
9 * patch-style update, save-with-toast, and registration with the nav guard.
10 *
11 * Used by pages that have exactly one option and the canonical save/discard
12 * flow (YouTube, Google Analytics, Performance, etc.). Pages with multi-option
13 * combined saves (Bunny, Presets) or non-option REST flows (License,
14 * EmailCapture, Webhooks) talk to useSettingOption / useSettingsData directly.
15 *
16 * @param {string} optionKey Option name to read and write.
17 * @param {Object} defaults Shape to fall back to before the option loads.
18 * @param {Function} registerActivePage Nav-guard registration callback from the page.
19 */
20 const useSimpleSettingsPage = ( optionKey, defaults, registerActivePage ) => {
21 const {
22 data,
23 savedData,
24 setData,
25 save,
26 reset,
27 isDirty,
28 isSaving,
29 isLoading,
30 } = useSettingOption( optionKey, defaults );
31
32 const update = useCallback(
33 ( patch ) =>
34 setData( ( prev ) => ( { ...( prev || defaults ), ...patch } ) ),
35 [ setData, defaults ]
36 );
37
38 const handleSave = useCallback( async () => {
39 try {
40 await save();
41 toast.success( __( 'Settings saved.', 'presto-player' ), {
42 autoDismiss: 3000,
43 } );
44 } catch ( err ) {
45 toast.error( __( 'Could not save settings.', 'presto-player' ), {
46 autoDismiss: 5000,
47 } );
48 }
49 }, [ save ] );
50
51 useRegisterActivePage( registerActivePage, {
52 isDirty,
53 save: handleSave,
54 discard: reset,
55 } );
56
57 return { data, savedData, update, handleSave, isDirty, isSaving, isLoading };
58 };
59
60 export default useSimpleSettingsPage;
61