Merged PR 1232: update ga4 consent

update ga4 consent

Related work items: #12123
This commit is contained in:
Robert Bond
2024-09-05 11:45:26 +00:00
4 changed files with 42 additions and 22 deletions
+1
View File
@@ -26,6 +26,7 @@ const CookieBanner = () => {
"usage": "accepted", "usage": "accepted",
"communications": "accepted", "communications": "accepted",
"settings": "accepted", "settings": "accepted",
"analytics_storage": "granted",
}; };
cookie.set("CookiePolicy", JSON.stringify(cookieStr).toString(), { cookie.set("CookiePolicy", JSON.stringify(cookieStr).toString(), {
+2
View File
@@ -20,6 +20,8 @@ const CookieManagementMain = (props) => {
Object.assign(values, { Object.assign(values, {
"essential": "accepted", "essential": "accepted",
"usage": usageState, "usage": usageState,
"analytics_storage":
usageState == "accepted" ? "granted" : "denied",
// "communications": communicationsState, // "communications": communicationsState,
"settings": settingsState, "settings": settingsState,
}); });
+31 -19
View File
@@ -1,38 +1,50 @@
import Script from "next/script"; import Script from "next/script";
import React, { Fragment } from "react"; import React, { Fragment } from "react";
import { GoogleTagManager } from "@next/third-parties/google"; import { GoogleTagManager, GoogleAnalytics } from "@next/third-parties/google";
export const Tracking = ({ googleTagManagerID, nonce }) => ( export const Tracking = ({ googleTagManagerID, nonce, cookieObj }) => {
<> return (
<Script <Fragment>
strategy="afterInteractive" <script
src={`https://www.googletagmanager.com/gtag/js?id=${googleTagManagerID}`} strategy="afterInteractive"
/> src={`https://www.googletagmanager.com/gtag/js?id=${googleTagManagerID}`}
<Script />
id="google-analytics" <script
strategy="afterInteractive" id="google-analytics"
dangerouslySetInnerHTML={{ strategy="afterInteractive"
__html: ` dangerouslySetInnerHTML={{
__html: `
window.dataLayer = window.dataLayer || []; window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);} function gtag(){dataLayer.push(arguments);}
gtag('js', new Date()); gtag('js', new Date());
gtag('consent', 'default', { gtag('consent', 'default', {
'analytics_storage': 'denied' 'analytics_storage': 'granted',
'ad_storage': 'denied',
'ad_user_data': 'denied',
'ad_personalization': 'denied'
}); });
gtag('config', '${googleTagManagerID}', { gtag('config', '${googleTagManagerID}', {
page_path: window.location.pathname, page_path: window.location.pathname,
}); });
gtag('consent', 'update', {'analytics_storage': '${
typeof cookieObj == "string" &&
JSON.parse(cookieObj).hasOwnProperty("analytics_storage")
? JSON.parse(cookieObj).analytics_storage
: "denied"
}'});
`, `,
}} }}
/> />
{/* <GoogleAnalytics gaId={googleTagManagerID} /> */} {/* <GoogleAnalytics gaId={googleTagManagerID} /> */}
{/* <GoogleTagManager gtmId={googleTagManagerID} /> */} {/* <GoogleTagManager gtmId={googleTagManagerID} /> */}
</> </Fragment>
); );
};
export const TrackingNoScript = ({ googleTagManagerID }) => ( export const TrackingNoScript = ({ googleTagManagerID }) => (
<Fragment> <Fragment>
+8 -3
View File
@@ -21,16 +21,19 @@ class MyDocument extends Document {
useGATracking = false; useGATracking = false;
} }
const cookieObj = ctx.req.cookies.CookiePolicy || {};
console.log("useGATracking: ", useGATracking);
setCookie(ctx, "pedw_locale", ctx.locale, { setCookie(ctx, "pedw_locale", ctx.locale, {
path: "/", path: "/",
}); });
return { ...initialProps, useGATracking }; return { ...initialProps, useGATracking, cookieObj };
} }
render() { render() {
const googleTagManagerID = process.env.GOOGLE_TAG_MANAGER || null; const googleTagManagerID = process.env.GOOGLE_TAG_MANAGER || null;
const { useGATracking, locale } = this.props; const { useGATracking, locale, cookieObj } = this.props;
const generatedNonce = nanoid(); const generatedNonce = nanoid();
@@ -51,10 +54,12 @@ class MyDocument extends Document {
<meta httpEquiv="Content-Security-Policy" content={csp} /> <meta httpEquiv="Content-Security-Policy" content={csp} />
{useGATracking && ( {useGATracking && (
<Tracking <Tracking
googleTagManagerID="G-GTWW3JT03Z" googleTagManagerID={"G-GTWW3JT03Z"}
nonce={generatedNonce} nonce={generatedNonce}
cookieObj={cookieObj}
/> />
)} )}
{/* <GoogleAnalytics gaId={googleTagManagerID} /> */} {/* <GoogleAnalytics gaId={googleTagManagerID} /> */}
</Head> </Head>
<body className="js-enabled"> <body className="js-enabled">