fix: adjust datalayer behavior

This commit is contained in:
Arvid Norlin
2024-02-16 15:14:16 +01:00
parent 8b87267eda
commit 60e2c8ae45
3 changed files with 22 additions and 22 deletions

View File

@@ -57,12 +57,12 @@ export default function RootLayout({
data-cookieconsent="ignore" data-cookieconsent="ignore"
src="/Static/dist/js/ng/main.js?1705409330990" src="/Static/dist/js/ng/main.js?1705409330990"
/> />
<AdobeScript />
{/* <Script {/* <Script
data-cookieconsent="ignore" data-cookieconsent="ignore"
src="/Static/dist/js/main-ng.js?336b801d6b38eff10884" src="/Static/dist/js/main-ng.js?336b801d6b38eff10884"
strategy="lazyOnload" strategy="lazyOnload"
/> */} /> */}
<AdobeScript />
</head> </head>
<body> <body>
<LangPopup lang={params.lang} /> <LangPopup lang={params.lang} />

View File

@@ -11,5 +11,13 @@ const scriptScrs = {
} }
export default function AdobeScript() { export default function AdobeScript() {
return <Script src={scriptScrs[env.NODE_ENV]} /> return (
<>
<Script
strategy="beforeInteractive"
id="ensure-datalayer"
>{`window.datalayer = window.datalayer || {}`}</Script>
<Script src={scriptScrs[env.NODE_ENV]} />
</>
)
} }

View File

@@ -6,7 +6,7 @@ import {
TrackingProps, TrackingProps,
} from "@/types/components/tracking" } from "@/types/components/tracking"
import { usePathname, useSearchParams } from "next/navigation" import { usePathname, useSearchParams } from "next/navigation"
import { useEffect, useState } from "react" import { useEffect } from "react"
function createPageObject(trackingData: TrackingData) { function createPageObject(trackingData: TrackingData) {
const [lang, ...segments] = trackingData.pathName const [lang, ...segments] = trackingData.pathName
@@ -64,15 +64,8 @@ function createPageObject(trackingData: TrackingData) {
export default function Tracking({ pageData }: TrackingProps) { export default function Tracking({ pageData }: TrackingProps) {
const pathName = usePathname() const pathName = usePathname()
const queryString = useSearchParams().toString() const queryString = useSearchParams().toString()
const [datalayerExists, setDataLayerExists] = useState(
typeof window !== "undefined" && !!window.datalayer
)
useEffect(() => { useEffect(() => {
if (!datalayerExists) {
window.datalayer = {}
setDataLayerExists(true)
} else {
const trackingData = { ...pageData, pathName, queryString } const trackingData = { ...pageData, pathName, queryString }
const pageObject = createPageObject(trackingData) const pageObject = createPageObject(trackingData)
@@ -86,8 +79,7 @@ export default function Tracking({ pageData }: TrackingProps) {
// } // }
// datalayer.user = user_obj; // datalayer.user = user_obj;
} }, [pathName, queryString, pageData])
}, [pathName, queryString, pageData, datalayerExists])
return null return null
} }