import { DropdownDivider } from '@/shared/components/dropdown/dropdown-menu'
import { useTranslation } from 'react-i18next'
import { useEditorPropertiesContext } from '../../context/editor-properties-context'
import OLDropdownMenuItem from '@/shared/components/ol/ol-dropdown-menu-item'
import { sendMB } from '@/infrastructure/event-tracking'
import { useIdeReactContext } from '../../context/ide-react-context'
import { usePermissionsContext } from '../../context/permissions-context'
import { useProjectContext } from '@/shared/context/project-context'
import { useEditorContext } from '@/shared/context/editor-context'
import { NestedMenuBarDropdown } from '@/shared/components/menu-bar/menu-bar-dropdown'
import { useUserContext } from '@/shared/context/user-context'
function getMode(permissionsLevel: string, wantTrackChanges: boolean) {
if (permissionsLevel === 'readOnly') {
return 'view'
}
if (permissionsLevel === 'review') {
return 'review'
}
if (wantTrackChanges) {
return 'review'
}
return 'edit'
}
const ReviewModeOptions: React.FC = () => {
const { t } = useTranslation()
const { wantTrackChanges } = useEditorPropertiesContext()
const { write, trackedWrite } = usePermissionsContext()
const { permissionsLevel } = useIdeReactContext()
const { features } = useProjectContext()
const { setUpgradeTrackChangesModal } = useEditorContext()
const user = useUserContext()
const mode = getMode(permissionsLevel, wantTrackChanges)
const showViewOption = mode === 'view'
if (!features.trackChangesVisible) {
return null
}
return (
<>
{
if (mode === 'edit') {
return
}
sendMB('editing-mode-change', {
role: permissionsLevel,
previousMode: mode,
newMode: 'edit',
})
window.dispatchEvent(new Event('toggle-track-changes'))
}}
leadingIcon="edit"
active={write && mode === 'edit'}
>
{t('editing')}
{
if (mode === 'review') {
return
}
if (!features.trackChanges) {
setUpgradeTrackChangesModal({
show: true,
location: 'menu-bar',
})
} else {
sendMB('editing-mode-change', {
role: permissionsLevel,
previousMode: mode,
newMode: mode,
})
window.dispatchEvent(new Event('toggle-track-changes'))
}
}}
leadingIcon="rate_review"
active={trackedWrite && mode === 'review'}
>
{t('reviewing')}
{showViewOption && (
{t('viewing')}
)}
>
)
}
export default ReviewModeOptions