Files
overleaf-cep/services/web/frontend/js/features/share-project-modal/components/copy-sharing-link-button.tsx
T
MoxAmber 886985d91c Merge pull request #33717 from overleaf/as-new-link-sharing-pass-groups
[web] Pass project owner link sharing settings to frontend

GitOrigin-RevId: ff000f38ef36a3d448a2934d0c5963139852eee2
2026-06-12 08:06:12 +00:00

49 lines
1.5 KiB
TypeScript

import { useTranslation } from 'react-i18next'
import OLButton from '@/shared/components/ol/ol-button'
import { useShareProjectContext } from '@/features/share-project-modal/components/share-project-modal'
import { useProjectContext } from '@/shared/context/project-context'
import { useUserContext } from '@/shared/context/user-context'
import { debugConsole } from '@/utils/debugging'
import getMeta from '@/utils/meta'
export default function CopySharingLinkButton() {
const { t } = useTranslation()
const { sharingLinkData, projectAccess, setSuccessActionMessage } =
useShareProjectContext()
const { projectId } = useProjectContext()
const { isAdmin } = useUserContext()
const isCopyBtnEnabled =
Boolean(navigator.clipboard?.writeText) &&
Boolean(sharingLinkData?.token) &&
(projectAccess?.startsWith('anyoneInXyzWithTheLink') ||
projectAccess === 'anyoneWithTheLink')
const handleCopyClick = () => {
if (!sharingLinkData?.token) {
return
}
const origin = isAdmin
? getMeta('ol-ExposedSettings').siteUrl
: window.location.origin
const link = `${origin}/project/${projectId}/share#${sharingLinkData.token}`
navigator.clipboard
.writeText(link)
.then(() => setSuccessActionMessage(t('link_copied')))
.catch(debugConsole.error)
}
return (
<OLButton
variant="secondary"
leadingIcon={isCopyBtnEnabled ? 'link' : 'link_off'}
disabled={!isCopyBtnEnabled}
onClick={handleCopyClick}
>
{t('copy_sharing_link')}
</OLButton>
)
}