From a5f9eba974849fa2fcbad4814d509b04c963ef23 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Wed, 2 Apr 2025 10:09:25 +0900 Subject: [PATCH] =?UTF-8?q?enhance(frontend):=20=E3=82=A4=E3=83=B3?= =?UTF-8?q?=E3=82=B9=E3=83=88=E3=83=BC=E3=83=AB=E3=81=97=E3=81=9F=E3=83=86?= =?UTF-8?q?=E3=83=BC=E3=83=9E=E3=82=92=E3=83=87=E3=83=90=E3=82=A4=E3=82=B9?= =?UTF-8?q?=E9=96=93=E3=81=A7=E5=90=8C=E6=9C=9F=E3=81=A7=E3=81=8D=E3=82=8B?= =?UTF-8?q?=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- locales/index.d.ts | 4 ++++ locales/ja-JP.yml | 1 + .../frontend/src/pages/settings/theme.vue | 20 +++++++++++++++++++ .../utility/autogen/settings-search-index.ts | 5 +++++ 4 files changed, 30 insertions(+) diff --git a/locales/index.d.ts b/locales/index.d.ts index 2c64a6d373..177c9685a1 100644 --- a/locales/index.d.ts +++ b/locales/index.d.ts @@ -5662,6 +5662,10 @@ export interface Locale extends ILocale { * オフのとき */ "ifOff": string; + /** + * デバイス間でインストールしたテーマを同期 + */ + "enableSyncThemesBetweenDevices": string; "_chat": { /** * 送信者の名前を表示 diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 322506965c..483ece655d 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -1416,6 +1416,7 @@ _settings: showNavbarSubButtons: "ナビゲーションバーに副ボタンを表示" ifOn: "オンのとき" ifOff: "オフのとき" + enableSyncThemesBetweenDevices: "デバイス間でインストールしたテーマを同期" _chat: showSenderName: "送信者の名前を表示" diff --git a/packages/frontend/src/pages/settings/theme.vue b/packages/frontend/src/pages/settings/theme.vue index d149849afc..adc93ff7a7 100644 --- a/packages/frontend/src/pages/settings/theme.vue +++ b/packages/frontend/src/pages/settings/theme.vue @@ -181,6 +181,12 @@ SPDX-License-Identifier: AGPL-3.0-only + + + + + +
{{ i18n.ts._theme.manage }} @@ -264,6 +270,20 @@ watch(syncDeviceDarkMode, () => { } }); +const themesSyncEnabled = ref(prefer.isSyncEnabled('themes')); + +function changeThemesSyncEnabled(value: boolean) { + if (value) { + prefer.enableSync('themes').then((res) => { + if (res == null) return; + if (res.enabled) themesSyncEnabled.value = true; + }); + } else { + prefer.disableSync('themes'); + themesSyncEnabled.value = false; + } +} + const headerActions = computed(() => []); const headerTabs = computed(() => []); diff --git a/packages/frontend/src/utility/autogen/settings-search-index.ts b/packages/frontend/src/utility/autogen/settings-search-index.ts index 08ab0d8811..7f800d2b70 100644 --- a/packages/frontend/src/utility/autogen/settings-search-index.ts +++ b/packages/frontend/src/utility/autogen/settings-search-index.ts @@ -37,6 +37,11 @@ export const searchIndexes: SearchIndexItem[] = [ label: i18n.ts.themeForDarkMode, keywords: ['dark', 'theme'], }, + { + id: 'jwW5HULqA', + label: i18n.ts._settings.enableSyncThemesBetweenDevices, + keywords: ['sync', 'themes', 'devices'], + }, ], label: i18n.ts.theme, keywords: ['theme'],