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 / useSimpleSettingsPage.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
useSimpleSettingsPage.js
49 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 const useSimpleSettingsPage = ( optionKey, defaults, registerActivePage ) => {
17 const { data, setData, save, reset, isDirty, isSaving, isLoading } =
18 useSettingOption( optionKey, defaults );
19
20 const update = useCallback(
21 ( patch ) =>
22 setData( ( prev ) => ( { ...( prev || defaults ), ...patch } ) ),
23 [ setData, defaults ]
24 );
25
26 const handleSave = useCallback( async () => {
27 try {
28 await save();
29 toast.success( __( 'Settings saved.', 'presto-player' ), {
30 autoDismiss: 3000,
31 } );
32 } catch ( err ) {
33 toast.error( __( 'Could not save settings.', 'presto-player' ), {
34 autoDismiss: 5000,
35 } );
36 }
37 }, [ save ] );
38
39 useRegisterActivePage( registerActivePage, {
40 isDirty,
41 save: handleSave,
42 discard: reset,
43 } );
44
45 return { data, update, handleSave, isDirty, isSaving, isLoading };
46 };
47
48 export default useSimpleSettingsPage;
49