| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- import EditMember from './edit-member'
- import LinkSharing from './link-sharing'
- import Invite from './invite'
- import SendInvites from './send-invites'
- import ViewMember from './view-member'
- import OwnerInfo from './owner-info'
- import SendInvitesNotice from './send-invites-notice'
- import { useEditorContext } from '../../../shared/context/editor-context'
- import { useProjectContext } from '../../../shared/context/project-context'
- import { useSplitTestContext } from '../../../shared/context/split-test-context'
- import { useMemo } from 'react'
- import { Row } from 'react-bootstrap'
- import PropTypes from 'prop-types'
- import RecaptchaConditions from '../../../shared/components/recaptcha-conditions'
- export default function ShareModalBody() {
- const { splitTestVariants } = useSplitTestContext({
- splitTestVariants: PropTypes.object,
- })
- const { members, invites, features } = useProjectContext()
- const { isProjectOwner } = useEditorContext()
- // whether the project has not reached the collaborator limit
- const canAddCollaborators = useMemo(() => {
- if (!isProjectOwner || !features) {
- return false
- }
- if (features.collaborators === -1) {
- // infinite collaborators
- return true
- }
- return members.length + invites.length < features.collaborators
- }, [members, invites, features, isProjectOwner])
- switch (splitTestVariants['project-share-modal-paywall']) {
- case 'new-copy-top':
- return (
- <>
- {isProjectOwner ? (
- <>
- <SendInvites canAddCollaborators={canAddCollaborators} />
- <Row className="public-access-level" />
- </>
- ) : (
- <SendInvitesNotice />
- )}
- <OwnerInfo />
- {members.map(member =>
- isProjectOwner ? (
- <EditMember key={member._id} member={member} />
- ) : (
- <ViewMember key={member._id} member={member} />
- )
- )}
- {invites.map(invite => (
- <Invite
- key={invite._id}
- invite={invite}
- isProjectOwner={isProjectOwner}
- />
- ))}
- {isProjectOwner && (
- <>
- <br />
- <LinkSharing canAddCollaborators={canAddCollaborators} />
- </>
- )}
- {!window.ExposedSettings.recaptchaDisabled?.invite && (
- <RecaptchaConditions />
- )}
- </>
- )
- case 'new-copy-middle':
- return (
- <>
- <OwnerInfo />
- {members.map(member =>
- isProjectOwner ? (
- <EditMember key={member._id} member={member} />
- ) : (
- <ViewMember key={member._id} member={member} />
- )
- )}
- {invites.map(invite => (
- <Invite
- key={invite._id}
- invite={invite}
- isProjectOwner={isProjectOwner}
- />
- ))}
- {isProjectOwner ? (
- <SendInvites canAddCollaborators={canAddCollaborators} />
- ) : (
- <SendInvitesNotice />
- )}
- {isProjectOwner && (
- <>
- <br />
- <LinkSharing canAddCollaborators={canAddCollaborators} />
- </>
- )}
- {!window.ExposedSettings.recaptchaDisabled?.invite && (
- <RecaptchaConditions />
- )}
- </>
- )
- case 'new-copy-bottom':
- case 'default':
- default:
- return (
- <>
- {isProjectOwner && (
- <LinkSharing canAddCollaborators={canAddCollaborators} />
- )}
- <OwnerInfo />
- {members.map(member =>
- isProjectOwner ? (
- <EditMember key={member._id} member={member} />
- ) : (
- <ViewMember key={member._id} member={member} />
- )
- )}
- {invites.map(invite => (
- <Invite
- key={invite._id}
- invite={invite}
- isProjectOwner={isProjectOwner}
- />
- ))}
- {isProjectOwner ? (
- <SendInvites canAddCollaborators={canAddCollaborators} />
- ) : (
- <SendInvitesNotice />
- )}
- {!window.ExposedSettings.recaptchaDisabled?.invite && (
- <RecaptchaConditions />
- )}
- </>
- )
- }
- }
|