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 / pages / settings / general / ContributePage.js
presto-player / src / admin / dashboard / pages / settings / general Last commit date
BrandingPage.js 1 month ago ContributePage.js 1 month ago CustomCssPage.js 1 month ago LicensePage.js 1 month ago MediaHubPage.js 1 month ago PresetsPage.js 1 month ago UninstallPage.js 1 month ago ViewingAnalyticsPage.js 1 month 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