import { useState } from 'react' import { useTranslation, Trans } from 'react-i18next' import Icon from '../../../../shared/components/icon' import getMeta from '../../../../utils/meta' import OLNotification from '@/features/ui/components/ol/ol-notification' type InstitutionLink = { universityName: string hasEntitlement?: boolean } type SAMLError = { translatedMessage?: string message?: string tryAgain?: boolean } export function SSOAlert() { const { t } = useTranslation() const institutionLinked: InstitutionLink | undefined = getMeta( 'ol-institutionLinked' ) const institutionEmailNonCanonical: string | undefined = getMeta( 'ol-institutionEmailNonCanonical' ) const samlError: SAMLError | undefined = getMeta('ol-samlError') const [infoClosed, setInfoClosed] = useState(false) const [warningClosed, setWarningClosed] = useState(false) const [errorClosed, setErrorClosed] = useState(false) const handleInfoClosed = () => setInfoClosed(true) const handleWarningClosed = () => setWarningClosed(true) const handleErrorClosed = () => setErrorClosed(true) if (samlError) { return !errorClosed ? ( {samlError.translatedMessage ? samlError.translatedMessage : samlError.message} {samlError.tryAgain &&

{t('try_again')}

} } isDismissible onDismiss={handleErrorClosed} bs3Props={{ icon: ( ), className: 'mb-0 text-center', }} /> ) : null } if (!institutionLinked) { return null } return ( <> {!infoClosed && (

]} // eslint-disable-line react/jsx-key values={{ institutionName: institutionLinked.universityName }} shouldUnescape tOptions={{ interpolation: { escapeValue: true } }} />

{institutionLinked.hasEntitlement && (

]} // eslint-disable-line react/jsx-key values={{ featureType: t('professional') }} shouldUnescape tOptions={{ interpolation: { escapeValue: true } }} />

)} } isDismissible onDismiss={handleInfoClosed} bs3Props={{ className: 'mb-0 text-center', }} /> )} {!warningClosed && institutionEmailNonCanonical && ( ]} // eslint-disable-line react/jsx-key values={{ email: institutionEmailNonCanonical }} shouldUnescape tOptions={{ interpolation: { escapeValue: true } }} /> } isDismissible onDismiss={handleWarningClosed} bs3Props={{ icon: ( ), className: 'text-center', }} /> )} ) }