share-modal-body.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. import { useShareProjectContext } from './share-project-modal'
  2. import EditMember from './edit-member'
  3. import LinkSharing from './link-sharing'
  4. import Invite from './invite'
  5. import SendInvites from './send-invites'
  6. import ViewMember from './view-member'
  7. import OwnerInfo from './owner-info'
  8. import SendInvitesNotice from './send-invites-notice'
  9. import { useProjectContext } from '../../../shared/context/project-context'
  10. import { useSplitTestContext } from '../../../shared/context/split-test-context'
  11. import { Row } from 'react-bootstrap'
  12. import PropTypes from 'prop-types'
  13. import RecaptchaConditions from '../../../shared/components/recaptcha-conditions'
  14. export default function ShareModalBody() {
  15. const { isAdmin } = useShareProjectContext()
  16. const { splitTestVariants } = useSplitTestContext({
  17. splitTestVariants: PropTypes.object,
  18. })
  19. const project = useProjectContext()
  20. switch (splitTestVariants['project-share-modal-paywall']) {
  21. case 'new-copy-top':
  22. return (
  23. <>
  24. {isAdmin ? (
  25. <>
  26. <SendInvites />
  27. <Row className="public-access-level" />
  28. </>
  29. ) : (
  30. <SendInvitesNotice />
  31. )}
  32. <OwnerInfo />
  33. {project.members.map(member =>
  34. isAdmin ? (
  35. <EditMember key={member._id} member={member} />
  36. ) : (
  37. <ViewMember key={member._id} member={member} />
  38. )
  39. )}
  40. {project.invites.map(invite => (
  41. <Invite key={invite._id} invite={invite} isAdmin={isAdmin} />
  42. ))}
  43. {isAdmin && (
  44. <>
  45. <br />
  46. <LinkSharing />
  47. </>
  48. )}
  49. {!window.ExposedSettings.recaptchaDisabled?.invite && (
  50. <RecaptchaConditions />
  51. )}
  52. </>
  53. )
  54. case 'new-copy-middle':
  55. return (
  56. <>
  57. <OwnerInfo />
  58. {project.members.map(member =>
  59. isAdmin ? (
  60. <EditMember key={member._id} member={member} />
  61. ) : (
  62. <ViewMember key={member._id} member={member} />
  63. )
  64. )}
  65. {project.invites.map(invite => (
  66. <Invite key={invite._id} invite={invite} isAdmin={isAdmin} />
  67. ))}
  68. {isAdmin ? <SendInvites /> : <SendInvitesNotice />}
  69. {isAdmin && (
  70. <>
  71. <br />
  72. <LinkSharing />
  73. </>
  74. )}
  75. {!window.ExposedSettings.recaptchaDisabled?.invite && (
  76. <RecaptchaConditions />
  77. )}
  78. </>
  79. )
  80. case 'new-copy-bottom':
  81. case 'default':
  82. default:
  83. return (
  84. <>
  85. {isAdmin && <LinkSharing />}
  86. <OwnerInfo />
  87. {project.members.map(member =>
  88. isAdmin ? (
  89. <EditMember key={member._id} member={member} />
  90. ) : (
  91. <ViewMember key={member._id} member={member} />
  92. )
  93. )}
  94. {project.invites.map(invite => (
  95. <Invite key={invite._id} invite={invite} isAdmin={isAdmin} />
  96. ))}
  97. {isAdmin ? <SendInvites /> : <SendInvitesNotice />}
  98. {!window.ExposedSettings.recaptchaDisabled?.invite && (
  99. <RecaptchaConditions />
  100. )}
  101. </>
  102. )
  103. }
  104. }