new-editor-utils.ts 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import { useUserSettingsContext } from '@/shared/context/user-settings-context'
  2. import getMeta from '@/utils/meta'
  3. import { isSplitTestEnabled, getSplitTestVariant } from '@/utils/splitTestUtils'
  4. // TODO: change this when we have a launch date
  5. const NEW_USER_CUTOFF_DATE = new Date('2100-01-01')
  6. const isNewUser = () => {
  7. const user = getMeta('ol-user')
  8. if (!user.signUpDate) return false
  9. const createdAt = new Date(user.signUpDate)
  10. return createdAt > NEW_USER_CUTOFF_DATE
  11. }
  12. export const canUseNewEditor = () => {
  13. const newUserTestVariant = getSplitTestVariant('editor-redesign-new-users')
  14. const canUseNewEditorViaPrimaryFeatureFlag =
  15. isSplitTestEnabled('editor-redesign')
  16. const canUseNewEditorViaNewUserFeatureFlag =
  17. isNewUser() &&
  18. (newUserTestVariant === 'new-editor' ||
  19. newUserTestVariant === 'new-editor-old-logs')
  20. return (
  21. canUseNewEditorViaPrimaryFeatureFlag || canUseNewEditorViaNewUserFeatureFlag
  22. )
  23. }
  24. const canUseNewLogs = () => {
  25. const newUserTestVariant = getSplitTestVariant('editor-redesign-new-users')
  26. const canUseNewLogsViaPrimaryFeatureFlag =
  27. isSplitTestEnabled('editor-redesign')
  28. const canUseNewLogsViaNewUserFeatureFlag =
  29. isNewUser() && newUserTestVariant === 'new-editor'
  30. return (
  31. canUseNewLogsViaPrimaryFeatureFlag || canUseNewLogsViaNewUserFeatureFlag
  32. )
  33. }
  34. export const useIsNewEditorEnabled = () => {
  35. const { userSettings } = useUserSettingsContext()
  36. const hasAccess = canUseNewEditor()
  37. const enabled = userSettings.enableNewEditor
  38. return hasAccess && enabled
  39. }
  40. export const useAreNewErrorLogsEnabled = () => {
  41. const newEditorEnabled = useIsNewEditorEnabled()
  42. return newEditorEnabled && canUseNewLogs()
  43. }