|
@@ -2,30 +2,12 @@ import { useCallback } from 'react'
|
|
|
import {
|
|
import {
|
|
|
FontFamily,
|
|
FontFamily,
|
|
|
LineHeight,
|
|
LineHeight,
|
|
|
- OverallTheme,
|
|
|
|
|
} from '../../../../../modules/source-editor/frontend/js/extensions/theme'
|
|
} from '../../../../../modules/source-editor/frontend/js/extensions/theme'
|
|
|
import { Keybindings, PdfViewer } from '../../../../../types/project-settings'
|
|
import { Keybindings, PdfViewer } from '../../../../../types/project-settings'
|
|
|
-import { postJSON } from '../../../infrastructure/fetch-json'
|
|
|
|
|
import useScopeValue from '../../../shared/hooks/use-scope-value'
|
|
import useScopeValue from '../../../shared/hooks/use-scope-value'
|
|
|
-
|
|
|
|
|
-type UserSettingsScope = {
|
|
|
|
|
- pdfViewer: PdfViewer
|
|
|
|
|
- autoComplete: boolean
|
|
|
|
|
- autoPairDelimiters: boolean
|
|
|
|
|
- syntaxValidation: boolean
|
|
|
|
|
- editorTheme: string
|
|
|
|
|
- overallTheme: OverallTheme
|
|
|
|
|
- mode: Keybindings
|
|
|
|
|
- fontSize: string
|
|
|
|
|
- fontFamily: FontFamily
|
|
|
|
|
- lineHeight: LineHeight
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-function saveUserSettings(data: Partial<UserSettingsScope>) {
|
|
|
|
|
- postJSON('/user/settings', {
|
|
|
|
|
- body: data,
|
|
|
|
|
- })
|
|
|
|
|
-}
|
|
|
|
|
|
|
+import { saveUserSettings } from '../utils/api'
|
|
|
|
|
+import type { UserSettingsScope } from '../utils/api'
|
|
|
|
|
+import useSetOverallTheme from './use-set-overall-theme'
|
|
|
|
|
|
|
|
export default function useSetUserWideSettings() {
|
|
export default function useSetUserWideSettings() {
|
|
|
const [userSettings, setUserSettings] = useScopeValue<UserSettingsScope>(
|
|
const [userSettings, setUserSettings] = useScopeValue<UserSettingsScope>(
|
|
@@ -33,6 +15,7 @@ export default function useSetUserWideSettings() {
|
|
|
true
|
|
true
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
|
|
+ const setOverallTheme = useSetOverallTheme()
|
|
|
const setAutoComplete = useCallback(
|
|
const setAutoComplete = useCallback(
|
|
|
(autoComplete: boolean) => {
|
|
(autoComplete: boolean) => {
|
|
|
if (userSettings.autoComplete !== autoComplete) {
|
|
if (userSettings.autoComplete !== autoComplete) {
|
|
@@ -73,17 +56,6 @@ export default function useSetUserWideSettings() {
|
|
|
[userSettings, setUserSettings]
|
|
[userSettings, setUserSettings]
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
- // TODO: business logic
|
|
|
|
|
- const setOverallTheme = useCallback(
|
|
|
|
|
- (overallTheme: OverallTheme) => {
|
|
|
|
|
- if (userSettings.overallTheme !== overallTheme) {
|
|
|
|
|
- setUserSettings({ ...userSettings, overallTheme })
|
|
|
|
|
- saveUserSettings({ overallTheme })
|
|
|
|
|
- }
|
|
|
|
|
- },
|
|
|
|
|
- [userSettings, setUserSettings]
|
|
|
|
|
- )
|
|
|
|
|
-
|
|
|
|
|
const setMode = useCallback(
|
|
const setMode = useCallback(
|
|
|
(mode: Keybindings) => {
|
|
(mode: Keybindings) => {
|
|
|
if (userSettings.mode !== mode) {
|
|
if (userSettings.mode !== mode) {
|