feat: 新增水印

This commit is contained in:
hxr
2024-02-21 00:14:04 +08:00
parent d26cbbfbb0
commit 4b2f74aa11
7 changed files with 66 additions and 40 deletions

View File

@@ -1,56 +1,63 @@
import { defineStore } from "pinia";
import defaultSettings from "@/settings";
type SettingsValue = boolean | string;
export const useSettingsStore = defineStore("setting", () => {
const title = defaultSettings.title;
const version = defaultSettings.version;
// 是否显示标签视图
const tagsView = useStorage<boolean>("tagsView", defaultSettings.tagsView);
const showSettings = ref<boolean>(defaultSettings.showSettings);
const sidebarLogo = ref<boolean>(defaultSettings.sidebarLogo);
// 是否显示侧边栏logo
const sidebarLogo = useStorage<boolean>(
"sidebarLogo",
defaultSettings.sidebarLogo
);
// 是否固定头部
const fixedHeader = useStorage<boolean>(
"fixedHeader",
defaultSettings.fixedHeader
);
// 布局模式left-左侧模式(默认) top-顶部模式 mix-混合模式
const layout = useStorage<string>("layout", defaultSettings.layout);
// 主题颜色
const themeColor = useStorage<string>(
"themeColor",
defaultSettings.themeColor
);
// 主题light-亮色(默认) dark-暗色
const theme = useStorage<string>("theme", defaultSettings.theme);
// 是否开启水印
const watermarkEnabled = useStorage<boolean>(
"watermarkEnabled",
defaultSettings.watermarkEnabled
);
const watermark = useStorage<any>("watermark", defaultSettings.watermark);
const settingsMap: Record<string, Ref<any>> = {
showSettings,
const settingsMap: Record<string, Ref<SettingsValue>> = {
fixedHeader,
tagsView,
sidebarLogo,
layout,
themeColor,
theme,
watermark: watermark.value,
watermarkEnabled,
};
function changeSetting({ key, value }: { key: string; value: any }) {
function changeSetting({
key,
value,
}: {
key: string;
value: SettingsValue;
}) {
const setting = settingsMap[key];
if (setting !== undefined) {
if (setting) {
setting.value = value;
// Special handling for theme changes
if (key === "theme") {
if (value === "dark") {
document.documentElement.classList.add("dark");
} else {
document.documentElement.classList.remove("dark");
}
document.documentElement.classList.toggle("dark", value === "dark");
}
}
}
return {
title,
version,
showSettings,
tagsView,
fixedHeader,
sidebarLogo,
@@ -58,6 +65,6 @@ export const useSettingsStore = defineStore("setting", () => {
themeColor,
changeSetting,
theme,
watermark,
watermarkEnabled,
};
});