new-editor-utils.ts 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import { useFeatureFlag } from '@/shared/context/split-test-context'
  2. import { useUserSettingsContext } from '@/shared/context/user-settings-context'
  3. import getMeta from '@/utils/meta'
  4. // For e2e tests purposes, allow overriding to old editor
  5. export const oldEditorOverride =
  6. new URLSearchParams(window.location.search).get('old-editor-override') ===
  7. 'true'
  8. // We don't want to enable the new editor on server-pro/CE until we have fully rolled it out on SaaS
  9. const { isOverleaf } = getMeta('ol-ExposedSettings')
  10. export const canUseNewEditor = () => {
  11. return isOverleaf && !oldEditorOverride
  12. }
  13. export const useIsNewEditorEnabled = () => {
  14. const { userSettings } = useUserSettingsContext()
  15. const noOptOut = useFeatureFlag('editor-redesign-no-opt-out')
  16. const hasAccess = canUseNewEditor()
  17. if (!hasAccess) {
  18. return false
  19. }
  20. const enabled = userSettings.enableNewEditor
  21. if (noOptOut) {
  22. return true
  23. }
  24. return enabled
  25. }
  26. export const useIsNewToNewEditor = () => {
  27. const { userSettings } = useUserSettingsContext()
  28. const newEditor = useIsNewEditorEnabled()
  29. return newEditor && !userSettings.enableNewEditorLegacy
  30. }