| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- import SplitTestHandler from '../SplitTests/SplitTestHandler.mjs'
- // Copied from services/web/frontend/js/features/ide-redesign/utils/new-editor-utils.ts
- const SPLIT_TEST_USER_CUTOFF_DATE = new Date(Date.UTC(2025, 8, 23, 13, 0, 0)) // 2pm British Summer Time on September 23, 2025
- const NEW_USER_CUTOFF_DATE = new Date(Date.UTC(2025, 10, 12, 12, 0, 0)) // 12pm GMT on November 12, 2025
- async function getEnableNewEditorLegacyDefault(req, res, user) {
- if (req.query['existing-user-override'] === 'true') {
- return false
- }
- if (req.query['skip-new-user-check'] === 'true') {
- return true
- }
- if (user.signUpDate >= NEW_USER_CUTOFF_DATE) {
- return true
- }
- if (user.signUpDate >= SPLIT_TEST_USER_CUTOFF_DATE) {
- const assignment = await SplitTestHandler.promises.getAssignment(
- req,
- res,
- 'editor-redesign-new-users'
- )
- return assignment.variant !== 'default'
- }
- return false
- }
- async function buildUserSettings(req, res, user) {
- const defaultLegacyEnableNewEditor = await getEnableNewEditorLegacyDefault(
- req,
- res,
- user
- )
- const enableNewEditorStageFour = user.ace.enableNewEditorStageFour ?? true
- const enableNewEditorLegacy =
- user.ace.enableNewEditor ?? defaultLegacyEnableNewEditor
- return {
- mode: user.ace.mode,
- editorTheme: user.ace.theme,
- editorLightTheme: user.ace.lightTheme,
- editorDarkTheme: user.ace.darkTheme,
- fontSize: user.ace.fontSize,
- autoComplete: user.ace.autoComplete,
- autoPairDelimiters: user.ace.autoPairDelimiters,
- pdfViewer: user.ace.pdfViewer,
- syntaxValidation: user.ace.syntaxValidation,
- fontFamily: user.ace.fontFamily || 'lucida',
- lineHeight: user.ace.lineHeight || 'normal',
- overallTheme: user.ace.overallTheme,
- mathPreview: user.ace.mathPreview,
- breadcrumbs: user.ace.breadcrumbs,
- referencesSearchMode: user.ace.referencesSearchMode,
- enableNewEditor: enableNewEditorStageFour,
- enableNewEditorLegacy,
- darkModePdf: user.ace.darkModePdf ?? false,
- }
- }
- export default {
- buildUserSettings,
- }
|