Disable track changes for reviewers in free projects (#24368)

* Disable track changes for reviewers in free projects

* cleanup_unused_locales

GitOrigin-RevId: 806ee20c0aed5ef61352041782af620cec72ed70
This commit is contained in:
Domagoj Kriskovic
2025-03-24 10:49:20 +00:00
committed by Copybot
parent 47fb3a644c
commit 7f67df2468
4 changed files with 65 additions and 31 deletions
@@ -9,6 +9,7 @@ import {
import useScopeValue from '@/shared/hooks/use-scope-value'
import { DeepReadonly } from '../../../../../types/utils'
import useViewerPermissions from '@/shared/hooks/use-viewer-permissions'
import { useProjectContext } from '@/shared/context/project-context'
export const PermissionsContext = createContext<Permissions | undefined>(
undefined
@@ -71,6 +72,13 @@ const linkSharingWarningPermissionsMap: typeof permissionsMap = {
owner: permissionsMap.owner,
}
const noTrackChangesPermissionsMap: typeof permissionsMap = {
readOnly: permissionsMap.readOnly,
readAndWrite: permissionsMap.readAndWrite,
review: { ...permissionsMap.review, trackedWrite: false },
owner: permissionsMap.owner,
}
export const PermissionsProvider: React.FC = ({ children }) => {
const [permissions, setPermissions] =
useScopeValue<Readonly<Permissions>>('permissions')
@@ -80,18 +88,27 @@ export const PermissionsProvider: React.FC = ({ children }) => {
}
const hasViewerPermissions = useViewerPermissions()
const anonymous = getMeta('ol-anonymous')
const project = useProjectContext()
useEffect(() => {
let activePermissionsMap
if (hasViewerPermissions) {
activePermissionsMap = linkSharingWarningPermissionsMap
} else if (anonymous) {
activePermissionsMap = anonymousPermissionsMap
} else if (!project.features.trackChanges) {
activePermissionsMap = noTrackChangesPermissionsMap
} else {
activePermissionsMap = anonymous
? anonymousPermissionsMap
: permissionsMap
activePermissionsMap = permissionsMap
}
setPermissions(activePermissionsMap[permissionsLevel])
}, [anonymous, permissionsLevel, setPermissions, hasViewerPermissions])
}, [
anonymous,
permissionsLevel,
setPermissions,
hasViewerPermissions,
project.features.trackChanges,
])
useEffect(() => {
if (connectionState.forceDisconnected) {