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 / integrations / GoogleAnalyticsPage.js
presto-player / src / admin / dashboard / pages / settings / integrations Last commit date
BunnyNetPage.js 1 month ago EmailCapturePage.js 1 month ago GoogleAnalyticsPage.js 1 month ago WebhooksPage.js 1 month ago YouTubePage.js 1 month ago
GoogleAnalyticsPage.js
98 lines
1 import { __ } from '@wordpress/i18n';
2 import { Container, Switch, Label, Input } from '@bsf/force-ui';
3 import SettingsPageShell from '../shared/SettingsPageShell';
4 import SectionCard from '../shared/SectionCard';
5 import ProGate from '../shared/ProGate';
6 import useSimpleSettingsPage from '../../../hooks/useSimpleSettingsPage';
7 import { OPTION_KEYS } from '../config';
8
9 const DEFAULTS = {
10 enable: false,
11 use_existing_tag: false,
12 measurement_id: '',
13 };
14
15 const isPremium = window.prestoPlayer?.isPremium ?? false;
16
17 const GoogleAnalyticsPage = ( { registerActivePage } ) => {
18 const { data, update, handleSave, isDirty, isSaving, isLoading } =
19 useSimpleSettingsPage(
20 OPTION_KEYS.googleAnalytics,
21 DEFAULTS,
22 registerActivePage
23 );
24
25 return (
26 <SettingsPageShell
27 title={ __( 'Google Analytics', 'presto-player' ) }
28 isDirty={ isDirty }
29 isSaving={ isSaving }
30 isLoading={ isLoading }
31 onSave={ handleSave }
32 >
33 <SectionCard>
34 <ProGate
35 enabled={ isPremium }
36 title={ __( 'Google Analytics', 'presto-player' ) }
37 description={ __(
38 'Send media events directly to your Google Analytics account.',
39 'presto-player'
40 ) }
41 >
42 <Container direction="column" className="gap-4">
43 <Switch
44 size="md"
45 value={ !! data.enable }
46 onChange={ ( val ) => update( { enable: val } ) }
47 label={ {
48 heading: __( 'Enable', 'presto-player' ),
49 description: __(
50 'Send analytics events to your Google Analytics account.',
51 'presto-player'
52 ),
53 } }
54 />
55
56 { data.enable && (
57 <>
58 <Switch
59 size="md"
60 value={ !! data.use_existing_tag }
61 onChange={ ( val ) => update( { use_existing_tag: val } ) }
62 label={ {
63 heading: __( 'Use existing on-page tag?', 'presto-player' ),
64 description: __(
65 "Should we use an existing Google Analytics (v4) tag? If not, we'll output one for you.",
66 'presto-player'
67 ),
68 } }
69 />
70
71 <Container.Item className="flex flex-col gap-2">
72 <Label size="sm">
73 { __( 'Measurement ID', 'presto-player' ) }
74 </Label>
75 <Input
76 size="md"
77 value={ data.measurement_id || '' }
78 onChange={ ( val ) => update( { measurement_id: val } ) }
79 placeholder="G-XXXXXXXXXX"
80 />
81 <Label size="xs" variant="help">
82 { __(
83 'Enter a Google Analytics Measurement ID, which can be found on your analytics admin page.',
84 'presto-player'
85 ) }
86 </Label>
87 </Container.Item>
88 </>
89 ) }
90 </Container>
91 </ProGate>
92 </SectionCard>
93 </SettingsPageShell>
94 );
95 };
96
97 export default GoogleAnalyticsPage;
98