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