@@ -6,10 +6,28 @@ export const useSettingsStore = defineStore(
66 'settings' ,
77 ( ) => {
88 const settings = ref ( settingsDefault )
9- watch ( ( ) => settings . value . app . colorScheme , ( colorScheme ) => {
9+
10+ const prefersColorScheme = window . matchMedia ( '(prefers-color-scheme: dark)' )
11+ const currentColorScheme = ref < Exclude < Settings . app [ 'colorScheme' ] , '' > > ( )
12+ watch ( ( ) => settings . value . app . colorScheme , ( val ) => {
13+ if ( val === '' ) {
14+ prefersColorScheme . addEventListener ( 'change' , updateTheme )
15+ }
16+ else {
17+ prefersColorScheme . removeEventListener ( 'change' , updateTheme )
18+ }
19+ } , {
20+ immediate : true ,
21+ } )
22+ watch ( ( ) => settings . value . app . colorScheme , updateTheme , {
23+ immediate : true ,
24+ } )
25+ function updateTheme ( ) {
26+ let colorScheme = settings . value . app . colorScheme
1027 if ( colorScheme === '' ) {
11- colorScheme = window . matchMedia ( '(prefers-color-scheme: dark)' ) . matches ? 'dark' : 'light'
28+ colorScheme = prefersColorScheme . matches ? 'dark' : 'light'
1229 }
30+ currentColorScheme . value = colorScheme
1331 switch ( colorScheme ) {
1432 case 'dark' :
1533 document . documentElement . classList . add ( 'dark' )
@@ -18,9 +36,8 @@ export const useSettingsStore = defineStore(
1836 document . documentElement . classList . remove ( 'dark' )
1937 break
2038 }
21- } , {
22- immediate : true ,
23- } )
39+ }
40+
2441 watch ( ( ) => settings . value . menu . menuMode , ( val ) => {
2542 document . body . setAttribute ( 'data-menu-mode' , val )
2643 } , {
@@ -60,6 +77,7 @@ export const useSettingsStore = defineStore(
6077
6178 return {
6279 settings,
80+ currentColorScheme,
6381 os,
6482 title,
6583 previewAllWindows,
0 commit comments