emails-section.tsx 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import { Fragment } from 'react'
  2. import { useTranslation, Trans } from 'react-i18next'
  3. import {
  4. UserEmailsProvider,
  5. useUserEmailsContext,
  6. } from '../context/user-email-context'
  7. import EmailsHeader from './emails/header'
  8. import EmailsRow from './emails/row'
  9. function EmailsSectionContent() {
  10. const { t } = useTranslation()
  11. const {
  12. state: { data: userEmailsData },
  13. } = useUserEmailsContext()
  14. const userEmails = Object.values(userEmailsData.byId)
  15. return (
  16. <>
  17. <h3>{t('emails_and_affiliations_title')}</h3>
  18. <p className="small">{t('emails_and_affiliations_explanation')}</p>
  19. <p className="small">
  20. <Trans i18nKey="change_primary_email_address_instructions">
  21. <strong />
  22. {/* eslint-disable-next-line jsx-a11y/anchor-has-content */}
  23. <a href="/learn/how-to/Keeping_your_account_secure" />
  24. </Trans>
  25. </p>
  26. <EmailsHeader />
  27. {userEmails?.map((userEmail, i) => (
  28. <Fragment key={userEmail.email}>
  29. <EmailsRow userEmailData={userEmail} />
  30. {i + 1 !== userEmails.length && (
  31. <div className="horizontal-divider" />
  32. )}
  33. </Fragment>
  34. ))}
  35. </>
  36. )
  37. }
  38. function EmailsSection() {
  39. return (
  40. <UserEmailsProvider>
  41. <EmailsSectionContent />
  42. </UserEmailsProvider>
  43. )
  44. }
  45. export default EmailsSection