Merged in feat/tracking-sessionId (pull request #1653)

Feat(tracking): add sessionId to all events. Fixed some invalid session bugs

* Feat(tracking): add sessionId to all events. Fixed some invalid session bugs


Approved-by: Anton Gunnarsson
This commit is contained in:
Linus Flood
2025-03-27 10:42:24 +00:00
parent 5de2a993a7
commit 0f9c9c2af8
5 changed files with 20 additions and 9 deletions

View File

@@ -1,7 +1,7 @@
import { nanoid } from "nanoid"
import { useMemo } from "react"
const storageKey = "web_sessionId"
export const SESSION_ID_KEY_NAME = "web_sessionId"
export function useSessionId(): string | null {
const sessionId = useMemo(() => {
@@ -10,10 +10,10 @@ export function useSessionId(): string | null {
return null
}
let currentSessionId = sessionStorage.getItem(storageKey)
let currentSessionId = sessionStorage.getItem(SESSION_ID_KEY_NAME)
if (!currentSessionId) {
currentSessionId = nanoid()
sessionStorage.setItem(storageKey, currentSessionId)
sessionStorage.setItem(SESSION_ID_KEY_NAME, currentSessionId)
}
return currentSessionId
}, [])

View File

@@ -6,6 +6,7 @@ import { getPublicNextURL } from "@/server/utils"
import { auth } from "@/auth"
import { findLang } from "@/utils/languages"
import { isValidSession } from "@/utils/session"
import { getDefaultRequestHeaders } from "./utils"
@@ -16,7 +17,7 @@ export const middleware: NextMiddleware = async (request) => {
const isRedemption =
request.nextUrl.searchParams.get(SEARCHTYPE) === REDEMPTION
const session = await auth() // Check for user session
if (isRedemption && (!session || session?.error)) {
if (isRedemption && !isValidSession(session)) {
const lang = findLang(request.nextUrl.pathname)!
const nextUrlPublic = getPublicNextURL(request)
const headers = new Headers()

View File

@@ -5,6 +5,7 @@ import * as api from "@/lib/api"
import { getVerifiedUser } from "@/server/routers/user/query"
import { router, safeProtectedServiceProcedure } from "@/server/trpc"
import { isValidSession } from "@/utils/session"
import { getFriendsMembership } from "@/utils/user"
import {
@@ -77,7 +78,7 @@ const removePackageFailCounter = meter.createCounter(
async function getMembershipNumber(
session: Session | null
): Promise<string | undefined> {
if (!session) return undefined
if (!isValidSession(session)) return undefined
const verifiedUser = await getVerifiedUser({ session })
if (!verifiedUser || "error" in verifiedUser) {

View File

@@ -1,6 +1,17 @@
import { SESSION_ID_KEY_NAME } from "@/hooks/useSessionId"
export function trackEvent(data: any) {
if (typeof window !== "undefined" && window.adobeDataLayer) {
data = { ...data, siteVersion: "new-web" }
let sessionId = ""
try {
sessionId = sessionStorage.getItem(SESSION_ID_KEY_NAME) ?? ""
} catch (e) {
console.error("Error getting sessionId from sessionStorage", e)
}
data = { ...data, siteVersion: "new-web", sessionId }
window.adobeDataLayer.push(data)
}
}

View File

@@ -14,9 +14,7 @@ export function trackPageViewStart() {
}
export function trackPageView(data: any) {
if (typeof window !== "undefined" && window.adobeDataLayer) {
window.adobeDataLayer.push(data)
}
trackEvent(data)
}
export function createSDKPageObject(