api.ts 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import type { ProjectCompiler } from '../../../../../types/project-settings'
  2. import { sendMB } from '../../../infrastructure/event-tracking'
  3. import { postJSON } from '../../../infrastructure/fetch-json'
  4. import { debugConsole } from '@/utils/debugging'
  5. import { UserSettings } from '../../../../../types/user-settings'
  6. export type ProjectSettings = {
  7. compiler: ProjectCompiler
  8. imageName: string
  9. rootDocId: string
  10. spellCheckLanguage: string
  11. name: string
  12. }
  13. type SaveUserSettings = Partial<
  14. UserSettings & {
  15. spellCheckLanguage: ProjectSettings['spellCheckLanguage']
  16. }
  17. >
  18. export function saveUserSettings(
  19. key: keyof SaveUserSettings,
  20. value: SaveUserSettings[keyof SaveUserSettings]
  21. ) {
  22. sendMB('setting-changed', {
  23. changedSetting: key,
  24. changedSettingVal: value,
  25. })
  26. postJSON('/user/settings', {
  27. body: {
  28. [key]: value,
  29. },
  30. }).catch(debugConsole.error)
  31. }
  32. export const saveProjectSettings = async (
  33. projectId: string,
  34. data: Partial<ProjectSettings>
  35. ) => {
  36. await postJSON<never>(`/project/${projectId}/settings`, {
  37. body: {
  38. ...data,
  39. },
  40. })
  41. }