From c46ff1d2e0bfdddfee22660aff8a854b157e9886 Mon Sep 17 00:00:00 2001 From: zyronon Date: Sun, 27 Aug 2023 01:53:52 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9hook?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.vue | 23 ++++++++++++++++- src/components/BaseButton.vue | 2 +- src/components/IconWrapper.vue | 2 +- src/components/Modal/Statistics.vue | 2 +- src/components/Toolbar/Toolbar.vue | 6 ++--- src/components/Type.vue | 5 ++-- src/hooks/useTheme.ts | 18 +++++++++++++ src/hooks/useThemeColor.ts | 39 ----------------------------- src/stores/base.ts | 4 +-- src/types.ts | 1 + 10 files changed, 51 insertions(+), 51 deletions(-) create mode 100644 src/hooks/useTheme.ts delete mode 100644 src/hooks/useThemeColor.ts diff --git a/src/App.vue b/src/App.vue index 9dcdc931..64b6bd2b 100644 --- a/src/App.vue +++ b/src/App.vue @@ -5,11 +5,32 @@ import Type from "@/components/Type.vue"; import Side from "@/components/Side.vue"; import Statistics from "@/components/Modal/Statistics.vue"; import Backgorund from "@/components/Backgorund.vue"; +import {onMounted} from "vue"; +import {useBaseStore} from "@/stores/base.ts"; +const store = useBaseStore() +// 查询当前系统主题颜色 +const match: MediaQueryList = window.matchMedia("(prefers-color-scheme: dark)") +// 监听系统主题变化 +match.addEventListener('change', followSystem) + +function followSystem() { + if (store.theme === 'auto') { + const theme = match.matches ? 'dark' : 'light' + document.documentElement.setAttribute('data-theme', theme) + // document.documentElement.setAttribute('data-theme', 'dark') + localStorage.setItem('appearance', theme) + } +} + +onMounted(() => { + store.init() + followSystem() +})