pr_25944.patch 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. 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
  2. index 20e157dfee9..ad943772d0d 100644
  3. --- a/services/web/frontend/js/features/review-panel-new/context/review-panel-providers.tsx
  4. +++ b/services/web/frontend/js/features/review-panel-new/context/review-panel-providers.tsx
  5. @@ -4,10 +4,16 @@ import { ChangesUsersProvider } from './changes-users-context'
  6. import { TrackChangesStateProvider } from './track-changes-state-context'
  7. import { ThreadsProvider } from './threads-context'
  8. import { ReviewPanelViewProvider } from './review-panel-view-context'
  9. +import { useProjectContext } from '@/shared/context/project-context'
  10. export const ReviewPanelProviders: FC<React.PropsWithChildren> = ({
  11. children,
  12. }) => {
  13. + const { features } = useProjectContext()
  14. + if (!features.trackChangesVisible) {
  15. + return children
  16. + }
  17. +
  18. return (
  19. <ReviewPanelViewProvider>
  20. <ChangesUsersProvider>
  21. 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
  22. index 8606fb11fad..e80fb037116 100644
  23. --- a/services/web/frontend/js/features/share-project-modal/components/add-collaborators.tsx
  24. +++ b/services/web/frontend/js/features/share-project-modal/components/add-collaborators.tsx
  25. @@ -176,24 +176,34 @@ export default function AddCollaborators({ readOnly }: { readOnly?: boolean }) {
  26. ])
  27. const privilegeOptions = useMemo(() => {
  28. - return [
  29. + const options: {
  30. + key: string
  31. + label: string
  32. + description?: string | null
  33. + }[] = [
  34. {
  35. key: 'readAndWrite',
  36. label: t('editor'),
  37. },
  38. - {
  39. + ]
  40. +
  41. + if (features.trackChangesVisible) {
  42. + options.push({
  43. key: 'review',
  44. label: t('reviewer'),
  45. description: !features.trackChanges
  46. ? t('comment_only_upgrade_for_track_changes')
  47. : null,
  48. - },
  49. - {
  50. - key: 'readOnly',
  51. - label: t('viewer'),
  52. - },
  53. - ]
  54. - }, [features.trackChanges, t])
  55. + })
  56. + }
  57. +
  58. + options.push({
  59. + key: 'readOnly',
  60. + label: t('viewer'),
  61. + })
  62. +
  63. + return options
  64. + }, [features.trackChanges, features.trackChangesVisible, t])
  65. return (
  66. <OLForm className="add-collabs">
  67. 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
  68. index 6d806968b12..9f24cddc4ad 100644
  69. --- a/services/web/frontend/js/features/share-project-modal/components/edit-member.tsx
  70. +++ b/services/web/frontend/js/features/share-project-modal/components/edit-member.tsx
  71. @@ -244,14 +244,22 @@ function SelectPrivilege({
  72. const { features } = useProjectContext()
  73. const privileges = useMemo(
  74. - (): Privilege[] => [
  75. - { key: 'owner', label: t('make_owner') },
  76. - { key: 'readAndWrite', label: t('editor') },
  77. - { key: 'review', label: t('reviewer') },
  78. - { key: 'readOnly', label: t('viewer') },
  79. - { key: 'removeAccess', label: t('remove_access') },
  80. - ],
  81. - [t]
  82. + (): Privilege[] =>
  83. + features.trackChangesVisible
  84. + ? [
  85. + { key: 'owner', label: t('make_owner') },
  86. + { key: 'readAndWrite', label: t('editor') },
  87. + { key: 'review', label: t('reviewer') },
  88. + { key: 'readOnly', label: t('viewer') },
  89. + { key: 'removeAccess', label: t('remove_access') },
  90. + ]
  91. + : [
  92. + { key: 'owner', label: t('make_owner') },
  93. + { key: 'readAndWrite', label: t('editor') },
  94. + { key: 'readOnly', label: t('viewer') },
  95. + { key: 'removeAccess', label: t('remove_access') },
  96. + ],
  97. + [features.trackChangesVisible, t]
  98. )
  99. const downgradedPseudoPrivilege: Privilege = {
  100. 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
  101. index c1808cbb301..4bdfe2682c8 100644
  102. --- a/services/web/frontend/js/features/source-editor/components/codemirror-editor.tsx
  103. +++ b/services/web/frontend/js/features/source-editor/components/codemirror-editor.tsx
  104. @@ -18,6 +18,7 @@ import {
  105. } from './codemirror-context'
  106. import MathPreviewTooltip from './math-preview-tooltip'
  107. import { useToolbarMenuBarEditorCommands } from '@/features/ide-redesign/hooks/use-toolbar-menu-editor-commands'
  108. +import { useProjectContext } from '@/shared/context/project-context'
  109. // TODO: remove this when definitely no longer used
  110. export * from './codemirror-context'
  111. @@ -67,6 +68,7 @@ function CodeMirrorEditor() {
  112. function CodeMirrorEditorComponents() {
  113. useToolbarMenuBarEditorCommands()
  114. + const { features } = useProjectContext()
  115. return (
  116. <ReviewPanelProviders>
  117. @@ -83,8 +85,8 @@ function CodeMirrorEditorComponents() {
  118. <CodeMirrorCommandTooltip />
  119. <MathPreviewTooltip />
  120. - <ReviewTooltipMenu />
  121. - <ReviewPanelNew />
  122. + {features.trackChangesVisible && <ReviewTooltipMenu />}
  123. + {features.trackChangesVisible && <ReviewPanelNew />}
  124. {sourceEditorComponents.map(
  125. ({ import: { default: Component }, path }) => (
  126. 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
  127. index e70663683fc..c5d9f3d3e47 100644
  128. --- a/services/web/frontend/js/features/source-editor/components/toolbar/toolbar-items.tsx
  129. +++ b/services/web/frontend/js/features/source-editor/components/toolbar/toolbar-items.tsx
  130. @@ -14,6 +14,7 @@ import { LegacyTableDropdown } from './table-inserter-dropdown-legacy'
  131. import { withinFormattingCommand } from '@/features/source-editor/utils/tree-operations/formatting'
  132. import { isSplitTestEnabled } from '@/utils/splitTestUtils'
  133. import { isMac } from '@/shared/utils/os'
  134. +import { useProjectContext } from '@/shared/context/project-context'
  135. export const ToolbarItems: FC<{
  136. state: EditorState
  137. @@ -31,6 +32,7 @@ export const ToolbarItems: FC<{
  138. const { t } = useTranslation()
  139. const { toggleSymbolPalette, showSymbolPalette, writefullInstance } =
  140. useEditorContext()
  141. + const { features } = useProjectContext()
  142. const isActive = withinFormattingCommand(state)
  143. const symbolPaletteAvailable = getMeta('ol-symbolPaletteAvailable')
  144. @@ -127,13 +129,15 @@ export const ToolbarItems: FC<{
  145. command={commands.wrapInHref}
  146. icon="add_link"
  147. />
  148. - <ToolbarButton
  149. - id="toolbar-add-comment"
  150. - label={t('add_comment')}
  151. - disabled={state.selection.main.empty}
  152. - command={commands.addComment}
  153. - icon="add_comment"
  154. - />
  155. + {features.trackChangesVisible && (
  156. + <ToolbarButton
  157. + id="toolbar-add-comment"
  158. + label={t('add_comment')}
  159. + disabled={state.selection.main.empty}
  160. + command={commands.addComment}
  161. + icon="add_comment"
  162. + />
  163. + )}
  164. <ToolbarButton
  165. id="toolbar-ref"
  166. label={t('toolbar_insert_cross_reference')}
  167. 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
  168. index d6677878108..58ac3e443da 100644
  169. --- a/services/web/test/frontend/features/review-panel/review-panel.spec.tsx
  170. +++ b/services/web/test/frontend/features/review-panel/review-panel.spec.tsx
  171. @@ -181,6 +181,7 @@ describe('<ReviewPanel />', function () {
  172. removeChangeIds,
  173. },
  174. },
  175. + projectFeatures: { trackChangesVisible: true },
  176. })
  177. cy.wrap(scope).as('scope')
  178. @@ -626,7 +627,7 @@ describe('<ReviewPanel /> for free users', function () {
  179. function mountEditor(ownerId = USER_ID) {
  180. const scope = mockScope(undefined, {
  181. permissions: { write: true, trackedWrite: false, comment: true },
  182. - projectFeatures: { trackChanges: false },
  183. + projectFeatures: { trackChanges: false, trackChangesVisible: true },
  184. projectOwner: {
  185. _id: ownerId,
  186. },
  187. 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
  188. index b86207fb0f7..dfce8134d1c 100644
  189. --- a/services/web/test/frontend/features/share-project-modal/components/share-project-modal.test.jsx
  190. +++ b/services/web/test/frontend/features/share-project-modal/components/share-project-modal.test.jsx
  191. @@ -694,6 +694,7 @@ describe('<ShareProjectModal/>', function () {
  192. features: {
  193. collaborators: 0,
  194. compileGroup: 'standard',
  195. + trackChangesVisible: true,
  196. },
  197. },
  198. },
  199. @@ -723,6 +724,7 @@ describe('<ShareProjectModal/>', function () {
  200. ...project,
  201. features: {
  202. collaborators: 1,
  203. + trackChangesVisible: true,
  204. },
  205. members: [
  206. {