fix: add datalayerExists check to Tracking useEffect

This commit is contained in:
Arvid Norlin
2024-02-15 19:52:27 +01:00
parent f97756bafe
commit effaec11e6

View File

@@ -6,7 +6,7 @@ import {
TrackingProps,
} from "@/types/components/tracking"
import { usePathname, useSearchParams } from "next/navigation"
import { useEffect } from "react"
import { useEffect, useState } from "react"
function createPageObject(trackingData: TrackingData) {
const [lang, ...segments] = trackingData.pathName
@@ -29,7 +29,7 @@ function createPageObject(trackingData: TrackingData) {
const sitesections = {} as SiteSectionObject
for (let i = 0; i < 6; i++) {
const key = ("sitesection" + (i + 1)) as keyof SiteSectionObject
sitesections[key] = segments.slice(0, i + 1).join("|")
if (i > 0 && !segments[i]) {
sitesections[key] = sitesections[key].concat(
@@ -64,11 +64,12 @@ function createPageObject(trackingData: TrackingData) {
export default function Tracking({ pageData }: TrackingProps) {
const pathName = usePathname()
const queryString = useSearchParams().toString()
const [datalayerExists, setDataLayerExists] = useState(false)
useEffect(() => {
console.log("EFFECT")
if (!window.datalayer) {
if (!datalayerExists) {
console.log(" if effect")
window.datalayer = {}
setDataLayerExists(true)
} else {
console.log("else effect")
const trackingData = { ...pageData, pathName, queryString }
@@ -85,7 +86,7 @@ export default function Tracking({ pageData }: TrackingProps) {
// datalayer.user = user_obj;
}
}, [pathName, queryString, pageData])
}, [pathName, queryString, pageData, datalayerExists])
return null
}