Skip to content

Commit 84ed98b

Browse files
committed
[Opt] ⚡️ Use Global ThemeMode instead of Part's to Optimize Performance
1 parent 751f633 commit 84ed98b

File tree

4 files changed

+305
-326
lines changed

4 files changed

+305
-326
lines changed

frontend/src/App.vue

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,34 @@
11
<script setup lang="ts">
2-
import { NMessageProvider, NConfigProvider, type GlobalThemeOverrides, NDialogProvider } from 'naive-ui';
2+
import { ref, onMounted, provide } from 'vue';
3+
import { NMessageProvider, NConfigProvider, lightTheme, darkTheme, type GlobalThemeOverrides, NDialogProvider } from 'naive-ui';
34
import { RouterView } from 'vue-router';
5+
import { storeToRefs } from 'pinia';
6+
import { useUserStore } from '@/stores/modules/user';
7+
8+
const userStore = useUserStore();
9+
const { themeMode } = storeToRefs(userStore);
10+
11+
let theme = ref(lightTheme);
12+
provide('theme', theme);
13+
14+
onMounted(() => {
15+
const body = document.querySelector('body');
16+
if (themeMode.value == 'light') {
17+
theme.value = lightTheme;
18+
body?.setAttribute('style', 'background-color: #f0f0f0');
19+
} else if (themeMode.value == 'dark') {
20+
theme.value = darkTheme;
21+
body?.setAttribute('style', 'background-color: #111111');
22+
} else if (themeMode.value == 'auto') {
23+
if (window.matchMedia("(prefers-color-scheme: dark)").matches) {
24+
theme.value = darkTheme;
25+
body?.setAttribute('style', 'background-color: #1d1d1d');
26+
} else {
27+
theme.value = lightTheme;
28+
body?.setAttribute('style', 'background-color: #141414');
29+
}
30+
}
31+
})
432
533
const themeOverrides: GlobalThemeOverrides = {
634
common: {
@@ -13,10 +41,10 @@ const themeOverrides: GlobalThemeOverrides = {
1341
</script>
1442

1543
<template>
16-
<NConfigProvider :theme-overrides="themeOverrides">
44+
<NConfigProvider :theme="theme" :theme-overrides="themeOverrides">
1745
<NDialogProvider>
1846
<NMessageProvider>
19-
<RouterView />
47+
<RouterView/>
2048
</NMessageProvider>
2149
</NDialogProvider>
2250
</NConfigProvider>

0 commit comments

Comments
 (0)