diff options
| author | syuilo <4439005+syuilo@users.noreply.github.com> | 2025-04-01 13:18:49 +0900 |
|---|---|---|
| committer | syuilo <4439005+syuilo@users.noreply.github.com> | 2025-04-01 13:18:49 +0900 |
| commit | 500a5615f08f6926d12ef83466b4b642549cb756 (patch) | |
| tree | a81c501c2f5aafa1ec2565e63b7088901859da2e /packages/frontend/src/pages | |
| parent | fix missing import (diff) | |
| download | misskey-500a5615f08f6926d12ef83466b4b642549cb756.tar.gz misskey-500a5615f08f6926d12ef83466b4b642549cb756.tar.bz2 misskey-500a5615f08f6926d12ef83466b4b642549cb756.zip | |
enhance(frontend): 壁紙をデッキ設定の一部に
Diffstat (limited to 'packages/frontend/src/pages')
| -rw-r--r-- | packages/frontend/src/pages/settings/deck.vue | 25 | ||||
| -rw-r--r-- | packages/frontend/src/pages/settings/theme.vue | 24 |
2 files changed, 25 insertions, 24 deletions
diff --git a/packages/frontend/src/pages/settings/deck.vue b/packages/frontend/src/pages/settings/deck.vue index 902e058e0d..f4bce8a5dd 100644 --- a/packages/frontend/src/pages/settings/deck.vue +++ b/packages/frontend/src/pages/settings/deck.vue @@ -12,6 +12,8 @@ SPDX-License-Identifier: AGPL-3.0-only </MkSwitch> </SearchMarker> + <hr> + <SearchMarker :keywords="['ui', 'root', 'page']"> <MkPreferenceContainer k="deck.useSimpleUiForNonRootPages"> <MkSwitch v-model="useSimpleUiForNonRootPages"> @@ -74,19 +76,29 @@ SPDX-License-Identifier: AGPL-3.0-only </MkRange> </MkPreferenceContainer> </SearchMarker> + + <SearchMarker :keywords="['wallpaper']"> + <MkPreferenceContainer k="deck.wallpaper"> + <MkButton v-if="wallpaper == null" @click="setWallpaper"><SearchLabel>{{ i18n.ts.setWallpaper }}</SearchLabel></MkButton> + <MkButton v-else @click="wallpaper = null">{{ i18n.ts.removeWallpaper }}</MkButton> + </MkPreferenceContainer> + </SearchMarker> </div> </SearchMarker> </template> <script lang="ts" setup> -import { computed, ref } from 'vue'; +import { computed, ref, watch } from 'vue'; import MkSwitch from '@/components/MkSwitch.vue'; import MkRadios from '@/components/MkRadios.vue'; import MkRange from '@/components/MkRange.vue'; +import MkButton from '@/components/MkButton.vue'; import { i18n } from '@/i18n.js'; import { definePage } from '@/page.js'; import { prefer } from '@/preferences.js'; import MkPreferenceContainer from '@/components/MkPreferenceContainer.vue'; +import { reloadAsk } from '@/utility/reload-ask.js'; +import { selectFile } from '@/utility/select-file.js'; const navWindow = prefer.model('deck.navWindow'); const useSimpleUiForNonRootPages = prefer.model('deck.useSimpleUiForNonRootPages'); @@ -95,6 +107,17 @@ const columnAlign = prefer.model('deck.columnAlign'); const columnGap = prefer.model('deck.columnGap'); const menuPosition = prefer.model('deck.menuPosition'); const navbarPosition = prefer.model('deck.navbarPosition'); +const wallpaper = prefer.model('deck.wallpaper'); + +watch(wallpaper, async () => { + await reloadAsk({ reason: i18n.ts.reloadToApplySetting, unison: true }); +}); + +function setWallpaper(ev: MouseEvent) { + selectFile(ev.currentTarget ?? ev.target, null).then(file => { + wallpaper.value = file.url; + }); +} const profilesSyncEnabled = ref(prefer.isSyncEnabled('deck.profiles')); diff --git a/packages/frontend/src/pages/settings/theme.vue b/packages/frontend/src/pages/settings/theme.vue index 9a8aeb00d6..d149849afc 100644 --- a/packages/frontend/src/pages/settings/theme.vue +++ b/packages/frontend/src/pages/settings/theme.vue @@ -189,17 +189,12 @@ SPDX-License-Identifier: AGPL-3.0-only <FormLink to="/theme-editor"><template #icon><i class="ti ti-paint"></i></template>{{ i18n.ts._theme.make }}</FormLink> </div> </FormSection> - - <SearchMarker :keywords="['wallpaper']"> - <MkButton v-if="wallpaper == null" @click="setWallpaper"><SearchLabel>{{ i18n.ts.setWallpaper }}</SearchLabel></MkButton> - <MkButton v-else @click="wallpaper = null">{{ i18n.ts.removeWallpaper }}</MkButton> - </SearchMarker> </div> </SearchMarker> </template> <script lang="ts" setup> -import { computed, onActivated, ref, watch } from 'vue'; +import { computed, ref, watch } from 'vue'; import JSON5 from 'json5'; import defaultLightTheme from '@@/themes/l-light.json5'; import defaultDarkTheme from '@@/themes/d-green-lime.json5'; @@ -207,7 +202,6 @@ import type { Theme } from '@/theme.js'; import MkSwitch from '@/components/MkSwitch.vue'; import FormSection from '@/components/form/section.vue'; import FormLink from '@/components/form/link.vue'; -import MkButton from '@/components/MkButton.vue'; import MkFolder from '@/components/MkFolder.vue'; import MkThemePreview from '@/components/MkThemePreview.vue'; import { getBuiltinThemesRef, getThemesRef } from '@/theme.js'; @@ -262,7 +256,6 @@ const lightThemeId = computed({ const darkMode = computed(store.makeGetterSetter('darkMode')); const syncDeviceDarkMode = prefer.model('syncDeviceDarkMode'); -const wallpaper = ref(miLocalStorage.getItem('wallpaper')); const themesCount = installedThemes.value.length; watch(syncDeviceDarkMode, () => { @@ -271,21 +264,6 @@ watch(syncDeviceDarkMode, () => { } }); -watch(wallpaper, async () => { - if (wallpaper.value == null) { - miLocalStorage.removeItem('wallpaper'); - } else { - miLocalStorage.setItem('wallpaper', wallpaper.value); - } - await reloadAsk({ reason: i18n.ts.reloadToApplySetting, unison: true }); -}); - -function setWallpaper(event) { - selectFile(event.currentTarget ?? event.target, null).then(file => { - wallpaper.value = file.url; - }); -} - const headerActions = computed(() => []); const headerTabs = computed(() => []); |