2023-04-18 23:16:13 +08:00
|
|
|
import { defineStore } from "pinia";
|
|
|
|
|
import defaultSettings from "@/settings";
|
2022-03-01 23:45:07 +08:00
|
|
|
|
2023-04-18 23:16:13 +08:00
|
|
|
export const useSettingsStore = defineStore("setting", () => {
|
2023-11-16 22:46:28 +08:00
|
|
|
const title = defaultSettings.title;
|
|
|
|
|
const version = defaultSettings.version;
|
|
|
|
|
|
2023-04-18 23:16:13 +08:00
|
|
|
const tagsView = useStorage<boolean>("tagsView", defaultSettings.tagsView);
|
2023-03-01 00:47:39 +08:00
|
|
|
|
|
|
|
|
const showSettings = ref<boolean>(defaultSettings.showSettings);
|
2022-12-18 15:27:53 +08:00
|
|
|
const sidebarLogo = ref<boolean>(defaultSettings.sidebarLogo);
|
2023-09-04 20:54:46 +08:00
|
|
|
const fixedHeader = useStorage<boolean>(
|
|
|
|
|
"fixedHeader",
|
|
|
|
|
defaultSettings.fixedHeader
|
|
|
|
|
);
|
2023-04-18 23:16:13 +08:00
|
|
|
const layout = useStorage<string>("layout", defaultSettings.layout);
|
2023-09-26 18:24:04 +08:00
|
|
|
const themeColor = useStorage<string>(
|
|
|
|
|
"themeColor",
|
|
|
|
|
defaultSettings.themeColor
|
|
|
|
|
);
|
2023-10-26 00:09:39 +08:00
|
|
|
const theme = useStorage<string>("theme", defaultSettings.theme);
|
2023-11-05 10:56:08 +08:00
|
|
|
|
2023-11-16 22:46:28 +08:00
|
|
|
// Whether to enable watermark
|
|
|
|
|
const watermark = useStorage<any>("watermark", defaultSettings.watermark);
|
|
|
|
|
|
|
|
|
|
const settingsMap: Record<string, Ref<any>> = {
|
|
|
|
|
showSettings,
|
|
|
|
|
fixedHeader,
|
|
|
|
|
tagsView,
|
|
|
|
|
sidebarLogo,
|
|
|
|
|
layout,
|
|
|
|
|
themeColor,
|
|
|
|
|
theme,
|
|
|
|
|
watermark: watermark.value,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
function changeSetting({ key, value }: { key: string; value: any }) {
|
|
|
|
|
const setting = settingsMap[key];
|
|
|
|
|
if (setting !== undefined) {
|
|
|
|
|
setting.value = value;
|
|
|
|
|
if (key === "theme" && value === "dark") {
|
|
|
|
|
document.documentElement.classList.add("dark");
|
|
|
|
|
} else {
|
|
|
|
|
document.documentElement.classList.remove("dark");
|
|
|
|
|
}
|
2022-12-18 15:27:53 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return {
|
2023-11-16 22:46:28 +08:00
|
|
|
title,
|
|
|
|
|
version,
|
2022-12-18 15:27:53 +08:00
|
|
|
showSettings,
|
|
|
|
|
tagsView,
|
|
|
|
|
fixedHeader,
|
|
|
|
|
sidebarLogo,
|
2022-12-31 22:37:47 +08:00
|
|
|
layout,
|
2023-09-26 18:24:04 +08:00
|
|
|
themeColor,
|
2023-04-18 23:16:13 +08:00
|
|
|
changeSetting,
|
2023-11-02 23:34:41 +08:00
|
|
|
theme,
|
2023-11-16 22:46:28 +08:00
|
|
|
watermark,
|
2022-12-18 15:27:53 +08:00
|
|
|
};
|
|
|
|
|
});
|