From 651a91249863b16988a0a110dd6bddd74f289bd2 Mon Sep 17 00:00:00 2001 From: MaysWind Date: Fri, 23 Jun 2023 01:24:10 +0800 Subject: [PATCH] support change theme --- src/DesktopApp.vue | 13 +++++++++++ src/lib/ui.js | 7 ++++++ src/views/desktop/MainLayout.vue | 40 +++++++++++++++++++++++++++++++- 3 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 src/lib/ui.js diff --git a/src/DesktopApp.vue b/src/DesktopApp.vue index 082dd4d2..852bbdf7 100644 --- a/src/DesktopApp.vue +++ b/src/DesktopApp.vue @@ -15,6 +15,7 @@ import { useTokensStore } from '@/stores/token.js'; import { useExchangeRatesStore } from '@/stores/exchangeRates.js'; import { loadMapAssets } from '@/lib/map/index.js'; +import { getSystemTheme } from '@/lib/ui.js'; export default { data() { @@ -36,8 +37,20 @@ export default { theme.global.name.value = 'light'; } else if (self.$settings.getTheme() === 'dark') { theme.global.name.value = 'dark'; + } else { + theme.global.name.value = getSystemTheme(); } + window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', function (e) { + if (self.$settings.getTheme() === 'auto') { + if (e.matches) { + theme.global.name.value = 'dark'; + } else { + theme.global.name.value = 'light'; + } + } + }); + let localeDefaultSettings = self.$locale.initLocale(self.userStore.currentUserLanguage); self.settingsStore.updateLocalizedDefaultSettings(localeDefaultSettings); diff --git a/src/lib/ui.js b/src/lib/ui.js new file mode 100644 index 00000000..a9cc2c2b --- /dev/null +++ b/src/lib/ui.js @@ -0,0 +1,7 @@ +export function getSystemTheme() { + if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) { + return 'dark'; + } else { + return 'light'; + } +} diff --git a/src/views/desktop/MainLayout.vue b/src/views/desktop/MainLayout.vue index 8a024976..cec09eeb 100644 --- a/src/views/desktop/MainLayout.vue +++ b/src/views/desktop/MainLayout.vue @@ -96,6 +96,10 @@

{{ $t('global.app.title') }}

+ + + @@ -163,11 +167,15 @@