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 |