Files
web/apps/scandic-web/components/RouteChange.tsx
Anton Gunnarsson 87402a2092 Merged in feat/sw-2873-move-selecthotel-to-booking-flow (pull request #2727)
feat(SW-2873): Move select-hotel to booking flow

* crude setup of select-hotel in partner-sas

* wip

* Fix linting

* restructure tracking files

* Remove dependency on trpc in tracking hooks

* Move pageview tracking to common

* Fix some lint and import issues

* Add AlternativeHotelsPage

* Add SelectHotelMapPage

* Add AlternativeHotelsMapPage

* remove next dependency in tracking store

* Remove dependency on react in tracking hooks

* move isSameBooking to booking-flow

* Inject searchParamsComparator into tracking store

* Move useTrackHardNavigation to common

* Move useTrackSoftNavigation to common

* Add TrackingSDK to partner-sas

* call serverclient in layout

* Remove unused css

* Update types

* Move HotelPin type

* Fix todos

* Merge branch 'master' into feat/sw-2873-move-selecthotel-to-booking-flow

* Merge branch 'master' into feat/sw-2873-move-selecthotel-to-booking-flow

* Fix component


Approved-by: Joakim Jäderberg
2025-09-01 08:37:00 +00:00

61 lines
1.6 KiB
TypeScript

"use client"
import { usePathname, useSearchParams } from "next/navigation"
import { startTransition, useEffect } from "react"
import { isSameBookingWidgetParams } from "@scandic-hotels/booking-flow/utils/isSameBooking"
import useRouterTransitionStore from "@scandic-hotels/common/stores/router-transition"
import useTrackingStore from "@scandic-hotels/common/stores/tracking"
import useLang from "@/hooks/useLang"
import { trackPageViewStart } from "@/utils/tracking"
export default function RouteChange() {
const pathName = usePathname()
const searchParams = useSearchParams()
const currentLang = useLang()
const {
setInitialPageLoadTime,
updateRouteInfo,
hasPathOrLangChanged,
hasBookingFlowParamsChanged,
} = useTrackingStore()
const { startRouterTransition } = useRouterTransitionStore()
useEffect(() => {
if (pathName.includes("payment-callback")) {
return
}
if (hasPathOrLangChanged()) {
// Scroll to top on page load whenever page is navigated to new URL (page)
window.scrollTo({ top: 0, left: 0, behavior: "instant" })
}
updateRouteInfo(pathName, currentLang, searchParams)
if (
hasPathOrLangChanged() ||
hasBookingFlowParamsChanged(isSameBookingWidgetParams)
) {
setInitialPageLoadTime(Date.now())
trackPageViewStart()
startTransition(() => {
startRouterTransition()
})
}
}, [
pathName,
searchParams,
currentLang,
updateRouteInfo,
hasPathOrLangChanged,
hasBookingFlowParamsChanged,
setInitialPageLoadTime,
startRouterTransition,
])
return null
}