use-tracking-changes-mode.ts 874 B

12345678910111213141516171819202122232425262728
  1. import { useIdeReactContext } from '@/features/ide-react/context/ide-react-context'
  2. import { useTrackChangesStateContext } from '@/features/review-panel/context/track-changes-state-context'
  3. import { useUserContext } from '../context/user-context'
  4. type Mode = 'view' | 'review' | 'edit'
  5. export const useTrackingChangesMode = (): Mode => {
  6. const trackChanges = useTrackChangesStateContext()
  7. const user = useUserContext()
  8. const { permissionsLevel } = useIdeReactContext()
  9. if (permissionsLevel === 'readOnly') {
  10. return 'view'
  11. } else if (permissionsLevel === 'review') {
  12. return 'review'
  13. }
  14. const trackChangesForCurrentUser =
  15. trackChanges?.onForEveryone ||
  16. (user?.id && trackChanges?.onForMembers[user.id]) ||
  17. (!user?.id && trackChanges?.onForGuests)
  18. if (trackChangesForCurrentUser) {
  19. return 'review'
  20. } else {
  21. return 'edit'
  22. }
  23. }