mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2025-08-04 05:00:04 +02:00

* Remove the Bootstrap 5 version utilities * Remove Account settings LESS stylesheet and unused styles * Prefer using the OLFormText wrapper component instead of FormText * Remove the Bootstrap 3 version stories * Replace Font Awesome icons to Material icons * Fix the heading hierarchy * Cleanup unused translation * Restore ellipsis to the text of two loading spinners * Add loading button tests back and add some button loading labels --------- Co-authored-by: Tim Down <158919+timdown@users.noreply.github.com> GitOrigin-RevId: 283a9167c8c78bf0fe5062840ded6917dcd6263b
96 lines
2.9 KiB
TypeScript
96 lines
2.9 KiB
TypeScript
import { useState } from 'react'
|
|
import { useTranslation, Trans } from 'react-i18next'
|
|
import getMeta from '../../../../utils/meta'
|
|
import OLNotification from '@/features/ui/components/ol/ol-notification'
|
|
|
|
export function SSOAlert() {
|
|
const { t } = useTranslation()
|
|
|
|
const institutionLinked = getMeta('ol-institutionLinked')
|
|
const institutionEmailNonCanonical = getMeta(
|
|
'ol-institutionEmailNonCanonical'
|
|
)
|
|
const samlError = 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 ? (
|
|
<OLNotification
|
|
type="error"
|
|
content={
|
|
<>
|
|
{samlError.translatedMessage
|
|
? samlError.translatedMessage
|
|
: samlError.message}
|
|
{samlError.tryAgain && <p>{t('try_again')}</p>}
|
|
</>
|
|
}
|
|
isDismissible
|
|
onDismiss={handleErrorClosed}
|
|
/>
|
|
) : null
|
|
}
|
|
|
|
if (!institutionLinked) {
|
|
return null
|
|
}
|
|
|
|
return (
|
|
<>
|
|
{!infoClosed && (
|
|
<OLNotification
|
|
type="info"
|
|
content={
|
|
<>
|
|
<p>
|
|
<Trans
|
|
i18nKey="institution_acct_successfully_linked_2"
|
|
components={[<strong />]} // eslint-disable-line react/jsx-key
|
|
values={{ institutionName: institutionLinked.universityName }}
|
|
shouldUnescape
|
|
tOptions={{ interpolation: { escapeValue: true } }}
|
|
/>
|
|
</p>
|
|
{institutionLinked.hasEntitlement && (
|
|
<p>
|
|
<Trans
|
|
i18nKey="this_grants_access_to_features_2"
|
|
components={[<strong />]} // eslint-disable-line react/jsx-key
|
|
values={{ featureType: t('professional') }}
|
|
shouldUnescape
|
|
tOptions={{ interpolation: { escapeValue: true } }}
|
|
/>
|
|
</p>
|
|
)}
|
|
</>
|
|
}
|
|
isDismissible
|
|
onDismiss={handleInfoClosed}
|
|
/>
|
|
)}
|
|
{!warningClosed && institutionEmailNonCanonical && (
|
|
<OLNotification
|
|
type="warning"
|
|
content={
|
|
<Trans
|
|
i18nKey="in_order_to_match_institutional_metadata_2"
|
|
components={[<strong />]} // eslint-disable-line react/jsx-key
|
|
values={{ email: institutionEmailNonCanonical }}
|
|
shouldUnescape
|
|
tOptions={{ interpolation: { escapeValue: true } }}
|
|
/>
|
|
}
|
|
isDismissible
|
|
onDismiss={handleWarningClosed}
|
|
/>
|
|
)}
|
|
</>
|
|
)
|
|
}
|