import { forwardRef, memo, MouseEventHandler, useState } from 'react' import { Dropdown, DropdownMenu, DropdownToggle, } from '@/features/ui/components/bootstrap-5/dropdown-menu' import OLDropdownMenuItem from '@/features/ui/components/ol/ol-dropdown-menu-item' import MaterialIcon from '@/shared/components/material-icon' import classNames from 'classnames' import { useTrackChangesStateActionsContext, useTrackChangesStateContext, } from '../context/track-changes-state-context' import { useUserContext } from '@/shared/context/user-context' import { useTranslation } from 'react-i18next' import { usePermissionsContext } from '@/features/ide-react/context/permissions-context' import usePersistedState from '@/shared/hooks/use-persisted-state' import { sendMB } from '@/infrastructure/event-tracking' import { useEditorContext } from '@/shared/context/editor-context' import { useProjectContext } from '@/shared/context/project-context' import UpgradeTrackChangesModal from './upgrade-track-changes-modal' type Mode = 'view' | 'review' | 'edit' const useCurrentMode = (): Mode => { const trackChanges = useTrackChangesStateContext() const user = useUserContext() const trackChangesForCurrentUser = trackChanges?.onForEveryone || (user && user.id && trackChanges?.onForMembers[user.id]) const { permissionsLevel } = useEditorContext() if (permissionsLevel === 'readOnly') { return 'view' } else if (permissionsLevel === 'review') { return 'review' } else if (trackChangesForCurrentUser) { return 'review' } else { return 'edit' } } function ReviewModeSwitcher() { const { t } = useTranslation() const { saveTrackChangesForCurrentUser } = useTrackChangesStateActionsContext() const mode = useCurrentMode() const { permissionsLevel } = useEditorContext() const { write, trackedWrite } = usePermissionsContext() const project = useProjectContext() const [showUpgradeModal, setShowUpgradeModal] = useState(false) const showViewOption = permissionsLevel === 'readOnly' return (