new-editor-utils.ts 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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 canUseNewEditorViaPrimaryFeatureFlag = () => {
  13. return isSplitTestEnabled('editor-redesign')
  14. }
  15. export const canUseNewEditorViaNewUserFeatureFlag = () => {
  16. const newUserTestVariant = getSplitTestVariant('editor-redesign-new-users')
  17. return (
  18. !canUseNewEditorViaPrimaryFeatureFlag() &&
  19. isNewUser() &&
  20. (newUserTestVariant === 'new-editor' ||
  21. newUserTestVariant === 'new-editor-old-logs')
  22. )
  23. }
  24. export const canUseNewEditor = () => {
  25. return (
  26. canUseNewEditorViaPrimaryFeatureFlag() ||
  27. canUseNewEditorViaNewUserFeatureFlag()
  28. )
  29. }
  30. const canUseNewLogs = () => {
  31. const newUserTestVariant = getSplitTestVariant('editor-redesign-new-users')
  32. const canUseNewLogsViaNewUserFeatureFlag =
  33. isNewUser() && newUserTestVariant === 'new-editor'
  34. return (
  35. canUseNewEditorViaPrimaryFeatureFlag() || canUseNewLogsViaNewUserFeatureFlag
  36. )
  37. }
  38. export const useIsNewEditorEnabledViaPrimaryFeatureFlag = () => {
  39. const { userSettings } = useUserSettingsContext()
  40. const hasAccess = canUseNewEditorViaPrimaryFeatureFlag()
  41. const enabled = userSettings.enableNewEditor
  42. return hasAccess && enabled
  43. }
  44. export const useIsNewEditorEnabled = () => {
  45. const { userSettings } = useUserSettingsContext()
  46. const hasAccess = canUseNewEditor()
  47. const enabled = userSettings.enableNewEditor
  48. return hasAccess && enabled
  49. }
  50. export const useAreNewErrorLogsEnabled = () => {
  51. const newEditorEnabled = useIsNewEditorEnabled()
  52. return newEditorEnabled && canUseNewLogs()
  53. }