|
|
@@ -1,131 +0,0 @@
|
|
|
-import { useCallback } from 'react'
|
|
|
-import {
|
|
|
- FontFamily,
|
|
|
- LineHeight,
|
|
|
-} from '../../../../../modules/source-editor/frontend/js/extensions/theme'
|
|
|
-import { Keybindings, PdfViewer } from '../../../../../types/project-settings'
|
|
|
-import useScopeValue from '../../../shared/hooks/use-scope-value'
|
|
|
-import { saveUserSettings } from '../utils/api'
|
|
|
-import type { UserSettingsScope } from '../utils/api'
|
|
|
-import useSetOverallTheme from './use-set-overall-theme'
|
|
|
-
|
|
|
-export default function useSetUserWideSettings() {
|
|
|
- const [userSettings, setUserSettings] = useScopeValue<UserSettingsScope>(
|
|
|
- 'settings',
|
|
|
- true
|
|
|
- )
|
|
|
-
|
|
|
- const setOverallTheme = useSetOverallTheme()
|
|
|
- const setAutoComplete = useCallback(
|
|
|
- (autoComplete: boolean) => {
|
|
|
- if (userSettings.autoComplete !== autoComplete) {
|
|
|
- setUserSettings({ ...userSettings, autoComplete })
|
|
|
- saveUserSettings({ autoComplete })
|
|
|
- }
|
|
|
- },
|
|
|
- [userSettings, setUserSettings]
|
|
|
- )
|
|
|
-
|
|
|
- const setAutoPairDelimiters = useCallback(
|
|
|
- (autoPairDelimiters: boolean) => {
|
|
|
- if (userSettings.autoPairDelimiters !== autoPairDelimiters) {
|
|
|
- setUserSettings({ ...userSettings, autoPairDelimiters })
|
|
|
- saveUserSettings({ autoPairDelimiters })
|
|
|
- }
|
|
|
- },
|
|
|
- [userSettings, setUserSettings]
|
|
|
- )
|
|
|
-
|
|
|
- const setSyntaxValidation = useCallback(
|
|
|
- (syntaxValidation: boolean) => {
|
|
|
- if (userSettings.syntaxValidation !== syntaxValidation) {
|
|
|
- setUserSettings({ ...userSettings, syntaxValidation })
|
|
|
- saveUserSettings({ syntaxValidation })
|
|
|
- }
|
|
|
- },
|
|
|
- [userSettings, setUserSettings]
|
|
|
- )
|
|
|
-
|
|
|
- const setEditorTheme = useCallback(
|
|
|
- (editorTheme: string) => {
|
|
|
- if (userSettings.editorTheme !== editorTheme) {
|
|
|
- setUserSettings({ ...userSettings, editorTheme })
|
|
|
- saveUserSettings({ editorTheme })
|
|
|
- }
|
|
|
- },
|
|
|
- [userSettings, setUserSettings]
|
|
|
- )
|
|
|
-
|
|
|
- const setMode = useCallback(
|
|
|
- (mode: Keybindings) => {
|
|
|
- if (userSettings.mode !== mode) {
|
|
|
- setUserSettings({ ...userSettings, mode })
|
|
|
- saveUserSettings({ mode })
|
|
|
- }
|
|
|
- },
|
|
|
- [userSettings, setUserSettings]
|
|
|
- )
|
|
|
-
|
|
|
- const setFontSize = useCallback(
|
|
|
- (fontSize: string) => {
|
|
|
- if (userSettings.fontSize !== fontSize) {
|
|
|
- setUserSettings({ ...userSettings, fontSize })
|
|
|
- saveUserSettings({ fontSize })
|
|
|
- }
|
|
|
- },
|
|
|
- [userSettings, setUserSettings]
|
|
|
- )
|
|
|
-
|
|
|
- const setFontFamily = useCallback(
|
|
|
- (fontFamily: FontFamily) => {
|
|
|
- if (userSettings.fontFamily !== fontFamily) {
|
|
|
- setUserSettings({ ...userSettings, fontFamily })
|
|
|
- saveUserSettings({ fontFamily })
|
|
|
- }
|
|
|
- },
|
|
|
- [userSettings, setUserSettings]
|
|
|
- )
|
|
|
-
|
|
|
- const setLineHeight = useCallback(
|
|
|
- (lineHeight: LineHeight) => {
|
|
|
- if (userSettings.lineHeight !== lineHeight) {
|
|
|
- setUserSettings({ ...userSettings, lineHeight })
|
|
|
- saveUserSettings({ lineHeight })
|
|
|
- }
|
|
|
- },
|
|
|
- [userSettings, setUserSettings]
|
|
|
- )
|
|
|
-
|
|
|
- const setPdfViewer = useCallback(
|
|
|
- (pdfViewer: PdfViewer) => {
|
|
|
- if (userSettings.pdfViewer !== pdfViewer) {
|
|
|
- setUserSettings({ ...userSettings, pdfViewer })
|
|
|
- saveUserSettings({ pdfViewer })
|
|
|
- }
|
|
|
- },
|
|
|
- [userSettings, setUserSettings]
|
|
|
- )
|
|
|
-
|
|
|
- return {
|
|
|
- autoComplete: userSettings.autoComplete,
|
|
|
- setAutoComplete,
|
|
|
- autoPairDelimiters: userSettings.autoPairDelimiters,
|
|
|
- setAutoPairDelimiters,
|
|
|
- syntaxValidation: userSettings.syntaxValidation,
|
|
|
- setSyntaxValidation,
|
|
|
- editorTheme: userSettings.editorTheme,
|
|
|
- setEditorTheme,
|
|
|
- overallTheme: userSettings.overallTheme,
|
|
|
- setOverallTheme,
|
|
|
- mode: userSettings.mode,
|
|
|
- setMode,
|
|
|
- fontSize: userSettings.fontSize,
|
|
|
- setFontSize,
|
|
|
- fontFamily: userSettings.fontFamily,
|
|
|
- setFontFamily,
|
|
|
- lineHeight: userSettings.lineHeight,
|
|
|
- setLineHeight,
|
|
|
- pdfViewer: userSettings.pdfViewer,
|
|
|
- setPdfViewer,
|
|
|
- }
|
|
|
-}
|