email.tsx 1.5 KB

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