overleaf/services/web/frontend/js/features/editor-left-menu/hooks/use-save-project-settings.tsx
M Fahru 7475237170 Refactor project-wide settings:
- Change api function argument (readability)
- create a new wrapper hooks for saving the project to both server-side and angular scope
- Implement the new save project settings hooks on project-wide settings update
- On spell check language update function, add new comment to give more context about the decision

GitOrigin-RevId: 93d558d1e1d4db265a943eeb4366842430900c43
2023-01-11 09:09:40 +00:00

28 lines
899 B
TypeScript

import { type ProjectSettings, saveProjectSettings } from '../utils/api'
import { useProjectContext } from '../../../shared/context/project-context'
import useScopeValue from '../../../shared/hooks/use-scope-value'
export default function useSaveProjectSettings() {
// projectSettings value will be undefined on mount
const [projectSettings, setProjectSettings] = useScopeValue<
ProjectSettings | undefined
>('project', true)
const { _id: projectId } = useProjectContext()
return async (
key: keyof ProjectSettings,
newSetting: ProjectSettings[keyof ProjectSettings]
) => {
if (projectSettings) {
const currentSetting = projectSettings[key]
if (currentSetting !== newSetting) {
await saveProjectSettings(projectId, {
[key]: newSetting,
})
setProjectSettings({ ...projectSettings, [key]: newSetting })
}
}
}
}