zhuoyuan.wang
2024-06-19 15ebe96f28cadec6a726c5324593a40bbf56205f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import defaultSettings from '@/settings';
import cache from '@/utils/cache';
 
const {sideTheme, showSettings, topNav, tagsView, sidebarLogo, dynamicTitle, language} = defaultSettings;
 
const settingKey = 'layout-setting';
 
const storageSetting = cache.local.getJSON(settingKey) || {};
 
const useSettingStore = defineStore(
  'setting',
  {
    state: () => ({
      language: storageSetting.language === undefined ? language : storageSetting.language,
      theme: storageSetting.theme || '#409EFF',
      sideTheme: storageSetting.sideTheme || sideTheme,
      showSettings: showSettings,
      topNav: storageSetting.topNav === undefined ? topNav : storageSetting.topNav,
      tagsView: storageSetting.tagsView === undefined ? tagsView : storageSetting.tagsView,
      sidebarLogo: storageSetting.sidebarLogo === undefined ? sidebarLogo : storageSetting.sidebarLogo,
      dynamicTitle: storageSetting.dynamicTitle === undefined ? dynamicTitle : storageSetting.dynamicTitle
    }),
    actions: {
      setSetting(layoutSetting) {
        cache.local.setJSON(settingKey, layoutSetting)
      },
      removeSetting() {
        cache.local.setJSON(settingKey, {language: this.language})
      },
      setTitle(title) {
        document.title = this.dynamicTitle ? title + ' - ' + defaultSettings.title : defaultSettings.title;
      },
      setLanguage(language) {
        this.language = language;
        storageSetting.language = language;
        cache.local.setJSON(settingKey, storageSetting);
      }
    }
  })
 
export default useSettingStore;