"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 = typeof document !== "undefined" && 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", }, }) }