require-accept-screen.tsx 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. import { FC } from 'react'
  2. import { useTranslation } from 'react-i18next'
  3. import getMeta from '@/utils/meta'
  4. export type RequireAcceptData = {
  5. projectName?: string
  6. linkSharingChanges: boolean
  7. }
  8. export const RequireAcceptScreen: FC<{
  9. requireAcceptData: RequireAcceptData
  10. sendPostRequest: (confirmedByUser: boolean) => void
  11. }> = ({ requireAcceptData, sendPostRequest }) => {
  12. const { t } = useTranslation()
  13. const user = getMeta('ol-user')
  14. if (requireAcceptData.linkSharingChanges) {
  15. return (
  16. <div className="container">
  17. <div className="row">
  18. <div className="col-md-12">
  19. <div className="card">
  20. <div className="text-centered link-sharing-invite">
  21. <div className="link-sharing-invite-header">
  22. <p>
  23. {t('youre_joining')}
  24. <br />
  25. <em>
  26. <strong>
  27. {requireAcceptData.projectName || 'This project'}
  28. </strong>
  29. </em>
  30. {user && (
  31. <>
  32. <br />
  33. {t('as_email', { email: user.email })}
  34. </>
  35. )}
  36. </p>
  37. </div>
  38. </div>
  39. <div className="row row-spaced text-center">
  40. <div className="col-md-12">
  41. <p>
  42. {t(
  43. 'your_name_and_email_address_will_be_visible_to_the_project_owner_and_other_editors'
  44. )}
  45. </p>
  46. </div>
  47. </div>
  48. <div className="row row-spaced text-center">
  49. <div className="col-md-12">
  50. <button
  51. className="btn btn-lg btn-primary"
  52. type="submit"
  53. onClick={() => sendPostRequest(true)}
  54. >
  55. {t('ok_join_project')}
  56. </button>
  57. </div>
  58. </div>
  59. </div>
  60. </div>
  61. </div>
  62. </div>
  63. )
  64. }
  65. return (
  66. <div className="loading-screen">
  67. <div className="container">
  68. <div className="row">
  69. <div className="col-md-8 col-md-offset-2">
  70. <div className="card">
  71. <div className="page-header text-centered">
  72. <h1>
  73. {t('invited_to_join')}
  74. <br />
  75. <em>{requireAcceptData.projectName || 'This project'}</em>
  76. </h1>
  77. </div>
  78. {user && (
  79. <div className="row text-center">
  80. <div className="col-md-12">
  81. <p>
  82. {t('accepting_invite_as')} <em>{user.email}</em>
  83. </p>
  84. </div>
  85. </div>
  86. )}
  87. <div className="row text-center">
  88. <div className="col-md-12">
  89. <button
  90. className="btn btn-lg btn-primary"
  91. type="submit"
  92. onClick={() => sendPostRequest(true)}
  93. >
  94. {t('join_project')}
  95. </button>
  96. </div>
  97. </div>
  98. </div>
  99. </div>
  100. </div>
  101. </div>
  102. </div>
  103. )
  104. }