Migrating reference settings to mongo and exposing them through code … (#31726)

* Migrating reference settings to mongo and exposing them through code mirror context

* removing undefined optional for reference manager type settings

* allowing partial updates to user settings objects, and remove repeated cypress intercepts

* Zod schema parsing for user reference manager settings

* Splitting ref provider mongoose schema into const

* Persisting local storage reference settings to mongo and deleting from local

* Enforcing ref provider group id to always be type string

* Fixing test and format errors

* Migrated flag for settings to only migrate once

* fixing cypress tests adding migrated flag

* persisting local storage to allow for easy rollback

GitOrigin-RevId: f59522bdee6f0e56efb7d98b9d9373a743619ec8
This commit is contained in:
l-obrien-overleaf
2026-03-26 09:07:40 +00:00
committed by Copybot
parent 03c30a9d1b
commit 27e5044d30
9 changed files with 368 additions and 0 deletions
@@ -33,6 +33,9 @@ type ProjectSettingsSetterContextValue = {
setMathPreview: (mathPreview: UserSettings['mathPreview']) => void
setBreadcrumbs: (breadcrumbs: UserSettings['breadcrumbs']) => void
setDarkModePdf: (darkModePdf: UserSettings['darkModePdf']) => void
setZotero: (zotero: UserSettings['zotero']) => void
setMendeley: (mendeley: UserSettings['mendeley']) => void
setPapers: (papers: UserSettings['papers']) => void
}
type ProjectSettingsContextValue = Partial<ProjectSettings> &
@@ -88,6 +91,12 @@ export const ProjectSettingsProvider: FC<React.PropsWithChildren> = ({
setBreadcrumbs,
darkModePdf,
setDarkModePdf,
zotero,
setZotero,
mendeley,
setMendeley,
papers,
setPapers,
} = useUserWideSettings()
useProjectWideSettingsSocketListener()
@@ -132,6 +141,12 @@ export const ProjectSettingsProvider: FC<React.PropsWithChildren> = ({
setBreadcrumbs,
darkModePdf,
setDarkModePdf,
zotero,
setZotero,
mendeley,
setMendeley,
papers,
setPapers,
}),
[
compiler,
@@ -172,6 +187,12 @@ export const ProjectSettingsProvider: FC<React.PropsWithChildren> = ({
setBreadcrumbs,
darkModePdf,
setDarkModePdf,
zotero,
setZotero,
mendeley,
setMendeley,
papers,
setPapers,
]
)
@@ -24,6 +24,9 @@ export default function useUserWideSettings() {
mathPreview,
breadcrumbs,
darkModePdf,
zotero,
mendeley,
papers,
} = userSettings
const setOverallTheme = useSetOverallTheme()
@@ -125,6 +128,27 @@ export default function useUserWideSettings() {
[saveUserSettings]
)
const setZotero = useCallback(
(zotero: UserSettings['zotero']) => {
saveUserSettings('zotero', { ...zotero, migrated: true })
},
[saveUserSettings]
)
const setMendeley = useCallback(
(mendeley: UserSettings['mendeley']) => {
saveUserSettings('mendeley', { ...mendeley, migrated: true })
},
[saveUserSettings]
)
const setPapers = useCallback(
(papers: UserSettings['papers']) => {
saveUserSettings('papers', { ...papers, migrated: true })
},
[saveUserSettings]
)
return {
autoComplete,
setAutoComplete,
@@ -156,5 +180,11 @@ export default function useUserWideSettings() {
setBreadcrumbs,
darkModePdf,
setDarkModePdf,
zotero,
setZotero,
mendeley,
setMendeley,
papers,
setPapers,
}
}