reconfirmation-info.tsx 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import { ReactNode } from 'react'
  2. import { UserEmailData } from '../../../../../../types/user-email'
  3. import { Row, Col } from 'react-bootstrap'
  4. import classNames from 'classnames'
  5. import getMeta from '../../../../utils/meta'
  6. import ReconfirmationInfoSuccess from './reconfirmation-info/reconfirmation-info-success'
  7. import ReconfirmationInfoPrompt from './reconfirmation-info/reconfirmation-info-prompt'
  8. type ReconfirmationInfoProps = {
  9. userEmailData: UserEmailData
  10. }
  11. function ReconfirmationInfo({ userEmailData }: ReconfirmationInfoProps) {
  12. const reconfirmationRemoveEmail = getMeta(
  13. 'ol-reconfirmationRemoveEmail'
  14. ) as string
  15. const reconfirmedViaSAML = getMeta('ol-reconfirmedViaSAML') as string
  16. if (!userEmailData.affiliation) {
  17. return null
  18. }
  19. if (
  20. userEmailData.samlProviderId &&
  21. userEmailData.samlProviderId === reconfirmedViaSAML
  22. ) {
  23. return (
  24. <ReconfirmationInfoContentWrapper asAlertInfo>
  25. <ReconfirmationInfoSuccess
  26. institution={userEmailData.affiliation.institution}
  27. />
  28. </ReconfirmationInfoContentWrapper>
  29. )
  30. }
  31. if (userEmailData.affiliation.inReconfirmNotificationPeriod) {
  32. return (
  33. <ReconfirmationInfoContentWrapper
  34. asAlertInfo={reconfirmationRemoveEmail === userEmailData.email}
  35. >
  36. <ReconfirmationInfoPrompt
  37. institution={userEmailData.affiliation.institution}
  38. primary={userEmailData.default}
  39. email={userEmailData.email}
  40. />
  41. </ReconfirmationInfoContentWrapper>
  42. )
  43. }
  44. return null
  45. }
  46. type ReconfirmationInfoContentWrapperProps = {
  47. asAlertInfo: boolean
  48. children: ReactNode
  49. }
  50. function ReconfirmationInfoContentWrapper({
  51. asAlertInfo,
  52. children,
  53. }: ReconfirmationInfoContentWrapperProps) {
  54. return (
  55. <Row>
  56. <Col md={12}>
  57. <div
  58. className={classNames('settings-reconfirm-info', 'small', {
  59. 'alert alert-info': asAlertInfo,
  60. })}
  61. >
  62. {children}
  63. </div>
  64. </Col>
  65. </Row>
  66. )
  67. }
  68. export default ReconfirmationInfo