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
35 lines
850 B
TypeScript
35 lines
850 B
TypeScript
"use client"
|
|
|
|
import { createContext, useContext } from "react"
|
|
|
|
export type TrackingFunctions = {
|
|
trackBookingSearchClick: (
|
|
searchTerm: string,
|
|
searchType: "hotel" | "destination"
|
|
) => void
|
|
trackAccordionItemOpen: (option: string) => void
|
|
trackOpenSidePeek: (input: {
|
|
name: string | null
|
|
hotelId: string
|
|
includePathname?: boolean
|
|
roomTypeCode?: string | null
|
|
}) => void
|
|
trackGenericEvent(data: any): void
|
|
}
|
|
|
|
export const TrackingContext = createContext<TrackingFunctions | undefined>(
|
|
undefined
|
|
)
|
|
|
|
export const useTrackingContext = (): TrackingFunctions => {
|
|
const context = useContext(TrackingContext)
|
|
|
|
if (!context) {
|
|
throw new Error(
|
|
"useTrackingContext must be used within a BookingFlowTrackingProvider. Did you forget to use the provider in the consuming app?"
|
|
)
|
|
}
|
|
|
|
return context
|
|
}
|