Files
web/packages/tracking/lib/useTrackHardNavigationBasic.ts
Linus Flood fdf124bd0c Merged in feat/book-504-at-pageview (pull request #3099)
Feat(BOOK-504): basic pageview event

* fix

* Cleanup


Approved-by: Joakim Jäderberg
2025-11-07 07:57:19 +00:00

63 lines
1.4 KiB
TypeScript

"use client"
import { useSession } from "next-auth/react"
import { useEffect } from "react"
import { useSessionId } from "@scandic-hotels/common/hooks/useSessionId"
import { isValidSession } from "@scandic-hotels/trpc/utils/session"
import { createSDKPageObject, trackPageView } from "./pageview"
import type { TrackingSDKPageData } from "./types"
type TrackingSDKProps = {
pageData: TrackingSDKPageData
pathName: string
}
let hasTrackedHardNavigationBasic = false
export const useTrackHardNavigationBasic = ({
pageData,
pathName,
}: TrackingSDKProps) => {
const sessionId = useSessionId()
const { data: session } = useSession()
const validSession = isValidSession(session)
useEffect(() => {
if (hasTrackedHardNavigationBasic) return
trackBasicPageView({
pathName,
sessionId,
pageData,
validSession,
})
hasTrackedHardNavigationBasic = true
}, [pathName, pageData, sessionId, validSession])
}
const trackBasicPageView = async ({
pathName,
sessionId,
pageData,
validSession,
}: {
pathName: string
sessionId: string | null
pageData: TrackingSDKProps["pageData"]
validSession: boolean
}) => {
const trackingData = { ...pageData, pathName, sessionId }
const pageObject = createSDKPageObject(trackingData)
trackPageView({
event: "pageViewBasic",
pageInfo: pageObject,
userInfo: {
loginStatus: validSession ? "logged in" : "Non-logged in",
},
})
}