Save spellCheckLanguage to both project-wide and user-wide setting

GitOrigin-RevId: 059cc64d0fe2e955814a7192f82d4ff8ea4e2572
This commit is contained in:
M Fahru 2022-12-28 10:02:43 -07:00 committed by Copybot
parent 4bf09e21de
commit 56395d9a95
3 changed files with 41 additions and 18 deletions

View file

@ -4,6 +4,7 @@ import { useProjectContext } from '../../../shared/context/project-context'
import useScopeValue from '../../../shared/hooks/use-scope-value'
import { ProjectSettingsScope, saveProjectSettings } from '../utils/api'
import useSetRootDocId from './use-set-root-doc-id'
import useSetSpellCheckLanguage from './use-set-spell-check-language'
// TODO: handle ignoreUpdates
export default function useSetProjectWideSettings() {
@ -35,16 +36,7 @@ export default function useSetProjectWideSettings() {
)
const setRootDocId = useSetRootDocId()
const setSpellCheckLanguage = useCallback(
(spellCheckLanguage: string) => {
if (project?.spellCheckLanguage) {
setProject({ ...project, spellCheckLanguage })
saveProjectSettings(projectId, { spellCheckLanguage })
}
},
[projectId, project, setProject]
)
const setSpellCheckLanguage = useSetSpellCheckLanguage()
return {
compiler: project?.compiler,

View file

@ -0,0 +1,25 @@
import { useCallback } from 'react'
import { useProjectContext } from '../../../shared/context/project-context'
import useScopeValue from '../../../shared/hooks/use-scope-value'
import { saveProjectSettings, saveUserSettings } from '../utils/api'
export default function useSetSpellCheckLanguage() {
const [spellCheckLanguageScope, setSpellCheckLanguageScope] =
useScopeValue<string>('project.spellCheckLanguage')
const { _id: projectId } = useProjectContext()
const setSpellCheckLanguage = useCallback(
(spellCheckLanguage: string) => {
if (spellCheckLanguageScope) {
setSpellCheckLanguageScope(spellCheckLanguage)
// save to both project setting and user setting
saveProjectSettings(projectId, { spellCheckLanguage })
saveUserSettings({ spellCheckLanguage })
}
},
[projectId, setSpellCheckLanguageScope, spellCheckLanguageScope]
)
return setSpellCheckLanguage
}

View file

@ -23,7 +23,20 @@ export type UserSettingsScope = {
lineHeight: LineHeight
}
export function saveUserSettings(data: Partial<UserSettingsScope>) {
export type ProjectSettingsScope = {
compiler: ProjectCompiler
imageName: string
rootDoc_id: string
spellCheckLanguage: string
}
type SaveUserSettings = Partial<
UserSettingsScope & {
spellCheckLanguage: ProjectSettingsScope['spellCheckLanguage']
}
>
export function saveUserSettings(data: SaveUserSettings) {
postJSON('/user/settings', {
body: {
_csrf: window.csrfToken,
@ -32,13 +45,6 @@ export function saveUserSettings(data: Partial<UserSettingsScope>) {
})
}
export type ProjectSettingsScope = {
compiler: ProjectCompiler
imageName: string
rootDoc_id: string
spellCheckLanguage: string
}
// server asks for "rootDocId" but client has "rootDoc_id"
type ProjectSettingsRequestBody = Partial<
Omit<ProjectSettingsScope, 'rootDoc_id'> & {