Files
web/components/CookieBot/index.tsx
Linus Flood dc105992c5 Merged in feat/sentry-errors-fixes (pull request #1216)
Removed VWO and cookie-bot

* Removed VWO and cookie-bot

* Merged master into feat/sentry-errors-fixes


Approved-by: Joakim Jäderberg
2025-01-27 12:32:36 +00:00

50 lines
1.7 KiB
TypeScript

"use client"
import { usePathname } from "next/navigation"
import { useCallback, useEffect } from "react"
import { webviews } from "@/constants/routes/webviews"
export default function CookieBotConsent() {
const pathName = usePathname()
const isWebview = webviews.includes(pathName)
const CookiebotCallbackOnAccept = useCallback(() => {
if (window.Cookiebot?.changed && window.adobe) {
const cookie = window._satellite?.cookie?.get("CookieConsent")
// For webviews we always set the consent to true since we don't have cookiebot.
if (isWebview) {
window.adobe.optIn.approve(window.adobe.OptInCategories.ANALYTICS, true)
} else if (cookie?.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()
console.warn("window.load event explicitly dispatched.")
window.dispatchEvent(new Event("load"))
}
}, [isWebview])
function CookebotCallbackOnDecline() {
if (window.Cookiebot?.changed && window.adobe) {
window.adobe.optIn.deny(window.adobe.OptInCategories.ANALYTICS, true)
}
}
useEffect(() => {
// handle consent
window.addEventListener("CookiebotOnAccept", CookiebotCallbackOnAccept)
window.addEventListener("CookiebotOnDecline", CookebotCallbackOnDecline)
return () => {
window.removeEventListener("CookiebotOnAccept", CookiebotCallbackOnAccept)
window.removeEventListener(
"CookiebotOnDecline",
CookebotCallbackOnDecline
)
}
}, [CookiebotCallbackOnAccept])
return null
}