Fix system theme not respecting preferred dark theme. (#1673)
This commit is contained in:
parent
60727656c9
commit
5b1850e161
@ -722,7 +722,9 @@ function toggleBrowseMenu() {
|
||||
}
|
||||
function changeTheme() {
|
||||
updateTheme(
|
||||
DARK_THEMES.includes(app.$colorMode.value) ? 'light' : cosmetics.value.preferredDarkTheme,
|
||||
DARK_THEMES.includes(app.$colorMode.value)
|
||||
? 'light'
|
||||
: cosmetics.value.preferredDarkTheme ?? 'dark',
|
||||
true
|
||||
)
|
||||
}
|
||||
|
||||
@ -41,7 +41,7 @@
|
||||
class="theme-icon"
|
||||
/>
|
||||
<MoonIcon
|
||||
v-else-if="cosmetics.preferredDarkTheme === option"
|
||||
v-else-if="(cosmetics.preferredDarkTheme ?? 'dark') === option"
|
||||
v-tooltip="formatMessage(colorTheme.preferredDark)"
|
||||
class="theme-icon"
|
||||
/>
|
||||
@ -402,14 +402,21 @@ const themeOptions = computed(() => {
|
||||
|
||||
onMounted(() => {
|
||||
updateSystemTheme()
|
||||
window.matchMedia('(prefers-color-scheme: light)').addEventListener('change', (event) => {
|
||||
setSystemTheme(event.matches)
|
||||
})
|
||||
})
|
||||
|
||||
function updateSystemTheme() {
|
||||
const colorSchemeQueryList = window.matchMedia('(prefers-color-scheme: light)')
|
||||
if (colorSchemeQueryList.matches) {
|
||||
const query = window.matchMedia('(prefers-color-scheme: light)')
|
||||
setSystemTheme(query.matches)
|
||||
}
|
||||
|
||||
function setSystemTheme(light) {
|
||||
if (light) {
|
||||
systemTheme.value = 'light'
|
||||
} else {
|
||||
systemTheme.value = cosmetics.value.preferredDarkTheme
|
||||
systemTheme.value = cosmetics.value.preferredDarkTheme ?? 'dark'
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -2,6 +2,7 @@ export default defineNuxtPlugin(async (nuxtApp) => {
|
||||
await useAuth()
|
||||
await useUser()
|
||||
const themeStore = useTheme()
|
||||
const cosmetics = useCosmetics()
|
||||
|
||||
nuxtApp.hook('app:mounted', () => {
|
||||
if (process.client && themeStore.value.preference === 'system') {
|
||||
@ -12,7 +13,7 @@ export default defineNuxtPlugin(async (nuxtApp) => {
|
||||
if (e.matches) {
|
||||
updateTheme('light')
|
||||
} else {
|
||||
updateTheme('dark')
|
||||
updateTheme(cosmetics.value.preferredDarkTheme ?? 'dark')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user