| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- import { useTranslation } from 'react-i18next'
- import { UserEmailData } from '../../../../../../types/user-email'
- import { ssoAvailableForInstitution } from '../../utils/sso'
- import OLBadge from '@/shared/components/ol/ol-badge'
- import ResendConfirmationCodeModal from '@/features/settings/components/emails/resend-confirmation-code-modal'
- import { useUserEmailsContext } from '@/features/settings/context/user-email-context'
- type EmailProps = {
- userEmailData: UserEmailData
- }
- function Email({ userEmailData }: EmailProps) {
- const { t } = useTranslation()
- const {
- state,
- setLoading: setUserEmailsContextLoading,
- getEmails,
- } = useUserEmailsContext()
- const ssoAvailable = ssoAvailableForInstitution(
- userEmailData.affiliation?.institution || null
- )
- const isPrimary = userEmailData.default
- const hasInstitutionalSubscription =
- userEmailData.confirmedAt &&
- userEmailData.affiliation?.institution.confirmed &&
- userEmailData.affiliation.licence !== 'free'
- const hasBadges = isPrimary || hasInstitutionalSubscription
- return (
- <>
- {userEmailData.email}
- {!userEmailData.confirmedAt && (
- <div className="small">
- <strong>{t('unconfirmed')}.</strong>
- <br />
- {!ssoAvailable && (
- <ResendConfirmationCodeModal
- email={userEmailData.email}
- setGroupLoading={setUserEmailsContextLoading}
- groupLoading={state.isLoading}
- onSuccess={getEmails}
- triggerVariant="link"
- />
- )}
- </div>
- )}
- {hasBadges && (
- <div>
- {isPrimary && (
- <>
- <OLBadge bg="info">Primary</OLBadge>{' '}
- </>
- )}
- {hasInstitutionalSubscription && (
- <OLBadge bg="primary">{t('commons')}</OLBadge>
- )}
- </div>
- )}
- </>
- )
- }
- export default Email
|