PluginProbe ʕ •ᴥ•ʔ
Presto Player / 4.3.3
Presto Player v4.3.3
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 / pages / settings / general / UninstallPage.js
presto-player / src / admin / dashboard / pages / settings / general Last commit date
BrandingPage.js 2 months ago ContributePage.js 2 months ago CustomCssPage.js 2 months ago LicensePage.js 2 months ago MediaHubPage.js 2 months ago PresetsPage.js 2 months ago UninstallPage.js 2 months ago ViewingAnalyticsPage.js 2 months ago
UninstallPage.js
95 lines
1 import { __ } from '@wordpress/i18n';
2 import { useCallback, useState } from 'react';
3 import { Container, Switch, toast } from '@bsf/force-ui';
4 import SettingsPageShell from '../shared/SettingsPageShell';
5 import SectionCard from '../shared/SectionCard';
6 import ConfirmDialog from '../shared/ConfirmDialog';
7 import useSettingOption from '../../../hooks/useSettingOption';
8 import useRegisterActivePage from '../../../hooks/useRegisterActivePage';
9 import { OPTION_KEYS } from '../config';
10
11 const DEFAULT_UNINSTALL = { uninstall_data: false };
12
13 const UninstallPage = ( { registerActivePage } ) => {
14 const { data, setData, save, reset, isDirty, isSaving, isLoading } =
15 useSettingOption( OPTION_KEYS.uninstall, DEFAULT_UNINSTALL );
16
17 const [ showConfirm, setShowConfirm ] = useState( false );
18
19 const handleToggle = ( val ) => {
20 if ( val ) {
21 setShowConfirm( true );
22 return;
23 }
24 setData( { uninstall_data: false } );
25 };
26
27 const handleConfirm = () => {
28 setShowConfirm( false );
29 setData( { uninstall_data: true } );
30 };
31
32 const handleSave = useCallback( async () => {
33 try {
34 await save();
35 toast.success( __( 'Settings saved.', 'presto-player' ), {
36 autoDismiss: 3000,
37 } );
38 } catch ( err ) {
39 toast.error( __( 'Could not save settings.', 'presto-player' ), {
40 autoDismiss: 5000,
41 } );
42 }
43 }, [ save ] );
44
45 useRegisterActivePage( registerActivePage, {
46 isDirty,
47 save: handleSave,
48 discard: reset,
49 } );
50
51 return (
52 <>
53 <SettingsPageShell
54 title={ __( 'Uninstall Options', 'presto-player' ) }
55 isDirty={ isDirty }
56 isSaving={ isSaving }
57 isLoading={ isLoading }
58 onSave={ handleSave }
59 >
60 <SectionCard>
61 <Container direction="column" className="gap-4">
62 <Switch
63 size="md"
64 value={ !! data?.uninstall_data }
65 onChange={ handleToggle }
66 label={ {
67 heading: __( 'Remove data on uninstall', 'presto-player' ),
68 description: __(
69 'This removes all data on uninstall.',
70 'presto-player'
71 ),
72 } }
73 />
74 </Container>
75 </SectionCard>
76 </SettingsPageShell>
77
78 <ConfirmDialog
79 open={ showConfirm }
80 title={ __( 'Remove all data?', 'presto-player' ) }
81 description={ __(
82 'Caution: This will permanently remove all plugin data on uninstall. This action is irreversible.',
83 'presto-player'
84 ) }
85 confirmLabel={ __( 'Yes, Remove Data', 'presto-player' ) }
86 confirmDestructive={ true }
87 onConfirm={ handleConfirm }
88 onCancel={ () => setShowConfirm( false ) }
89 />
90 </>
91 );
92 };
93
94 export default UninstallPage;
95