Merged in fix/consent (pull request #57)
fix: add checks to tracking consent Approved-by: Simon.Emanuelsson
This commit is contained in:
@@ -28,6 +28,9 @@ export default function RootLayout({
|
||||
id="Cookiebot"
|
||||
src="https://consent.cookiebot.com/uc.js"
|
||||
/>
|
||||
<Script id="ensure-datalayer">{`
|
||||
window.datalayer = window.datalayer || {}
|
||||
`}</Script>
|
||||
<AdobeScript />
|
||||
<VwoScript />
|
||||
</head>
|
||||
|
||||
@@ -64,10 +64,9 @@ export default function RootLayout({
|
||||
src="/_static/dist/js/main-ng.js?336b801d6b38eff10884"
|
||||
strategy="lazyOnload"
|
||||
/> */}
|
||||
<Script
|
||||
strategy="beforeInteractive"
|
||||
id="ensure-datalayer"
|
||||
>{`window.datalayer = window.datalayer || {}`}</Script>
|
||||
<Script id="ensure-datalayer">{`
|
||||
window.datalayer = window.datalayer || {}
|
||||
`}</Script>
|
||||
<AdobeScript />
|
||||
<VwoScript />
|
||||
</head>
|
||||
|
||||
@@ -42,8 +42,8 @@ function createPageObject(trackingData: TrackingData) {
|
||||
const sitesections = getSiteSections(segments)
|
||||
const { host: domain, href: fullurl, origin } = window.location
|
||||
const page_obj = {
|
||||
pagename: segments.join('|'),
|
||||
pagetype: 'contentpage',
|
||||
pagename: segments.join("|"),
|
||||
pagetype: "contentpage",
|
||||
pageurl: origin + trackingData.pathName,
|
||||
fullurl,
|
||||
createDate: trackingData.createdDate,
|
||||
@@ -66,11 +66,40 @@ export default function Tracking({ pageData }: TrackingProps) {
|
||||
const queryString = useSearchParams().toString()
|
||||
|
||||
useEffect(() => {
|
||||
const trackingData = { ...pageData, pathName, queryString }
|
||||
const pageObject = createPageObject(trackingData)
|
||||
if (window.datalayer) {
|
||||
const trackingData = { ...pageData, pathName, queryString }
|
||||
const pageObject = createPageObject(trackingData)
|
||||
|
||||
window.datalayer.page = pageObject
|
||||
window.datalayer.page = pageObject
|
||||
}
|
||||
}, [pathName, queryString, pageData])
|
||||
|
||||
useEffect(() => {
|
||||
// handle consent
|
||||
window.addEventListener(
|
||||
"CookiebotOnAccept",
|
||||
function CookiebotCallback_OnAccept(e) {
|
||||
if (window.Cookiebot?.changed && window.adobe) {
|
||||
if (
|
||||
window._satellite.cookie
|
||||
.get("CookieConsent")
|
||||
.includes("statistics:true")
|
||||
) {
|
||||
window.adobe.optIn.approve(
|
||||
window.adobe.OptInCategories.ANALYTICS,
|
||||
true
|
||||
)
|
||||
} else {
|
||||
window.adobe.optIn.deny(
|
||||
window.adobe.OptInCategories.ANALYTICS,
|
||||
true
|
||||
)
|
||||
}
|
||||
window.adobe.optIn.complete()
|
||||
}
|
||||
}
|
||||
)
|
||||
}, [])
|
||||
|
||||
return null
|
||||
}
|
||||
|
||||
10
types/window.d.ts
vendored
10
types/window.d.ts
vendored
@@ -1,3 +1,13 @@
|
||||
interface Window {
|
||||
datalayer: { [key: string]: any }
|
||||
_satellite: { cookie: { get: (s: string) => string } }
|
||||
adobe: {
|
||||
OptInCategories: { ANALYTICS: string }
|
||||
optIn: {
|
||||
approve: (s: string, b: boolean) => {}
|
||||
deny: (s: string, b: boolean) => {}
|
||||
complete: () => {}
|
||||
}
|
||||
}
|
||||
Cookiebot: { changed: boolean; consented: boolean }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user