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
This commit is contained in:
Domagoj Kriskovic
2025-01-28 14:14:45 +01:00
committed by Copybot
parent 6245e81f42
commit ea918f3674
5 changed files with 25 additions and 17 deletions

View File

@@ -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',

View File

@@ -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"

View File

@@ -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"

View File

@@ -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}
/>
)}
</>
)
}

View File

@@ -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">