import { memo, useEffect, useState } from 'react' import { Trans, useTranslation } from 'react-i18next' import styles from './ErrorBanner.module.scss' import { CloseSVG } from './Svg' interface ErrorBannerProps { hasNetworkError: boolean hasQueryError: boolean hasServerError: boolean isNetworkSupported: boolean | undefined } const ErrorBanner = memo( ({ hasNetworkError, hasQueryError, hasServerError, isNetworkSupported, }: ErrorBannerProps) => { const { t } = useTranslation() const [hideError, setHideError] = useState(false) useEffect(() => { if (hasNetworkError || hasQueryError || hasServerError) { setHideError(false) } }, [hasNetworkError, hasQueryError, hasServerError]) const getHeadline = (): string => { return hasNetworkError ? t('common.appearToBeOffline') : hasServerError ? t('error.serverOfflineTitle') : t('error.failingRequest') } const getBody = (): string => { return hasNetworkError ? t('error.youHaveAFailingNetworkRequest') : hasServerError ? t('error.serverOfflineBody') : t('error.failingRequestDescription') } return (
{/* Error banner is disabled for GQL errors currently */} {(hasNetworkError || hasServerError) && isNetworkSupported && (

{getHeadline()}

{getBody()}

{!hasNetworkError && (

text link

)}
)}
) } ) export default ErrorBanner