overleaf/services/web/frontend/js/features/editor-left-menu/hooks/use-save-user-settings.tsx
M Fahru 414540af5c Reduce save/setScope user setting duplication by introducing a new shared hooks
GitOrigin-RevId: 6054143eb042e4ff336b1f325a8cef693ae8c4bd
2023-01-11 09:06:19 +00:00

19 lines
619 B
TypeScript

import useScopeValue from '../../../shared/hooks/use-scope-value'
import { saveUserSettings } from '../utils/api'
import type { UserSettingsScope } from '../utils/api'
export default function useSaveUserSettings() {
const [userSettingsScope, setUserSettingsScope] = useScopeValue<UserSettingsScope>(
'settings',
true
)
return <T,>(key: keyof UserSettingsScope, newSetting: T) => {
const currentSetting = userSettingsScope[key]
if (currentSetting !== newSetting) {
setUserSettingsScope({ ...userSettingsScope, [key]: newSetting })
saveUserSettings({ [key]: newSetting })
}
}
}