| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- import {
- FontFamily,
- LineHeight,
- OverallTheme,
- } from '../../../../../modules/source-editor/frontend/js/extensions/theme'
- import {
- Keybindings,
- PdfViewer,
- ProjectCompiler,
- } from '../../../../../types/project-settings'
- import { postJSON } from '../../../infrastructure/fetch-json'
- export type UserSettingsScope = {
- pdfViewer: PdfViewer
- autoComplete: boolean
- autoPairDelimiters: boolean
- syntaxValidation: boolean
- editorTheme: string
- overallTheme: OverallTheme
- mode: Keybindings
- fontSize: string
- fontFamily: FontFamily
- lineHeight: LineHeight
- }
- 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,
- ...data,
- },
- })
- }
- // server asks for "rootDocId" but client has "rootDoc_id"
- type ProjectSettingsRequestBody = Partial<
- Omit<ProjectSettingsScope, 'rootDoc_id'> & {
- rootDocId: string
- }
- >
- type SaveProjectSettings = {
- projectId: string
- } & Partial<ProjectSettingsScope>
- export const saveProjectSettings = async ({
- projectId,
- ...data
- }: SaveProjectSettings) => {
- let reqData: ProjectSettingsRequestBody = {}
- if (data.rootDoc_id) {
- const val = data.rootDoc_id
- delete data.rootDoc_id
- reqData = {
- ...data,
- rootDocId: val,
- }
- } else {
- reqData = data
- }
- await postJSON<never>(`/project/${projectId}/settings`, {
- body: {
- _csrf: window.csrfToken,
- ...reqData,
- },
- })
- }
|