| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- import { defineStore } from 'pinia';
- import defaultSettings from '@/settings';
- import { useDynamicTitle } from '@/utils/dynamicTitle';
- import { useStorage } from '@vueuse/core';
- import { ref } from 'vue';
- export const useSettingsStore = defineStore('setting', () => {
- const storageSetting = useStorage<LayoutSetting>('layout-setting', {
- topNav: defaultSettings.topNav,
- tagsView: defaultSettings.tagsView,
- tagsIcon: defaultSettings.tagsIcon,
- fixedHeader: defaultSettings.fixedHeader,
- sidebarLogo: defaultSettings.sidebarLogo,
- dynamicTitle: defaultSettings.dynamicTitle,
- sideTheme: defaultSettings.sideTheme,
- theme: defaultSettings.theme
- });
- const title = ref<string>(defaultSettings.title);
- const theme = ref<string>(storageSetting.value.theme);
- const sideTheme = ref<string>(storageSetting.value.sideTheme);
- const showSettings = ref<boolean>(defaultSettings.showSettings);
- const topNav = ref<boolean>(true); // 固定使用 topNav,不检测缓存
- const tagsView = ref<boolean>(storageSetting.value.tagsView);
- const tagsIcon = ref<boolean>(storageSetting.value.tagsIcon);
- const fixedHeader = ref<boolean>(storageSetting.value.fixedHeader);
- const sidebarLogo = ref<boolean>(storageSetting.value.sidebarLogo);
- const dynamicTitle = ref<boolean>(storageSetting.value.dynamicTitle);
- const animationEnable = ref<boolean>(defaultSettings.animationEnable);
- const dark = ref<boolean>(defaultSettings.dark);
- const setTitle = (value: string) => {
- title.value = value;
- useDynamicTitle();
- };
- return {
- title,
- theme,
- sideTheme,
- showSettings,
- topNav,
- tagsView,
- tagsIcon,
- fixedHeader,
- sidebarLogo,
- dynamicTitle,
- animationEnable,
- dark,
- setTitle
- };
- });
|