require-accept-screen.tsx 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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. }
  7. export const RequireAcceptScreen: FC<{
  8. requireAcceptData: RequireAcceptData
  9. sendPostRequest: (confirmedByUser: boolean) => void
  10. }> = ({ requireAcceptData, sendPostRequest }) => {
  11. const { t } = useTranslation()
  12. const user = getMeta('ol-user')
  13. return (
  14. <div className="loading-screen">
  15. <div className="container">
  16. <div className="row">
  17. <div className="col-md-8 col-md-offset-2">
  18. <div className="card">
  19. <div className="page-header text-centered">
  20. <h1>
  21. {t('invited_to_join')}
  22. <br />
  23. <em>{requireAcceptData.projectName || 'This project'}</em>
  24. </h1>
  25. </div>
  26. {user && (
  27. <div className="row text-center">
  28. <div className="col-md-12">
  29. <p>
  30. {t('accepting_invite_as')} <em>{user.email}</em>
  31. </p>
  32. </div>
  33. </div>
  34. )}
  35. <div className="row text-center">
  36. <div className="col-md-12">
  37. <button
  38. className="btn btn-lg btn-primary"
  39. type="submit"
  40. onClick={() => sendPostRequest(true)}
  41. >
  42. {t('join_project')}
  43. </button>
  44. </div>
  45. </div>
  46. </div>
  47. </div>
  48. </div>
  49. </div>
  50. </div>
  51. )
  52. }