Эх сурвалжийг харах

Disable restore project/file and project settings for a reviewer (#23104)

* Disable restore project/file and project settings for a reviewer

* hide github menu

* use permissions context

GitOrigin-RevId: a705ecf8bc1f722b8818baef85c5411e7a762989
Domagoj Kriskovic 1 жил өмнө
parent
commit
ea918f3674

+ 3 - 3
services/web/frontend/js/features/editor-left-menu/components/settings/settings-compiler.tsx

@@ -1,19 +1,19 @@
 import { useTranslation } from 'react-i18next'
 import type { ProjectCompiler } from '../../../../../../types/project-settings'
-import { useEditorContext } from '../../../../shared/context/editor-context'
+import { usePermissionsContext } from '@/features/ide-react/context/permissions-context'
 import { useProjectSettingsContext } from '../../context/project-settings-context'
 import SettingsMenuSelect from './settings-menu-select'
 
 export default function SettingsCompiler() {
   const { t } = useTranslation()
-  const { permissionsLevel } = useEditorContext()
+  const { write } = usePermissionsContext()
   const { compiler, setCompiler } = useProjectSettingsContext()
 
   return (
     <SettingsMenuSelect<ProjectCompiler>
       onChange={setCompiler}
       value={compiler}
-      disabled={permissionsLevel === 'readOnly'}
+      disabled={!write}
       options={[
         {
           value: 'pdflatex',

+ 3 - 3
services/web/frontend/js/features/editor-left-menu/components/settings/settings-document.tsx

@@ -1,7 +1,7 @@
 import { useMemo } from 'react'
 import { useTranslation } from 'react-i18next'
 import { isValidTeXFile } from '../../../../main/is-valid-tex-file'
-import { useEditorContext } from '../../../../shared/context/editor-context'
+import { usePermissionsContext } from '@/features/ide-react/context/permissions-context'
 import { useProjectSettingsContext } from '../../context/project-settings-context'
 import SettingsMenuSelect from './settings-menu-select'
 import type { Option } from './settings-menu-select'
@@ -9,7 +9,7 @@ import { useFileTreeData } from '@/shared/context/file-tree-data-context'
 
 export default function SettingsDocument() {
   const { t } = useTranslation()
-  const { permissionsLevel } = useEditorContext()
+  const { write } = usePermissionsContext()
   const { docs } = useFileTreeData()
   const { rootDocId, setRootDocId } = useProjectSettingsContext()
 
@@ -39,7 +39,7 @@ export default function SettingsDocument() {
     <SettingsMenuSelect
       onChange={setRootDocId}
       value={rootDocId ?? ''}
-      disabled={permissionsLevel === 'readOnly'}
+      disabled={!write}
       options={validDocsOptions}
       label={t('main_document')}
       name="rootDocId"

+ 3 - 3
services/web/frontend/js/features/editor-left-menu/components/settings/settings-image-name.tsx

@@ -4,12 +4,12 @@ import getMeta from '../../../../utils/meta'
 import SettingsMenuSelect from './settings-menu-select'
 import type { Option } from './settings-menu-select'
 import { useProjectSettingsContext } from '../../context/project-settings-context'
-import { useEditorContext } from '@/shared/context/editor-context'
+import { usePermissionsContext } from '@/features/ide-react/context/permissions-context'
 
 export default function SettingsImageName() {
   const { t } = useTranslation()
   const { imageName, setImageName } = useProjectSettingsContext()
-  const { permissionsLevel } = useEditorContext()
+  const { write } = usePermissionsContext()
 
   const allowedImageNames = useMemo(
     () => getMeta('ol-allowedImageNames') || [],
@@ -33,7 +33,7 @@ export default function SettingsImageName() {
     <SettingsMenuSelect
       onChange={setImageName}
       value={imageName}
-      disabled={permissionsLevel === 'readOnly'}
+      disabled={!write}
       options={options}
       label={t('tex_live_version')}
       name="imageName"

+ 11 - 6
services/web/frontend/js/features/history/components/change-list/dropdown/history-dropdown-content.tsx

@@ -4,6 +4,7 @@ import { Version } from '../../../services/types/update'
 import { useCallback } from 'react'
 import { ActiveDropdown } from '../../../hooks/use-dropdown-active-item'
 import RestoreProject from './menu-item/restore-project'
+import { usePermissionsContext } from '@/features/ide-react/context/permissions-context'
 
 type VersionDropdownContentProps = {
   projectId: string
@@ -22,6 +23,8 @@ function HistoryDropdownContent({
     closeDropdownForItem(version, 'moreOptions')
   }, [closeDropdownForItem, version])
 
+  const { write } = usePermissionsContext()
+
   return (
     <>
       <AddLabel
@@ -34,12 +37,14 @@ function HistoryDropdownContent({
         version={version}
         closeDropdown={closeDropdown}
       />
-      <RestoreProject
-        projectId={projectId}
-        version={version}
-        closeDropdown={closeDropdown}
-        endTimestamp={endTimestamp}
-      />
+      {write && (
+        <RestoreProject
+          projectId={projectId}
+          version={version}
+          closeDropdown={closeDropdown}
+          endTimestamp={endTimestamp}
+        />
+      )}
     </>
   )
 }

+ 5 - 2
services/web/frontend/js/features/history/components/diff-view/toolbar/toolbar.tsx

@@ -8,6 +8,7 @@ import { isFileRemoved } from '../../../utils/file-diff'
 import ToolbarRestoreFileToVersionButton from './toolbar-restore-file-to-version-button'
 import { useFeatureFlag } from '@/shared/context/split-test-context'
 import SplitTestBadge from '@/shared/components/split-test-badge'
+import { usePermissionsContext } from '@/features/ide-react/context/permissions-context'
 
 type ToolbarProps = {
   diff: Nullable<Diff>
@@ -15,15 +16,17 @@ type ToolbarProps = {
 }
 
 export default function Toolbar({ diff, selection }: ToolbarProps) {
+  const { write } = usePermissionsContext()
   const hasRestoreFileToVersion = useFeatureFlag('revert-file')
 
   const showRestoreFileToVersionButton =
-    hasRestoreFileToVersion && selection.selectedFile
+    hasRestoreFileToVersion && selection.selectedFile && write
 
   const showRestoreFileButton =
     selection.selectedFile &&
     isFileRemoved(selection.selectedFile) &&
-    !showRestoreFileToVersionButton
+    !showRestoreFileToVersionButton &&
+    write
 
   return (
     <div className="history-react-toolbar">