use-save-user-settings.tsx 612 B

12345678910111213141516171819202122
  1. import useScopeValue from '../../../shared/hooks/use-scope-value'
  2. import { saveUserSettings } from '../utils/api'
  3. import type { UserSettings } from '../utils/api'
  4. export default function useSaveUserSettings() {
  5. const [userSettings, setUserSettings] = useScopeValue<UserSettings>(
  6. 'settings',
  7. true
  8. )
  9. return (
  10. key: keyof UserSettings,
  11. newSetting: UserSettings[keyof UserSettings]
  12. ) => {
  13. const currentSetting = userSettings[key]
  14. if (currentSetting !== newSetting) {
  15. setUserSettings({ ...userSettings, [key]: newSetting })
  16. saveUserSettings(key, newSetting)
  17. }
  18. }
  19. }