Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | import { createContext, ReactNode, useContext, useMemo } from "react";
import { getOrCreateSearchSessionId } from "./searchAttribution";
interface SearchAnalyticsValue {
searchSessionId: string;
searchQueryId: string;
pageNumber: number;
}
const SearchAnalyticsContext = createContext<SearchAnalyticsValue | null>(null);
export function SearchAnalyticsProvider({
children,
searchQueryId,
pageNumber,
}: {
children: ReactNode;
searchQueryId: string;
pageNumber: number;
}) {
const searchSessionId = useMemo(() => getOrCreateSearchSessionId(), []);
const value = useMemo(
() => ({ searchSessionId, searchQueryId, pageNumber }),
[searchSessionId, searchQueryId, pageNumber],
);
return (
<SearchAnalyticsContext.Provider value={value}>
{children}
</SearchAnalyticsContext.Provider>
);
}
export function useSearchAnalytics(): SearchAnalyticsValue | null {
return useContext(SearchAnalyticsContext);
}
|