Merged in feat/sw-3322-move-base-tracking-to-common (pull request #2713)

feat(SW-3322): Move base tracking to common package

* Move base tracking to common package

* Update lock file


Approved-by: Joakim Jäderberg
This commit is contained in:
Anton Gunnarsson
2025-08-27 12:29:46 +00:00
parent 45a8fd8c43
commit e4a66499e5
25 changed files with 37 additions and 25 deletions

View File

@@ -2,4 +2,14 @@ import type { DataCache } from "./dataCache/Cache"
declare global {
var cacheClient: Promise<DataCache> | undefined
interface Window {
dataLayer: {
[key: string]: any
push: (...args: unknown) => void
}
adobeDataLayer: {
push: (...args: unknown) => void
}
}
}

View File

@@ -0,0 +1,22 @@
import { nanoid } from "nanoid"
import { useMemo } from "react"
export const SESSION_ID_KEY_NAME = "web_sessionId"
export function useSessionId(): string | null {
const sessionId = useMemo(() => {
if (typeof window === "undefined") {
// Return null if running on the server
return null
}
let currentSessionId = sessionStorage.getItem(SESSION_ID_KEY_NAME)
if (!currentSessionId) {
currentSessionId = nanoid()
sessionStorage.setItem(SESSION_ID_KEY_NAME, currentSessionId)
}
return currentSessionId
}, [])
return sessionId
}

View File

@@ -15,6 +15,7 @@
"./dataCache": "./dataCache/index.ts",
"./telemetry": "./telemetry/index.ts",
"./tokenManager": "./tokenManager/index.ts",
"./tracking/base": "./tracking/base.ts",
"./dt": "./dt/dt.ts",
"./logger": "./logger/index.ts",
"./logger/*": "./logger/*.ts",
@@ -52,6 +53,7 @@
"deepmerge": "^4.3.1",
"flat": "^6.0.1",
"lodash-es": "^4.17.21",
"nanoid": "^5.1.5",
"zod": "^3.24.4",
"zustand": "^4.5.2"
},

View File

@@ -0,0 +1,41 @@
"use client"
import { SESSION_ID_KEY_NAME } from "../hooks/useSessionId"
import { logger } from "../logger"
export function trackEvent(data: any) {
if (
typeof window !== "undefined" &&
window.adobeDataLayer &&
window.dataLayer
) {
let sessionId = ""
try {
sessionId = sessionStorage.getItem(SESSION_ID_KEY_NAME) ?? ""
} catch (e) {
logger.error("Error getting sessionId from sessionStorage", e)
}
data = {
...data,
pageInfo: { ...data?.pageInfo, siteVersion: "new-web", sessionId },
}
window.adobeDataLayer.push(data)
window.dataLayer.push(data)
}
}
export function trackClick(
name: string,
additionalParams?: Record<string, string>
) {
trackEvent({
event: "linkClick",
cta: {
...additionalParams,
name,
},
})
}