PluginProbe ʕ •ᴥ•ʔ
Presto Player / 4.3.3
Presto Player v4.3.3
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 / pages / settings / general / ContributePage.js
presto-player / src / admin / dashboard / pages / settings / general Last commit date
BrandingPage.js 3 months ago ContributePage.js 3 months ago CustomCssPage.js 3 months ago LicensePage.js 3 months ago MediaHubPage.js 3 months ago PresetsPage.js 3 months ago UninstallPage.js 3 months ago ViewingAnalyticsPage.js 3 months ago
ContributePage.js
79 lines
1 import { __ } from '@wordpress/i18n';
2 import { useCallback } 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 useSettingOption from '../../../hooks/useSettingOption';
7 import useRegisterActivePage from '../../../hooks/useRegisterActivePage';
8 import { OPTION_KEYS } from '../config';
9
10 const ContributePage = ( { registerActivePage } ) => {
11 const { data, setData, save, reset, isDirty, isSaving, isLoading } =
12 useSettingOption( OPTION_KEYS.usageOptin, 'no' );
13
14 const isEnabled = data === 'yes';
15
16 const handleSave = useCallback( async () => {
17 try {
18 await save();
19 toast.success( __( 'Settings saved.', 'presto-player' ), {
20 autoDismiss: 3000,
21 } );
22 } catch ( err ) {
23 toast.error( __( 'Could not save settings.', 'presto-player' ), {
24 autoDismiss: 5000,
25 } );
26 }
27 }, [ save ] );
28
29 useRegisterActivePage( registerActivePage, {
30 isDirty,
31 save: handleSave,
32 discard: reset,
33 } );
34
35 return (
36 <SettingsPageShell
37 title={ __( 'Contribute', 'presto-player' ) }
38 isDirty={ isDirty }
39 isSaving={ isSaving }
40 isLoading={ isLoading }
41 onSave={ handleSave }
42 >
43 <SectionCard>
44 <Container direction="column" className="gap-4">
45 <Switch
46 size="md"
47 value={ isEnabled }
48 onChange={ ( val ) => setData( val ? 'yes' : 'no' ) }
49 label={ {
50 heading: __(
51 'Help shape the future of Presto Player.',
52 'presto-player'
53 ),
54 description: (
55 <span className="block">
56 { __(
57 'Share how you use the plugin so we can build features that matter, fix issues faster, and make smarter decisions.',
58 'presto-player'
59 ) }{ ' ' }
60 <a
61 href="https://prestoplayer.com/share-usage-data/"
62 target="_blank"
63 rel="noreferrer"
64 className="text-brand-primary-600 hover:underline"
65 >
66 { __( 'Learn More', 'presto-player' ) }
67 </a>
68 </span>
69 ),
70 } }
71 />
72 </Container>
73 </SectionCard>
74 </SettingsPageShell>
75 );
76 };
77
78 export default ContributePage;
79