Files
web/packages/tracking/lib/useTrackHardNavigationBasic.ts
Linus Flood ce3412b29f Merged in feat/sw-3601-hookfix (pull request #3113)
Feat(SW-3601): useIsUserLoggedIn needs to check webview token 

* fix(SW-3601): useIsUserLoggedIn needs to check webview token

* Check if we have webview token as well

* .


Approved-by: Joakim Jäderberg
2025-11-10 13:06:51 +00:00

66 lines
1.6 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)
const hasWebviewToken = global?.document?.cookie?.includes("webviewToken=")
const isUserLoggedIn = validSession || !!hasWebviewToken
useEffect(() => {
if (hasTrackedHardNavigationBasic) return
trackBasicPageView({
pathName,
sessionId,
pageData,
isUserLoggedIn,
})
hasTrackedHardNavigationBasic = true
}, [pathName, pageData, sessionId, isUserLoggedIn])
}
const trackBasicPageView = async ({
pathName,
sessionId,
pageData,
isUserLoggedIn,
}: {
pathName: string
sessionId: string | null
pageData: TrackingSDKProps["pageData"]
isUserLoggedIn: boolean
}) => {
const trackingData = { ...pageData, pathName, sessionId }
const pageObject = createSDKPageObject(trackingData)
trackPageView({
event: "pageViewBasic",
pageInfo: pageObject,
userInfo: {
loginStatus: isUserLoggedIn ? "logged in" : "Non-logged in",
},
})
}