From ba4ef23d6b426f5e54d48d9519d597ca4e8b020f Mon Sep 17 00:00:00 2001 From: syuilo Date: Tue, 1 Mar 2022 23:58:01 +0900 Subject: feat: instance default theme --- packages/client/src/init.ts | 13 ++++++++++++- packages/client/src/pages/admin/settings.vue | 16 ++++++++++++++++ packages/client/src/pages/settings/theme.vue | 8 +++++++- packages/client/src/store.ts | 4 ++++ 4 files changed, 39 insertions(+), 2 deletions(-) (limited to 'packages/client/src') diff --git a/packages/client/src/init.ts b/packages/client/src/init.ts index 113324d494..ab3299d22b 100644 --- a/packages/client/src/init.ts +++ b/packages/client/src/init.ts @@ -15,6 +15,7 @@ if (localStorage.getItem('accounts') != null) { import { computed, createApp, watch, markRaw, version as vueVersion } from 'vue'; import compareVersions from 'compare-versions'; +import * as JSON5 from 'json5'; import widgets from '@/widgets'; import directives from '@/directives'; @@ -159,7 +160,9 @@ if ($i && $i.token) { } //#endregion -fetchInstance().then(() => { +const fetchInstanceMetaPromise = fetchInstance(); + +fetchInstanceMetaPromise.then(() => { localStorage.setItem('v', instance.version); // Init service worker @@ -267,6 +270,14 @@ window.matchMedia('(prefers-color-scheme: dark)').addListener(mql => { }); //#endregion +fetchInstanceMetaPromise.then(() => { + if (defaultStore.state.themeInitial) { + if (instance.defaultLightTheme != null) ColdDeviceStorage.set('lightTheme', JSON5.parse(instance.defaultLightTheme)); + if (instance.defaultDarkTheme != null) ColdDeviceStorage.set('darkTheme', JSON5.parse(instance.defaultDarkTheme)); + defaultStore.set('themeInitial', false); + } +}); + // shortcut document.addEventListener('keydown', makeHotkey({ 'd': () => { diff --git a/packages/client/src/pages/admin/settings.vue b/packages/client/src/pages/admin/settings.vue index 5cf4d6c882..c5d7821329 100644 --- a/packages/client/src/pages/admin/settings.vue +++ b/packages/client/src/pages/admin/settings.vue @@ -31,6 +31,16 @@ + + + + + + + + + + @@ -176,6 +186,8 @@ export default defineComponent({ bannerUrl: null, backgroundImageUrl: null, themeColor: null, + defaultLightTheme: null, + defaultDarkTheme: null, enableLocalTimeline: false, enableGlobalTimeline: false, pinnedUsers: '', @@ -202,6 +214,8 @@ export default defineComponent({ this.bannerUrl = meta.bannerUrl; this.backgroundImageUrl = meta.backgroundImageUrl; this.themeColor = meta.themeColor; + this.defaultLightTheme = meta.defaultLightTheme; + this.defaultDarkTheme = meta.defaultDarkTheme; this.maintainerName = meta.maintainerName; this.maintainerEmail = meta.maintainerEmail; this.enableLocalTimeline = !meta.disableLocalTimeline; @@ -228,6 +242,8 @@ export default defineComponent({ bannerUrl: this.bannerUrl, backgroundImageUrl: this.backgroundImageUrl, themeColor: this.themeColor === '' ? null : this.themeColor, + defaultLightTheme: this.defaultLightTheme === '' ? null : this.defaultLightTheme, + defaultDarkTheme: this.defaultDarkTheme === '' ? null : this.defaultDarkTheme, maintainerName: this.maintainerName, maintainerEmail: this.maintainerEmail, disableLocalTimeline: !this.enableLocalTimeline, diff --git a/packages/client/src/pages/settings/theme.vue b/packages/client/src/pages/settings/theme.vue index 72b7e69174..92a6fee7a4 100644 --- a/packages/client/src/pages/settings/theme.vue +++ b/packages/client/src/pages/settings/theme.vue @@ -87,6 +87,7 @@