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"
|
id="Cookiebot"
|
||||||
src="https://consent.cookiebot.com/uc.js"
|
src="https://consent.cookiebot.com/uc.js"
|
||||||
/>
|
/>
|
||||||
|
<Script id="ensure-datalayer">{`
|
||||||
|
window.datalayer = window.datalayer || {}
|
||||||
|
`}</Script>
|
||||||
<AdobeScript />
|
<AdobeScript />
|
||||||
<VwoScript />
|
<VwoScript />
|
||||||
</head>
|
</head>
|
||||||
|
|||||||
@@ -64,10 +64,9 @@ export default function RootLayout({
|
|||||||
src="/_static/dist/js/main-ng.js?336b801d6b38eff10884"
|
src="/_static/dist/js/main-ng.js?336b801d6b38eff10884"
|
||||||
strategy="lazyOnload"
|
strategy="lazyOnload"
|
||||||
/> */}
|
/> */}
|
||||||
<Script
|
<Script id="ensure-datalayer">{`
|
||||||
strategy="beforeInteractive"
|
window.datalayer = window.datalayer || {}
|
||||||
id="ensure-datalayer"
|
`}</Script>
|
||||||
>{`window.datalayer = window.datalayer || {}`}</Script>
|
|
||||||
<AdobeScript />
|
<AdobeScript />
|
||||||
<VwoScript />
|
<VwoScript />
|
||||||
</head>
|
</head>
|
||||||
|
|||||||
@@ -42,8 +42,8 @@ function createPageObject(trackingData: TrackingData) {
|
|||||||
const sitesections = getSiteSections(segments)
|
const sitesections = getSiteSections(segments)
|
||||||
const { host: domain, href: fullurl, origin } = window.location
|
const { host: domain, href: fullurl, origin } = window.location
|
||||||
const page_obj = {
|
const page_obj = {
|
||||||
pagename: segments.join('|'),
|
pagename: segments.join("|"),
|
||||||
pagetype: 'contentpage',
|
pagetype: "contentpage",
|
||||||
pageurl: origin + trackingData.pathName,
|
pageurl: origin + trackingData.pathName,
|
||||||
fullurl,
|
fullurl,
|
||||||
createDate: trackingData.createdDate,
|
createDate: trackingData.createdDate,
|
||||||
@@ -66,11 +66,40 @@ export default function Tracking({ pageData }: TrackingProps) {
|
|||||||
const queryString = useSearchParams().toString()
|
const queryString = useSearchParams().toString()
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const trackingData = { ...pageData, pathName, queryString }
|
if (window.datalayer) {
|
||||||
const pageObject = createPageObject(trackingData)
|
const trackingData = { ...pageData, pathName, queryString }
|
||||||
|
const pageObject = createPageObject(trackingData)
|
||||||
|
|
||||||
window.datalayer.page = pageObject
|
window.datalayer.page = pageObject
|
||||||
|
}
|
||||||
}, [pathName, queryString, pageData])
|
}, [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
|
return null
|
||||||
}
|
}
|
||||||
|
|||||||
10
types/window.d.ts
vendored
10
types/window.d.ts
vendored
@@ -1,3 +1,13 @@
|
|||||||
interface Window {
|
interface Window {
|
||||||
datalayer: { [key: string]: any }
|
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