overleaf/services/web/frontend/js/shared/context/split-test-context.tsx
Alf Eaton 0cde5be165 Merge pull request #14709 from overleaf/ae-context-typescript
Convert React context providers to TypeScript [don't squash!]

GitOrigin-RevId: d92a91798286978410956ab791d73c17c5086d86
2024-01-29 09:03:04 +00:00

41 lines
932 B
TypeScript

import { createContext, FC, useContext, useMemo } from 'react'
import getMeta from '../../utils/meta'
type SplitTestVariants = Record<string, any>
type SplitTestInfo = Record<string, any>
export const SplitTestContext = createContext<
| {
splitTestVariants: SplitTestVariants
splitTestInfo: SplitTestInfo
}
| undefined
>(undefined)
export const SplitTestProvider: FC = ({ children }) => {
const value = useMemo(
() => ({
splitTestVariants: getMeta('ol-splitTestVariants') || {},
splitTestInfo: getMeta('ol-splitTestInfo') || {},
}),
[]
)
return (
<SplitTestContext.Provider value={value}>
{children}
</SplitTestContext.Provider>
)
}
export function useSplitTestContext() {
const context = useContext(SplitTestContext)
if (!context) {
throw new Error(
'useSplitTestContext is only available within SplitTestProvider'
)
}
return context
}