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 / useSimpleSettingsPage.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
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