Feature/wrap logging * feat: change all logging to go through our own logger function so that we can control log levels * move packages/trpc to using our own logger * merge Approved-by: Linus Flood
52 lines
1.7 KiB
TypeScript
52 lines
1.7 KiB
TypeScript
"use client"
|
|
|
|
import { usePathname } from "next/navigation"
|
|
import { useCallback, useEffect } from "react"
|
|
|
|
import { logger } from "@scandic-hotels/common/logger"
|
|
|
|
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()
|
|
logger.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
|
|
}
|