overleaf-cep/server-ce/hotfix/5.5.2/pr_25944.patch
Brian Gough 0c462d45d1 Merge pull request #26815 from overleaf/bg-sp-hotfix-5-5-2
[CE/SP] Hotfix 5.5.2

GitOrigin-RevId: bcd409968ef0321dd1d8050553e7c9a02d3efdc4
2025-07-07 08:05:45 +00:00

219 lines
9.1 KiB
Diff

diff --git a/services/web/frontend/js/features/review-panel-new/context/review-panel-providers.tsx b/services/web/frontend/js/features/review-panel-new/context/review-panel-providers.tsx
index 20e157dfee9..ad943772d0d 100644
--- a/services/web/frontend/js/features/review-panel-new/context/review-panel-providers.tsx
+++ b/services/web/frontend/js/features/review-panel-new/context/review-panel-providers.tsx
@@ -4,10 +4,16 @@ import { ChangesUsersProvider } from './changes-users-context'
import { TrackChangesStateProvider } from './track-changes-state-context'
import { ThreadsProvider } from './threads-context'
import { ReviewPanelViewProvider } from './review-panel-view-context'
+import { useProjectContext } from '@/shared/context/project-context'
export const ReviewPanelProviders: FC<React.PropsWithChildren> = ({
children,
}) => {
+ const { features } = useProjectContext()
+ if (!features.trackChangesVisible) {
+ return children
+ }
+
return (
<ReviewPanelViewProvider>
<ChangesUsersProvider>
diff --git a/services/web/frontend/js/features/share-project-modal/components/add-collaborators.tsx b/services/web/frontend/js/features/share-project-modal/components/add-collaborators.tsx
index 8606fb11fad..e80fb037116 100644
--- a/services/web/frontend/js/features/share-project-modal/components/add-collaborators.tsx
+++ b/services/web/frontend/js/features/share-project-modal/components/add-collaborators.tsx
@@ -176,24 +176,34 @@ export default function AddCollaborators({ readOnly }: { readOnly?: boolean }) {
])
const privilegeOptions = useMemo(() => {
- return [
+ const options: {
+ key: string
+ label: string
+ description?: string | null
+ }[] = [
{
key: 'readAndWrite',
label: t('editor'),
},
- {
+ ]
+
+ if (features.trackChangesVisible) {
+ options.push({
key: 'review',
label: t('reviewer'),
description: !features.trackChanges
? t('comment_only_upgrade_for_track_changes')
: null,
- },
- {
- key: 'readOnly',
- label: t('viewer'),
- },
- ]
- }, [features.trackChanges, t])
+ })
+ }
+
+ options.push({
+ key: 'readOnly',
+ label: t('viewer'),
+ })
+
+ return options
+ }, [features.trackChanges, features.trackChangesVisible, t])
return (
<OLForm className="add-collabs">
diff --git a/services/web/frontend/js/features/share-project-modal/components/edit-member.tsx b/services/web/frontend/js/features/share-project-modal/components/edit-member.tsx
index 6d806968b12..9f24cddc4ad 100644
--- a/services/web/frontend/js/features/share-project-modal/components/edit-member.tsx
+++ b/services/web/frontend/js/features/share-project-modal/components/edit-member.tsx
@@ -244,14 +244,22 @@ function SelectPrivilege({
const { features } = useProjectContext()
const privileges = useMemo(
- (): Privilege[] => [
- { key: 'owner', label: t('make_owner') },
- { key: 'readAndWrite', label: t('editor') },
- { key: 'review', label: t('reviewer') },
- { key: 'readOnly', label: t('viewer') },
- { key: 'removeAccess', label: t('remove_access') },
- ],
- [t]
+ (): Privilege[] =>
+ features.trackChangesVisible
+ ? [
+ { key: 'owner', label: t('make_owner') },
+ { key: 'readAndWrite', label: t('editor') },
+ { key: 'review', label: t('reviewer') },
+ { key: 'readOnly', label: t('viewer') },
+ { key: 'removeAccess', label: t('remove_access') },
+ ]
+ : [
+ { key: 'owner', label: t('make_owner') },
+ { key: 'readAndWrite', label: t('editor') },
+ { key: 'readOnly', label: t('viewer') },
+ { key: 'removeAccess', label: t('remove_access') },
+ ],
+ [features.trackChangesVisible, t]
)
const downgradedPseudoPrivilege: Privilege = {
diff --git a/services/web/frontend/js/features/source-editor/components/codemirror-editor.tsx b/services/web/frontend/js/features/source-editor/components/codemirror-editor.tsx
index c1808cbb301..4bdfe2682c8 100644
--- a/services/web/frontend/js/features/source-editor/components/codemirror-editor.tsx
+++ b/services/web/frontend/js/features/source-editor/components/codemirror-editor.tsx
@@ -18,6 +18,7 @@ import {
} from './codemirror-context'
import MathPreviewTooltip from './math-preview-tooltip'
import { useToolbarMenuBarEditorCommands } from '@/features/ide-redesign/hooks/use-toolbar-menu-editor-commands'
+import { useProjectContext } from '@/shared/context/project-context'
// TODO: remove this when definitely no longer used
export * from './codemirror-context'
@@ -67,6 +68,7 @@ function CodeMirrorEditor() {
function CodeMirrorEditorComponents() {
useToolbarMenuBarEditorCommands()
+ const { features } = useProjectContext()
return (
<ReviewPanelProviders>
@@ -83,8 +85,8 @@ function CodeMirrorEditorComponents() {
<CodeMirrorCommandTooltip />
<MathPreviewTooltip />
- <ReviewTooltipMenu />
- <ReviewPanelNew />
+ {features.trackChangesVisible && <ReviewTooltipMenu />}
+ {features.trackChangesVisible && <ReviewPanelNew />}
{sourceEditorComponents.map(
({ import: { default: Component }, path }) => (
diff --git a/services/web/frontend/js/features/source-editor/components/toolbar/toolbar-items.tsx b/services/web/frontend/js/features/source-editor/components/toolbar/toolbar-items.tsx
index e70663683fc..c5d9f3d3e47 100644
--- a/services/web/frontend/js/features/source-editor/components/toolbar/toolbar-items.tsx
+++ b/services/web/frontend/js/features/source-editor/components/toolbar/toolbar-items.tsx
@@ -14,6 +14,7 @@ import { LegacyTableDropdown } from './table-inserter-dropdown-legacy'
import { withinFormattingCommand } from '@/features/source-editor/utils/tree-operations/formatting'
import { isSplitTestEnabled } from '@/utils/splitTestUtils'
import { isMac } from '@/shared/utils/os'
+import { useProjectContext } from '@/shared/context/project-context'
export const ToolbarItems: FC<{
state: EditorState
@@ -31,6 +32,7 @@ export const ToolbarItems: FC<{
const { t } = useTranslation()
const { toggleSymbolPalette, showSymbolPalette, writefullInstance } =
useEditorContext()
+ const { features } = useProjectContext()
const isActive = withinFormattingCommand(state)
const symbolPaletteAvailable = getMeta('ol-symbolPaletteAvailable')
@@ -127,13 +129,15 @@ export const ToolbarItems: FC<{
command={commands.wrapInHref}
icon="add_link"
/>
- <ToolbarButton
- id="toolbar-add-comment"
- label={t('add_comment')}
- disabled={state.selection.main.empty}
- command={commands.addComment}
- icon="add_comment"
- />
+ {features.trackChangesVisible && (
+ <ToolbarButton
+ id="toolbar-add-comment"
+ label={t('add_comment')}
+ disabled={state.selection.main.empty}
+ command={commands.addComment}
+ icon="add_comment"
+ />
+ )}
<ToolbarButton
id="toolbar-ref"
label={t('toolbar_insert_cross_reference')}
diff --git a/services/web/test/frontend/features/review-panel/review-panel.spec.tsx b/services/web/test/frontend/features/review-panel/review-panel.spec.tsx
index d6677878108..58ac3e443da 100644
--- a/services/web/test/frontend/features/review-panel/review-panel.spec.tsx
+++ b/services/web/test/frontend/features/review-panel/review-panel.spec.tsx
@@ -181,6 +181,7 @@ describe('<ReviewPanel />', function () {
removeChangeIds,
},
},
+ projectFeatures: { trackChangesVisible: true },
})
cy.wrap(scope).as('scope')
@@ -626,7 +627,7 @@ describe('<ReviewPanel /> for free users', function () {
function mountEditor(ownerId = USER_ID) {
const scope = mockScope(undefined, {
permissions: { write: true, trackedWrite: false, comment: true },
- projectFeatures: { trackChanges: false },
+ projectFeatures: { trackChanges: false, trackChangesVisible: true },
projectOwner: {
_id: ownerId,
},
diff --git a/services/web/test/frontend/features/share-project-modal/components/share-project-modal.test.jsx b/services/web/test/frontend/features/share-project-modal/components/share-project-modal.test.jsx
index b86207fb0f7..dfce8134d1c 100644
--- a/services/web/test/frontend/features/share-project-modal/components/share-project-modal.test.jsx
+++ b/services/web/test/frontend/features/share-project-modal/components/share-project-modal.test.jsx
@@ -694,6 +694,7 @@ describe('<ShareProjectModal/>', function () {
features: {
collaborators: 0,
compileGroup: 'standard',
+ trackChangesVisible: true,
},
},
},
@@ -723,6 +724,7 @@ describe('<ShareProjectModal/>', function () {
...project,
features: {
collaborators: 1,
+ trackChangesVisible: true,
},
members: [
{