diff --git a/services/web/app/src/Features/Project/ProjectController.js b/services/web/app/src/Features/Project/ProjectController.js index 33192c4a21..50d5dccff8 100644 --- a/services/web/app/src/Features/Project/ProjectController.js +++ b/services/web/app/src/Features/Project/ProjectController.js @@ -906,6 +906,7 @@ const ProjectController = { brandVariation, allowedImageNames, gitBridgePublicBaseUrl: Settings.gitBridgePublicBaseUrl, + gitBridgeEnabled: Features.hasFeature('git-bridge'), wsUrl, showSupport: Features.hasFeature('support'), showTemplatesServerPro, diff --git a/services/web/app/views/project/editor/meta.pug b/services/web/app/views/project/editor/meta.pug index 005027bfa3..ac4d6391b6 100644 --- a/services/web/app/views/project/editor/meta.pug +++ b/services/web/app/views/project/editor/meta.pug @@ -11,6 +11,7 @@ meta(name="ol-isRestrictedTokenMember" data-type="boolean" content=isRestrictedT meta(name="ol-maxDocLength" data-type="json" content=maxDocLength) meta(name="ol-wikiEnabled" data-type="boolean" content=settings.proxyLearn) meta(name="ol-gitBridgePublicBaseUrl" content=gitBridgePublicBaseUrl) +meta(name="ol-gitBridgeEnabled" data-type="boolean" content=gitBridgeEnabled) meta(name="ol-compilesUserContentDomain" content=settings.compilesUserContentDomain) meta(name="ol-fallbackCompileDomain" content=settings.pdfDownloadDomain) //- Set base path for Ace scripts loaded on demand/workers and don't use cdn diff --git a/services/web/frontend/js/features/editor-left-menu/components/sync-menu.tsx b/services/web/frontend/js/features/editor-left-menu/components/sync-menu.tsx index 7a2c47abd5..cd0d0ae955 100644 --- a/services/web/frontend/js/features/editor-left-menu/components/sync-menu.tsx +++ b/services/web/frontend/js/features/editor-left-menu/components/sync-menu.tsx @@ -11,6 +11,7 @@ const components = importOverleafModules('editorLeftMenuSync') as { export default function SyncMenu() { const { t } = useTranslation() const anonymous = getMeta('ol-anonymous') as boolean | undefined + const gitBridgeEnabled = getMeta('ol-gitBridgeEnabled', false) as boolean if (anonymous === true || anonymous === undefined) { return null @@ -20,6 +21,12 @@ export default function SyncMenu() { return null } + // This flag can only be false in CE and Server Pro. In this case we skip rendering the + // entire sync section, since Dropbox and GitHub are never available in SP + if (!gitBridgeEnabled) { + return null + } + return ( <>

{t('sync')}

diff --git a/services/web/frontend/stories/editor-left-menu/sync-menu.stories.tsx b/services/web/frontend/stories/editor-left-menu/sync-menu.stories.tsx index a33d3cd32f..060b4a4dfc 100644 --- a/services/web/frontend/stories/editor-left-menu/sync-menu.stories.tsx +++ b/services/web/frontend/stories/editor-left-menu/sync-menu.stories.tsx @@ -10,6 +10,7 @@ export default { export const WriteAccess = () => { window.metaAttributesCache.set('ol-anonymous', false) + window.metaAttributesCache.set('ol-gitBridgeEnabled', true) useScope({ permissionsLevel: 'owner', }) @@ -23,6 +24,7 @@ export const WriteAccess = () => { export const ReadOnlyAccess = () => { window.metaAttributesCache.set('ol-anonymous', false) + window.metaAttributesCache.set('ol-gitBridgeEnabled', true) useScope({ permissionsLevel: 'readOnly', }) diff --git a/services/web/test/frontend/components/editor-left-menu/editor-left-menu.spec.tsx b/services/web/test/frontend/components/editor-left-menu/editor-left-menu.spec.tsx index 94d2ca6a3d..4c4e52c375 100644 --- a/services/web/test/frontend/components/editor-left-menu/editor-left-menu.spec.tsx +++ b/services/web/test/frontend/components/editor-left-menu/editor-left-menu.spec.tsx @@ -43,6 +43,7 @@ describe('', function () { window.metaAttributesCache.set('ol-overallThemes', overallThemes) window.metaAttributesCache.set('ol-allowedImageNames', allowedImageNames) window.metaAttributesCache.set('ol-anonymous', false) + window.metaAttributesCache.set('ol-gitBridgeEnabled', true) window.metaAttributesCache.set('ol-showSupport', true) window.metaAttributesCache.set('ol-user', { email: 'sherlock@holmes.co.uk', @@ -319,6 +320,14 @@ describe('', function () { cy.wait(['@user-status', '@project-status']) cy.findByText('Push to GitHub, pull to Overleaf') }) + + it('hides the entire sync section when git bridge is disabled', function () { + window.metaAttributesCache.set('ol-gitBridgeEnabled', false) + + cy.findByRole('button', { name: 'Dropbox' }).should('not.exist') + cy.findByRole('button', { name: 'Git' }).should('not.exist') + cy.findByRole('button', { name: 'GitHub' }).should('not.exist') + }) }) describe('settings menu', function () {