refactor: ♻️ 字典调整按需加载,api、store和枚举文件命名优化

This commit is contained in:
Ray.Hao
2025-03-24 08:17:31 +08:00
parent 6204deb7cb
commit 3c9cf67961
84 changed files with 989 additions and 1108 deletions

View File

@@ -1,97 +0,0 @@
import defaultSettings from "@/settings";
import { SidebarColorEnum, ThemeEnum } from "@/enums/ThemeEnum";
import { LayoutEnum } from "@/enums/LayoutEnum";
import { generateThemeColors, applyTheme, toggleDarkMode, toggleSidebarColor } from "@/utils/theme";
type SettingsValue = boolean | string;
export const useSettingsStore = defineStore("setting", () => {
// 基本设置
const settingsVisible = ref(false);
// 标签视图
const tagsView = useStorage<boolean>("tagsView", defaultSettings.tagsView);
// 侧边栏 Logo
const sidebarLogo = useStorage<boolean>("sidebarLogo", defaultSettings.sidebarLogo);
// 侧边栏配色方案 (经典蓝/极简白)
const sidebarColorScheme = useStorage<string>(
"sidebarColorScheme",
defaultSettings.sidebarColorScheme
);
// 布局
const layout = useStorage<LayoutEnum>("layout", defaultSettings.layout as LayoutEnum);
// 水印
const watermarkEnabled = useStorage<boolean>(
"watermarkEnabled",
defaultSettings.watermarkEnabled
);
// 主题
const themeColor = useStorage<string>("themeColor", defaultSettings.themeColor);
const theme = useStorage<string>("theme", defaultSettings.theme);
// 监听主题变化
watch(
[theme, themeColor],
([newTheme, newThemeColor]) => {
toggleDarkMode(newTheme === ThemeEnum.DARK);
const colors = generateThemeColors(newThemeColor);
applyTheme(colors);
},
{ immediate: true }
);
// 监听浅色侧边栏配色方案变化
watch(
[sidebarColorScheme],
([newSidebarColorScheme]) => {
toggleSidebarColor(newSidebarColorScheme === SidebarColorEnum.CLASSIC_BLUE);
},
{ immediate: true }
);
// 设置映射
const settingsMap: Record<string, Ref<SettingsValue>> = {
tagsView,
sidebarLogo,
sidebarColorScheme,
layout,
watermarkEnabled,
};
function changeSetting({ key, value }: { key: string; value: SettingsValue }) {
const setting = settingsMap[key];
if (setting) setting.value = value;
}
function changeTheme(val: string) {
theme.value = val;
}
function changeSidebarColor(val: string) {
sidebarColorScheme.value = val;
}
function changeThemeColor(color: string) {
themeColor.value = color;
}
function changeLayout(val: LayoutEnum) {
layout.value = val;
}
return {
settingsVisible,
tagsView,
sidebarLogo,
sidebarColorScheme,
layout,
themeColor,
theme,
watermarkEnabled,
changeSetting,
changeTheme,
changeThemeColor,
changeLayout,
changeSidebarColor,
};
});