overleaf/services/web/frontend/js/features/ide-react/scope-adapters/editor-manager-context-adapter.ts
Domagoj Kriskovic da2f7ff153 Store editor selection on a per-user rather than per-project basis (#16246)
* Store editor selection on a per-user rather than per-project basis

* set code editor if rich_text=false

* format fix

GitOrigin-RevId: 8efc33b682de211162e674839e6b891ec04e542e
2023-12-19 09:04:31 +00:00

48 lines
1.3 KiB
TypeScript

import { ReactScopeValueStore } from '@/features/ide-react/scope-value-store/react-scope-value-store'
import customLocalStorage from '@/infrastructure/local-storage'
export function populateEditorScope(
store: ReactScopeValueStore,
projectId: string
) {
// This value is not used in the React code. It's just here to prevent errors
// from EditorProvider
store.set('state.loading', false)
store.set('project.name', null)
store.set('editor', {
showSymbolPalette: false,
toggleSymbolPalette: () => {},
sharejs_doc: null,
open_doc_id: null,
open_doc_name: null,
opening: true,
trackChanges: false,
wantTrackChanges: false,
// No Ace here
newSourceEditor: true,
error_state: false,
})
store.persisted(
'editor.showVisual',
showVisualFallbackValue(projectId),
`editor.lastUsedMode`,
{
toPersisted: showVisual => (showVisual ? 'visual' : 'code'),
fromPersisted: mode => mode === 'visual',
}
)
}
function showVisualFallbackValue(projectId: string) {
const editorModeKey = `editor.mode.${projectId}`
const editorModeVal = customLocalStorage.getItem(editorModeKey)
if (editorModeVal) {
// clean up the old key
customLocalStorage.removeItem(editorModeKey)
}
return editorModeVal === 'rich-text'
}