Suspense on <TrackingSDK>
This commit is contained in:
@@ -1,3 +1,5 @@
|
|||||||
|
import { Suspense } from "react"
|
||||||
|
|
||||||
import { serverClient } from "@/lib/trpc/server"
|
import { serverClient } from "@/lib/trpc/server"
|
||||||
|
|
||||||
import Blocks from "@/components/Blocks"
|
import Blocks from "@/components/Blocks"
|
||||||
@@ -36,7 +38,9 @@ export default async function MyPages({
|
|||||||
<p>{intl.formatMessage({ id: "No content published" })}</p>
|
<p>{intl.formatMessage({ id: "No content published" })}</p>
|
||||||
)}
|
)}
|
||||||
</main>
|
</main>
|
||||||
|
<Suspense fallback={null}>
|
||||||
<TrackingSDK pageData={tracking} />
|
<TrackingSDK pageData={tracking} />
|
||||||
|
</Suspense>
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { differenceInCalendarDays, format, isWeekend } from "date-fns"
|
import { differenceInCalendarDays, format, isWeekend } from "date-fns"
|
||||||
|
import { Suspense } from "react"
|
||||||
|
|
||||||
import { getBookingConfirmation } from "@/lib/trpc/memoizedRequests"
|
import { getBookingConfirmation } from "@/lib/trpc/memoizedRequests"
|
||||||
|
|
||||||
@@ -73,10 +74,13 @@ export default async function BookingConfirmationPage({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
<Suspense fallback={null}>
|
||||||
<TrackingSDK
|
<TrackingSDK
|
||||||
pageData={initialPageTrackingData}
|
pageData={initialPageTrackingData}
|
||||||
hotelInfo={initialHotelsTrackingData}
|
hotelInfo={initialHotelsTrackingData}
|
||||||
/>
|
/>
|
||||||
|
</Suspense>
|
||||||
|
|
||||||
<BookingConfirmation
|
<BookingConfirmation
|
||||||
bookingConfirmationPromise={bookingConfirmationPromise}
|
bookingConfirmationPromise={bookingConfirmationPromise}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
import { Suspense } from "react"
|
||||||
|
|
||||||
import { Lang } from "@/constants/languages"
|
import { Lang } from "@/constants/languages"
|
||||||
import { env } from "@/env/server"
|
import { env } from "@/env/server"
|
||||||
|
|
||||||
@@ -32,7 +34,9 @@ export default function HotelReservationPage({ params }: PageArgs<LangParams>) {
|
|||||||
return (
|
return (
|
||||||
<div className={styles.page}>
|
<div className={styles.page}>
|
||||||
New booking flow! Please report errors/issues in Slack.
|
New booking flow! Please report errors/issues in Slack.
|
||||||
|
<Suspense fallback={null}>
|
||||||
<TrackingSDK pageData={pageTrackingData} />
|
<TrackingSDK pageData={pageTrackingData} />
|
||||||
|
</Suspense>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import { differenceInCalendarDays, format, isWeekend } from "date-fns"
|
import { differenceInCalendarDays, format, isWeekend } from "date-fns"
|
||||||
import { notFound } from "next/navigation"
|
import { notFound } from "next/navigation"
|
||||||
|
import { Suspense } from "react"
|
||||||
|
|
||||||
import { Lang } from "@/constants/languages"
|
import { Lang } from "@/constants/languages"
|
||||||
import { env } from "@/env/server"
|
import { env } from "@/env/server"
|
||||||
@@ -113,7 +114,12 @@ export default async function SelectHotelMapPage({
|
|||||||
filterList={filterList}
|
filterList={filterList}
|
||||||
cityCoordinates={cityCoordinates}
|
cityCoordinates={cityCoordinates}
|
||||||
/>
|
/>
|
||||||
<TrackingSDK pageData={pageTrackingData} hotelInfo={hotelsTrackingData} />
|
<Suspense fallback={null}>
|
||||||
|
<TrackingSDK
|
||||||
|
pageData={pageTrackingData}
|
||||||
|
hotelInfo={hotelsTrackingData}
|
||||||
|
/>
|
||||||
|
</Suspense>
|
||||||
</MapModal>
|
</MapModal>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -223,10 +223,12 @@ export default async function SelectHotelPage({
|
|||||||
)}
|
)}
|
||||||
<HotelCardListing hotelData={validHotels} />
|
<HotelCardListing hotelData={validHotels} />
|
||||||
</div>
|
</div>
|
||||||
|
<Suspense fallback={null}>
|
||||||
<TrackingSDK
|
<TrackingSDK
|
||||||
pageData={pageTrackingData}
|
pageData={pageTrackingData}
|
||||||
hotelInfo={hotelsTrackingData}
|
hotelInfo={hotelsTrackingData}
|
||||||
/>
|
/>
|
||||||
|
</Suspense>
|
||||||
</main>
|
</main>
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -30,17 +30,17 @@ export default async function SelectRatePage({
|
|||||||
}: PageArgs<LangParams & { section: string }, SelectRateSearchParams>) {
|
}: PageArgs<LangParams & { section: string }, SelectRateSearchParams>) {
|
||||||
setLang(params.lang)
|
setLang(params.lang)
|
||||||
|
|
||||||
const locations = await getLocations()
|
// const locations = await getLocations()
|
||||||
if (!locations || "error" in locations) {
|
// if (!locations || "error" in locations) {
|
||||||
return null
|
// return null
|
||||||
}
|
// }
|
||||||
const hotel = locations.data.find(
|
// const hotel = locations.data.find(
|
||||||
(location) =>
|
// (location) =>
|
||||||
"operaId" in location && location.operaId == searchParams.hotel
|
// "operaId" in location && location.operaId == searchParams.hotel
|
||||||
)
|
// )
|
||||||
if (!hotel) {
|
// if (!hotel) {
|
||||||
return notFound()
|
// return notFound()
|
||||||
}
|
// }
|
||||||
const selectRoomParams = new URLSearchParams(searchParams)
|
const selectRoomParams = new URLSearchParams(searchParams)
|
||||||
const selectRoomParamsObject =
|
const selectRoomParamsObject =
|
||||||
getHotelReservationQueryParams(selectRoomParams)
|
getHotelReservationQueryParams(selectRoomParams)
|
||||||
@@ -101,6 +101,7 @@ export default async function SelectRatePage({
|
|||||||
}
|
}
|
||||||
|
|
||||||
const hotelId = +searchParams.hotel
|
const hotelId = +searchParams.hotel
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<HotelInfoCard
|
<HotelInfoCard
|
||||||
@@ -122,7 +123,12 @@ export default async function SelectRatePage({
|
|||||||
childArray={children}
|
childArray={children}
|
||||||
/>
|
/>
|
||||||
</Suspense>
|
</Suspense>
|
||||||
<TrackingSDK pageData={pageTrackingData} hotelInfo={hotelsTrackingData} />
|
<Suspense fallback={null}>
|
||||||
|
<TrackingSDK
|
||||||
|
pageData={pageTrackingData}
|
||||||
|
hotelInfo={hotelsTrackingData}
|
||||||
|
/>
|
||||||
|
</Suspense>
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,7 +46,6 @@ export default function EnterDetailsTracking(props: Props) {
|
|||||||
roomRate,
|
roomRate,
|
||||||
packages,
|
packages,
|
||||||
} = useEnterDetailsStore((state) => state)
|
} = useEnterDetailsStore((state) => state)
|
||||||
const { getPageLoadTime, hasRun } = useTrackingStore()
|
|
||||||
const pathName = usePathname()
|
const pathName = usePathname()
|
||||||
const sessionId = useSessionId()
|
const sessionId = useSessionId()
|
||||||
|
|
||||||
@@ -95,11 +94,11 @@ export default function EnterDetailsTracking(props: Props) {
|
|||||||
...pageTrackingData,
|
...pageTrackingData,
|
||||||
sessionId,
|
sessionId,
|
||||||
pathName,
|
pathName,
|
||||||
pageLoadTime: getPageLoadTime(),
|
pageLoadTime: 0, // Yes, this is instant
|
||||||
}
|
}
|
||||||
const pageObject = createSDKPageObject(trackingData)
|
const pageObject = createSDKPageObject(trackingData)
|
||||||
return pageObject
|
return pageObject
|
||||||
}, [currentStep, getPageLoadTime, lang, pathName, sessionId])
|
}, [currentStep, lang, pathName, sessionId])
|
||||||
|
|
||||||
const hotelDetailsData = useMemo(() => {
|
const hotelDetailsData = useMemo(() => {
|
||||||
const isMember = true
|
const isMember = true
|
||||||
@@ -144,7 +143,7 @@ export default function EnterDetailsTracking(props: Props) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if (previousPathname.current !== pathName) {
|
//if (previousPathname.current !== pathName) {
|
||||||
console.log("TRACKING: Tracking RouterTransition pageViewEnd", pageObject)
|
console.log("TRACKING: Tracking RouterTransition pageViewEnd", pageObject)
|
||||||
console.log(
|
console.log(
|
||||||
"TRACKING: Tracking RouterTransition userData",
|
"TRACKING: Tracking RouterTransition userData",
|
||||||
@@ -160,7 +159,7 @@ export default function EnterDetailsTracking(props: Props) {
|
|||||||
userInfo: userTrackingData,
|
userInfo: userTrackingData,
|
||||||
hotelInfo: hotelDetailsData,
|
hotelInfo: hotelDetailsData,
|
||||||
})
|
})
|
||||||
}
|
//}
|
||||||
previousPathname.current = pathName // Update for next render
|
previousPathname.current = pathName // Update for next render
|
||||||
}, [userTrackingData, pageObject, hotelDetailsData, pathName])
|
}, [userTrackingData, pageObject, hotelDetailsData, pathName])
|
||||||
|
|
||||||
|
|||||||
@@ -285,10 +285,12 @@ export default async function StepPage({
|
|||||||
cancellationRule={roomAvailability.cancellationText}
|
cancellationRule={roomAvailability.cancellationText}
|
||||||
lang={lang}
|
lang={lang}
|
||||||
/>
|
/>
|
||||||
|
<Suspense fallback={null}>
|
||||||
<TrackingSDK
|
<TrackingSDK
|
||||||
pageData={initialPageTrackingData}
|
pageData={initialPageTrackingData}
|
||||||
hotelInfo={initialHotelsTrackingData}
|
hotelInfo={initialHotelsTrackingData}
|
||||||
/>
|
/>
|
||||||
|
</Suspense>
|
||||||
</EnterDetailsProvider>
|
</EnterDetailsProvider>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
import { Suspense } from "react"
|
||||||
|
|
||||||
import { serverClient } from "@/lib/trpc/server"
|
import { serverClient } from "@/lib/trpc/server"
|
||||||
|
|
||||||
import Blocks from "@/components/Blocks"
|
import Blocks from "@/components/Blocks"
|
||||||
@@ -45,8 +47,9 @@ export default async function LoyaltyPage() {
|
|||||||
) : null}
|
) : null}
|
||||||
</MaxWidth>
|
</MaxWidth>
|
||||||
</section>
|
</section>
|
||||||
|
<Suspense fallback={null}>
|
||||||
<TrackingSDK pageData={tracking} />
|
<TrackingSDK pageData={tracking} />
|
||||||
|
</Suspense>
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
import { Suspense } from "react"
|
||||||
|
|
||||||
import Blocks from "@/components/Blocks"
|
import Blocks from "@/components/Blocks"
|
||||||
import Hero from "@/components/Hero"
|
import Hero from "@/components/Hero"
|
||||||
import Sidebar from "@/components/Sidebar"
|
import Sidebar from "@/components/Sidebar"
|
||||||
@@ -58,8 +60,9 @@ export default function StaticPage({
|
|||||||
) : null}
|
) : null}
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
<Suspense fallback={null}>
|
||||||
<TrackingSDK pageData={tracking} />
|
<TrackingSDK pageData={tracking} />
|
||||||
|
</Suspense>
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
import "@/app/globals.css"
|
import "@/app/globals.css"
|
||||||
import "@scandic-hotels/design-system/style.css"
|
import "@scandic-hotels/design-system/style.css"
|
||||||
|
|
||||||
|
import { Suspense } from "react"
|
||||||
|
|
||||||
import { overview } from "@/constants/routes/webviews"
|
import { overview } from "@/constants/routes/webviews"
|
||||||
import { serverClient } from "@/lib/trpc/server"
|
import { serverClient } from "@/lib/trpc/server"
|
||||||
|
|
||||||
@@ -31,7 +33,9 @@ export default async function AccountPage() {
|
|||||||
<Blocks content={accountPage.content} />
|
<Blocks content={accountPage.content} />
|
||||||
</MaxWidth>
|
</MaxWidth>
|
||||||
|
|
||||||
|
<Suspense fallback={null}>
|
||||||
<TrackingSDK pageData={tracking} />
|
<TrackingSDK pageData={tracking} />
|
||||||
|
</Suspense>
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
import { Suspense } from "react"
|
||||||
|
|
||||||
import { serverClient } from "@/lib/trpc/server"
|
import { serverClient } from "@/lib/trpc/server"
|
||||||
|
|
||||||
import MaxWidth from "@/components/MaxWidth"
|
import MaxWidth from "@/components/MaxWidth"
|
||||||
@@ -27,7 +29,9 @@ export default async function AboutScandicFriends() {
|
|||||||
</MaxWidth>
|
</MaxWidth>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<Suspense fallback={null}>
|
||||||
<TrackingSDK pageData={tracking} />
|
<TrackingSDK pageData={tracking} />
|
||||||
|
</Suspense>
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user