Просмотр исходного кода

Refactor `saveUserSettings`: Move `sendMB` inside the function and change function from supporting multiple settings to only support single key/value pair.

GitOrigin-RevId: 77b9d8fd5cdcbc78f38fd42329b74cf592615638
M Fahru 3 лет назад
Родитель
Сommit
654144dd40

+ 1 - 7
services/web/frontend/js/features/editor-left-menu/hooks/use-save-user-settings.tsx

@@ -1,5 +1,4 @@
 import useScopeValue from '../../../shared/hooks/use-scope-value'
-import { sendMB } from '../../../infrastructure/event-tracking'
 import { saveUserSettings } from '../utils/api'
 import type { UserSettings } from '../utils/api'
 
@@ -15,14 +14,9 @@ export default function useSaveUserSettings() {
   ) => {
     const currentSetting = userSettings[key]
 
-    sendMB('setting-changed', {
-      changedSetting: key,
-      changedSettingVal: newSetting,
-    })
-
     if (currentSetting !== newSetting) {
       setUserSettings({ ...userSettings, [key]: newSetting })
-      saveUserSettings({ [key]: newSetting })
+      saveUserSettings(key, newSetting)
     }
   }
 }

+ 1 - 1
services/web/frontend/js/features/editor-left-menu/hooks/use-set-overall-theme.tsx

@@ -55,7 +55,7 @@ export default function useSetOverallTheme() {
           setLoadingStyleSheet(true)
           setChosenTheme(chosenTheme)
           setOverallTheme(newOverallTheme)
-          saveUserSettings({ overallTheme: newOverallTheme })
+          saveUserSettings('overallTheme', newOverallTheme)
         }
       }
     },

+ 1 - 7
services/web/frontend/js/features/editor-left-menu/hooks/use-set-spell-check-language.tsx

@@ -1,5 +1,4 @@
 import { useCallback } from 'react'
-import { sendMB } from '../../../infrastructure/event-tracking'
 import { useProjectContext } from '../../../shared/context/project-context'
 import useScopeValue from '../../../shared/hooks/use-scope-value'
 import {
@@ -20,11 +19,6 @@ export default function useSetSpellCheckLanguage() {
         newSpellCheckLanguage && newSpellCheckLanguage !== spellCheckLanguage
 
       if (allowUpdate) {
-        sendMB('setting-changed', {
-          changedSetting: 'spellCheckLanguage',
-          changedSettingVal: newSpellCheckLanguage,
-        })
-
         setSpellCheckLanguage(newSpellCheckLanguage)
 
         // save to both project setting and user setting
@@ -32,7 +26,7 @@ export default function useSetSpellCheckLanguage() {
           projectId,
           spellCheckLanguage: newSpellCheckLanguage,
         })
-        saveUserSettings({ spellCheckLanguage: newSpellCheckLanguage })
+        saveUserSettings('spellCheckLanguage', newSpellCheckLanguage)
       }
     },
     [projectId, setSpellCheckLanguage, spellCheckLanguage]

+ 11 - 2
services/web/frontend/js/features/editor-left-menu/utils/api.ts

@@ -8,6 +8,7 @@ import type {
   PdfViewer,
   ProjectCompiler,
 } from '../../../../../types/project-settings'
+import { sendMB } from '../../../infrastructure/event-tracking'
 import { postJSON } from '../../../infrastructure/fetch-json'
 
 export type UserSettings = {
@@ -36,10 +37,18 @@ type SaveUserSettings = Partial<
   }
 >
 
-export function saveUserSettings(data: SaveUserSettings) {
+export function saveUserSettings(
+  key: keyof SaveUserSettings,
+  value: SaveUserSettings[keyof SaveUserSettings]
+) {
+  sendMB('setting-changed', {
+    changedSetting: key,
+    changedSettingVal: value,
+  })
+
   postJSON('/user/settings', {
     body: {
-      ...data,
+      [key]: value,
     },
   })
 }