mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-21 20:47:08 -05:00
29 lines
899 B
TypeScript
29 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 })
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|