import * as React from 'react'; import { RenderIf } from './RenderIf'; import { InsightsType } from '../../utils'; import { BetaEnvironment, Environment, NonBetaEnvironment } from '../../types/Environment'; interface EnvDetectorProps { onEnvironment: ReadonlyArray | Environment; currentEnvironment: Environment; } export const EnvDetector: React.FunctionComponent> = (props) => { const environment = React.useMemo( () => Array.isArray(props.onEnvironment) ? props.onEnvironment : [ props.onEnvironment ], [ props.onEnvironment ] ); const renderIf = React.useCallback( () => environment.includes(props.currentEnvironment), [ props.currentEnvironment, environment ] ); return { props.children } ; }; interface InsightsBetaDetectorProps extends Omit { insights: InsightsType; } export const InsightsEnvDetector: React.FunctionComponent> = (props) => { const currentEnvironment: Environment = React.useMemo(() => { const isBeta = props.insights.chrome.isBeta(); const env: NonBetaEnvironment = props.insights.chrome.getEnvironment(); if (isBeta) { return `${env}-beta` as BetaEnvironment; } else { return env; } }, [ props.insights ]); return { props.children }; };