Przeglądaj źródła

Hide reviewer options for community edition (#25944)

GitOrigin-RevId: 7eba3d193e3a0ab37006cb42dd945ba40703136f
Domagoj Kriskovic 1 rok temu
rodzic
commit
04e026904f

+ 4 - 1
services/web/frontend/js/features/ide-redesign/components/rail.tsx

@@ -52,6 +52,7 @@ import OldErrorPane from './error-logs/old-error-pane'
 import { useFeatureFlag } from '@/shared/context/split-test-context'
 import { useSurveyUrl } from '../hooks/use-survey-url'
 import NewErrorLogsPromo from './error-logs/new-error-logs-promo'
+import { useProjectContext } from '@/shared/context/project-context'
 
 type RailElement = {
   icon: AvailableUnfilledIcon
@@ -111,6 +112,7 @@ export const RailLayout = () => {
     setResizing,
   } = useRailContext()
   const { logEntries } = useCompileContext()
+  const { features } = useProjectContext()
   const errorLogsDisabled = !logEntries
 
   const errorsTabRef = useRef<HTMLAnchorElement>(null)
@@ -149,6 +151,7 @@ export const RailLayout = () => {
         icon: 'rate_review',
         title: t('review_panel'),
         component: null,
+        hide: !features.trackChangesVisible,
       },
       {
         key: 'chat',
@@ -167,7 +170,7 @@ export const RailLayout = () => {
         disabled: errorLogsDisabled,
       },
     ],
-    [t, errorLogsDisabled, newErrorlogs]
+    [t, features.trackChangesVisible, newErrorlogs, errorLogsDisabled]
   )
 
   const railActions: RailAction[] = useMemo(

+ 6 - 0
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>

+ 19 - 9
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">

+ 16 - 8
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 = {

+ 4 - 2
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 }) => (

+ 11 - 7
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')}

+ 2 - 1
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,
       },

+ 2 - 0
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: [
             {