29 lines
749 B
TypeScript
29 lines
749 B
TypeScript
|
import { createContext, useContext, useMemo } from 'react';
|
||
|
|
||
|
export const SensitiveMediaContext = createContext<{
|
||
|
hideMediaByDefault: boolean;
|
||
|
}>({
|
||
|
hideMediaByDefault: false,
|
||
|
});
|
||
|
|
||
|
export function useSensitiveMediaContext() {
|
||
|
return useContext(SensitiveMediaContext);
|
||
|
}
|
||
|
|
||
|
type ContextValue = React.ContextType<typeof SensitiveMediaContext>;
|
||
|
|
||
|
export const SensitiveMediaContextProvider: React.FC<
|
||
|
React.PropsWithChildren<{ hideMediaByDefault: boolean }>
|
||
|
> = ({ hideMediaByDefault, children }) => {
|
||
|
const contextValue = useMemo<ContextValue>(
|
||
|
() => ({ hideMediaByDefault }),
|
||
|
[hideMediaByDefault],
|
||
|
);
|
||
|
|
||
|
return (
|
||
|
<SensitiveMediaContext.Provider value={contextValue}>
|
||
|
{children}
|
||
|
</SensitiveMediaContext.Provider>
|
||
|
);
|
||
|
};
|