email.tsx 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import { useTranslation } from 'react-i18next'
  2. import { UserEmailData } from '../../../../../../types/user-email'
  3. import ResendConfirmationEmailButton from './resend-confirmation-email-button'
  4. import { ssoAvailableForInstitution } from '../../utils/sso'
  5. import OLBadge from '@/features/ui/components/ol/ol-badge'
  6. import { isBootstrap5 } from '@/features/utils/bootstrap-5'
  7. import classnames from 'classnames'
  8. type EmailProps = {
  9. userEmailData: UserEmailData
  10. }
  11. function Email({ userEmailData }: EmailProps) {
  12. const { t } = useTranslation()
  13. const ssoAvailable = ssoAvailableForInstitution(
  14. userEmailData.affiliation?.institution || null
  15. )
  16. const isPrimary = userEmailData.default
  17. const isProfessional =
  18. userEmailData.confirmedAt &&
  19. userEmailData.affiliation?.institution.confirmed &&
  20. userEmailData.affiliation.licence !== 'free'
  21. const hasBadges = isPrimary || isProfessional
  22. return (
  23. <>
  24. {userEmailData.email}
  25. {!userEmailData.confirmedAt && (
  26. <div className="small">
  27. <strong>
  28. {t('unconfirmed')}.
  29. {!ssoAvailable && <span> {t('please_check_your_inbox')}.</span>}
  30. </strong>
  31. <br />
  32. {!ssoAvailable && (
  33. <ResendConfirmationEmailButton email={userEmailData.email} />
  34. )}
  35. </div>
  36. )}
  37. {hasBadges && (
  38. <div className={classnames({ small: !isBootstrap5() })}>
  39. {isPrimary && (
  40. <>
  41. <OLBadge bg="info">Primary</OLBadge>{' '}
  42. </>
  43. )}
  44. {isProfessional && (
  45. <OLBadge bg="primary">{t('professional')}</OLBadge>
  46. )}
  47. </div>
  48. )}
  49. </>
  50. )
  51. }
  52. export default Email