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