settings.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import defaultSettings from '@/settings'
  2. import { useDark, useToggle } from '@vueuse/core'
  3. import { useDynamicTitle } from '@/utils/dynamicTitle'
  4. const isDark = useDark()
  5. const toggleDark = useToggle(isDark)
  6. const { sideTheme, showSettings, topNav, tagsView, fixedHeader, sidebarLogo, dynamicTitle } = defaultSettings
  7. const storageSetting = JSON.parse(localStorage.getItem('layout-setting')) || ''
  8. const useSettingsStore = defineStore(
  9. 'settings',
  10. {
  11. state: () => ({
  12. title: '',
  13. theme: storageSetting.theme || '#409EFF',
  14. sideTheme: storageSetting.sideTheme || sideTheme,
  15. showSettings: showSettings,
  16. topNav: storageSetting.topNav === undefined ? topNav : storageSetting.topNav,
  17. tagsView: storageSetting.tagsView === undefined ? tagsView : storageSetting.tagsView,
  18. fixedHeader: storageSetting.fixedHeader === undefined ? fixedHeader : storageSetting.fixedHeader,
  19. sidebarLogo: storageSetting.sidebarLogo === undefined ? sidebarLogo : storageSetting.sidebarLogo,
  20. dynamicTitle: storageSetting.dynamicTitle === undefined ? dynamicTitle : storageSetting.dynamicTitle,
  21. isDark: isDark.value
  22. }),
  23. actions: {
  24. // 修改布局设置
  25. changeSetting(data) {
  26. const { key, value } = data
  27. if (this.hasOwnProperty(key)) {
  28. this[key] = value
  29. }
  30. },
  31. // 设置网页标题
  32. setTitle(title) {
  33. this.title = title
  34. useDynamicTitle()
  35. },
  36. // 切换暗黑模式
  37. toggleTheme() {
  38. this.isDark = !this.isDark
  39. toggleDark()
  40. }
  41. }
  42. })
  43. export default useSettingsStore