glitch-soc/mastodon

View on GitHub
app/javascript/mastodon/features/ui/util/sensitive_media_context.tsx

Summary

Maintainability
B
4 hrs
Test Coverage
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>
  );
};