diff --git a/frontend/src/context/FallbackContext.tsx b/frontend/src/context/FallbackContext.tsx new file mode 100644 index 000000000..f713af75f --- /dev/null +++ b/frontend/src/context/FallbackContext.tsx @@ -0,0 +1,36 @@ +import React from 'react' + +export type FallbackType = NonNullable | null + +export interface FallbackContextType { + updateFallback: (fallback: FallbackType) => void +} + +// eslint-disable-next-line react-refresh/only-export-components +export const FallbackContext = React.createContext({ + updateFallback: () => { }, +}) + +interface FabllbackProviderProps { + children: React.ReactNode +} + +export const FabllbackProvider: React.FC = ({ + children, +}) => { + const [fallback, setFallback] = React.useState(null) + + const updateFallback = React.useCallback((_fallback: FallbackType) => { + setFallback(() => _fallback) + }, []) + + const renderChildren = React.useMemo(() => children, [children]) + + const value = React.useMemo(() => ({ updateFallback }), [updateFallback]) + + return ( + + {renderChildren} + + ) +}