use-user-wide-settings.tsx 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. import { useCallback } from 'react'
  2. import { useUserSettingsContext } from '@/shared/context/user-settings-context'
  3. import useSetOverallTheme from './use-set-overall-theme'
  4. import useSaveUserSettings from './use-save-user-settings'
  5. import { UserSettings } from '../../../../../types/user-settings'
  6. export default function useUserWideSettings() {
  7. const saveUserSettings = useSaveUserSettings()
  8. const { userSettings } = useUserSettingsContext()
  9. const {
  10. overallTheme,
  11. autoComplete,
  12. autoPairDelimiters,
  13. syntaxValidation,
  14. editorTheme,
  15. mode,
  16. fontSize,
  17. fontFamily,
  18. lineHeight,
  19. pdfViewer,
  20. mathPreview,
  21. breadcrumbs,
  22. } = userSettings
  23. const setOverallTheme = useSetOverallTheme()
  24. const setAutoComplete = useCallback(
  25. (autoComplete: UserSettings['autoComplete']) => {
  26. saveUserSettings('autoComplete', autoComplete)
  27. },
  28. [saveUserSettings]
  29. )
  30. const setAutoPairDelimiters = useCallback(
  31. (autoPairDelimiters: UserSettings['autoPairDelimiters']) => {
  32. saveUserSettings('autoPairDelimiters', autoPairDelimiters)
  33. },
  34. [saveUserSettings]
  35. )
  36. const setSyntaxValidation = useCallback(
  37. (syntaxValidation: UserSettings['syntaxValidation']) => {
  38. saveUserSettings('syntaxValidation', syntaxValidation)
  39. },
  40. [saveUserSettings]
  41. )
  42. const setEditorTheme = useCallback(
  43. (editorTheme: UserSettings['editorTheme']) => {
  44. saveUserSettings('editorTheme', editorTheme)
  45. },
  46. [saveUserSettings]
  47. )
  48. const setMode = useCallback(
  49. (mode: UserSettings['mode']) => {
  50. saveUserSettings('mode', mode)
  51. },
  52. [saveUserSettings]
  53. )
  54. const setFontSize = useCallback(
  55. (fontSize: UserSettings['fontSize']) => {
  56. saveUserSettings('fontSize', fontSize)
  57. },
  58. [saveUserSettings]
  59. )
  60. const setFontFamily = useCallback(
  61. (fontFamily: UserSettings['fontFamily']) => {
  62. saveUserSettings('fontFamily', fontFamily)
  63. },
  64. [saveUserSettings]
  65. )
  66. const setLineHeight = useCallback(
  67. (lineHeight: UserSettings['lineHeight']) => {
  68. saveUserSettings('lineHeight', lineHeight)
  69. },
  70. [saveUserSettings]
  71. )
  72. const setPdfViewer = useCallback(
  73. (pdfViewer: UserSettings['pdfViewer']) => {
  74. saveUserSettings('pdfViewer', pdfViewer)
  75. },
  76. [saveUserSettings]
  77. )
  78. const setMathPreview = useCallback(
  79. (mathPreview: UserSettings['mathPreview']) => {
  80. saveUserSettings('mathPreview', mathPreview)
  81. },
  82. [saveUserSettings]
  83. )
  84. const setBreadcrumbs = useCallback(
  85. (breadcrumbs: UserSettings['breadcrumbs']) => {
  86. saveUserSettings('breadcrumbs', breadcrumbs)
  87. },
  88. [saveUserSettings]
  89. )
  90. return {
  91. autoComplete,
  92. setAutoComplete,
  93. autoPairDelimiters,
  94. setAutoPairDelimiters,
  95. syntaxValidation,
  96. setSyntaxValidation,
  97. editorTheme,
  98. setEditorTheme,
  99. overallTheme,
  100. setOverallTheme,
  101. mode,
  102. setMode,
  103. fontSize,
  104. setFontSize,
  105. fontFamily,
  106. setFontFamily,
  107. lineHeight,
  108. setLineHeight,
  109. pdfViewer,
  110. setPdfViewer,
  111. mathPreview,
  112. setMathPreview,
  113. breadcrumbs,
  114. setBreadcrumbs,
  115. }
  116. }