diff options
| author | taiy <53635909+taiyme@users.noreply.github.com> | 2024-02-16 16:17:09 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-02-16 16:17:09 +0900 |
| commit | 860e8bb5d84c02276dba7631b30fcf06b434e98a (patch) | |
| tree | d10966c19b91b52e447ba1d495eaf6fae276ace2 /packages/frontend/src/pages/admin | |
| parent | fix(ci): publish docker image fails (3) (#13327) (diff) | |
| download | misskey-860e8bb5d84c02276dba7631b30fcf06b434e98a.tar.gz misskey-860e8bb5d84c02276dba7631b30fcf06b434e98a.tar.bz2 misskey-860e8bb5d84c02276dba7631b30fcf06b434e98a.zip | |
fix(frontend/pageMetadata): ページタイトルが更新されない問題 (#13289)
Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>
Diffstat (limited to 'packages/frontend/src/pages/admin')
28 files changed, 67 insertions, 68 deletions
diff --git a/packages/frontend/src/pages/admin/_header_.vue b/packages/frontend/src/pages/admin/_header_.vue index 9c05329499..c5a9609e6e 100644 --- a/packages/frontend/src/pages/admin/_header_.vue +++ b/packages/frontend/src/pages/admin/_header_.vue @@ -5,12 +5,12 @@ SPDX-License-Identifier: AGPL-3.0-only <template> <div ref="el" class="fdidabkc" :style="{ background: bg }" @click="onClick"> - <template v-if="metadata"> + <template v-if="pageMetadata"> <div class="titleContainer" @click="showTabsPopup"> - <i v-if="metadata.icon" class="icon" :class="metadata.icon"></i> + <i v-if="pageMetadata.icon" class="icon" :class="pageMetadata.icon"></i> <div class="title"> - <div class="title">{{ metadata.title }}</div> + <div class="title">{{ pageMetadata.title }}</div> </div> </div> <div class="tabs"> @@ -39,7 +39,7 @@ import { popupMenu } from '@/os.js'; import { scrollToTop } from '@/scripts/scroll.js'; import MkButton from '@/components/MkButton.vue'; import { globalEvents } from '@/events.js'; -import { injectPageMetadata } from '@/scripts/page-metadata.js'; +import { injectReactiveMetadata } from '@/scripts/page-metadata.js'; type Tab = { key?: string | null; @@ -65,7 +65,7 @@ const emit = defineEmits<{ (ev: 'update:tab', key: string); }>(); -const metadata = injectPageMetadata(); +const pageMetadata = injectReactiveMetadata(); const el = shallowRef<HTMLElement>(null); const tabRefs = {}; @@ -118,7 +118,7 @@ function onTabClick(tab: Tab, ev: MouseEvent): void { } const calcBg = () => { - const rawBg = metadata?.bg ?? 'var(--bg)'; + const rawBg = pageMetadata.value?.bg ?? 'var(--bg)'; const tinyBg = tinycolor(rawBg.startsWith('var(') ? getComputedStyle(document.documentElement).getPropertyValue(rawBg.slice(4, -1)) : rawBg); tinyBg.setAlpha(0.85); bg.value = tinyBg.toRgbString(); diff --git a/packages/frontend/src/pages/admin/abuses.vue b/packages/frontend/src/pages/admin/abuses.vue index f16e9d22f7..d2f4a4b531 100644 --- a/packages/frontend/src/pages/admin/abuses.vue +++ b/packages/frontend/src/pages/admin/abuses.vue @@ -87,8 +87,8 @@ const headerActions = computed(() => []); const headerTabs = computed(() => []); -definePageMetadata({ +definePageMetadata(() => ({ title: i18n.ts.abuseReports, icon: 'ti ti-exclamation-circle', -}); +})); </script> diff --git a/packages/frontend/src/pages/admin/ads.vue b/packages/frontend/src/pages/admin/ads.vue index 72ae14b3e9..bd442ccc69 100644 --- a/packages/frontend/src/pages/admin/ads.vue +++ b/packages/frontend/src/pages/admin/ads.vue @@ -255,10 +255,10 @@ const headerActions = computed(() => [{ const headerTabs = computed(() => []); -definePageMetadata({ +definePageMetadata(() => ({ title: i18n.ts.ads, icon: 'ti ti-ad', -}); +})); </script> <style lang="scss" module> diff --git a/packages/frontend/src/pages/admin/announcements.vue b/packages/frontend/src/pages/admin/announcements.vue index 300af01640..e7fb62ec1d 100644 --- a/packages/frontend/src/pages/admin/announcements.vue +++ b/packages/frontend/src/pages/admin/announcements.vue @@ -157,8 +157,8 @@ const headerActions = computed(() => [{ const headerTabs = computed(() => []); -definePageMetadata({ +definePageMetadata(() => ({ title: i18n.ts.announcements, icon: 'ti ti-speakerphone', -}); +})); </script> diff --git a/packages/frontend/src/pages/admin/branding.vue b/packages/frontend/src/pages/admin/branding.vue index 8fecdca5b8..4ac2011aaf 100644 --- a/packages/frontend/src/pages/admin/branding.vue +++ b/packages/frontend/src/pages/admin/branding.vue @@ -159,10 +159,10 @@ function save() { const headerTabs = computed(() => []); -definePageMetadata({ +definePageMetadata(() => ({ title: i18n.ts.branding, icon: 'ti ti-paint', -}); +})); </script> <style lang="scss" module> diff --git a/packages/frontend/src/pages/admin/database.vue b/packages/frontend/src/pages/admin/database.vue index e7c90f5a03..e092efd92c 100644 --- a/packages/frontend/src/pages/admin/database.vue +++ b/packages/frontend/src/pages/admin/database.vue @@ -33,8 +33,8 @@ const headerActions = computed(() => []); const headerTabs = computed(() => []); -definePageMetadata({ +definePageMetadata(() => ({ title: i18n.ts.database, icon: 'ti ti-database', -}); +})); </script> diff --git a/packages/frontend/src/pages/admin/email-settings.vue b/packages/frontend/src/pages/admin/email-settings.vue index c36ea81a01..839b9bee16 100644 --- a/packages/frontend/src/pages/admin/email-settings.vue +++ b/packages/frontend/src/pages/admin/email-settings.vue @@ -130,10 +130,10 @@ function save() { const headerTabs = computed(() => []); -definePageMetadata({ +definePageMetadata(() => ({ title: i18n.ts.emailServer, icon: 'ti ti-mail', -}); +})); </script> <style lang="scss" module> diff --git a/packages/frontend/src/pages/admin/external-services.vue b/packages/frontend/src/pages/admin/external-services.vue index 2c9d447c4d..ba3eb05e72 100644 --- a/packages/frontend/src/pages/admin/external-services.vue +++ b/packages/frontend/src/pages/admin/external-services.vue @@ -69,10 +69,10 @@ const headerActions = computed(() => []); const headerTabs = computed(() => []); -definePageMetadata({ +definePageMetadata(() => ({ title: i18n.ts.externalServices, icon: 'ti ti-link', -}); +})); </script> <style lang="scss" module> diff --git a/packages/frontend/src/pages/admin/federation.vue b/packages/frontend/src/pages/admin/federation.vue index 2dd1a968bb..de27e1f67a 100644 --- a/packages/frontend/src/pages/admin/federation.vue +++ b/packages/frontend/src/pages/admin/federation.vue @@ -102,10 +102,10 @@ const headerActions = computed(() => []); const headerTabs = computed(() => []); -definePageMetadata(computed(() => ({ +definePageMetadata(() => ({ title: i18n.ts.federation, icon: 'ti ti-whirl', -}))); +})); </script> <style lang="scss" module> diff --git a/packages/frontend/src/pages/admin/files.vue b/packages/frontend/src/pages/admin/files.vue index eadfe63fa9..3fe021e771 100644 --- a/packages/frontend/src/pages/admin/files.vue +++ b/packages/frontend/src/pages/admin/files.vue @@ -108,8 +108,8 @@ const headerActions = computed(() => [{ const headerTabs = computed(() => []); -definePageMetadata(computed(() => ({ +definePageMetadata(() => ({ title: i18n.ts.files, icon: 'ti ti-cloud', -}))); +})); </script> diff --git a/packages/frontend/src/pages/admin/index.vue b/packages/frontend/src/pages/admin/index.vue index d83e14018c..d4a41c66cc 100644 --- a/packages/frontend/src/pages/admin/index.vue +++ b/packages/frontend/src/pages/admin/index.vue @@ -28,7 +28,7 @@ SPDX-License-Identifier: AGPL-3.0-only </template> <script lang="ts" setup> -import { ComputedRef, Ref, onActivated, onMounted, onUnmounted, provide, watch, ref, computed } from 'vue'; +import { onActivated, onMounted, onUnmounted, provide, watch, ref, computed } from 'vue'; import { i18n } from '@/i18n.js'; import MkSuperMenu from '@/components/MkSuperMenu.vue'; import MkInfo from '@/components/MkInfo.vue'; @@ -36,7 +36,7 @@ import { instance } from '@/instance.js'; import * as os from '@/os.js'; import { misskeyApi } from '@/scripts/misskey-api.js'; import { lookupUser, lookupUserByEmail } from '@/scripts/lookup-user.js'; -import { PageMetadata, definePageMetadata, provideMetadataReceiver } from '@/scripts/page-metadata.js'; +import { PageMetadata, definePageMetadata, provideMetadataReceiver, provideReactiveMetadata } from '@/scripts/page-metadata.js'; import { useRouter } from '@/router/supplier.js'; const isEmpty = (x: string | null) => x == null || x === ''; @@ -52,7 +52,7 @@ const indexInfo = { provide('shouldOmitHeaderTitle', false); const INFO = ref(indexInfo); -const childInfo: Ref<ComputedRef<PageMetadata> | null> = ref(null); +const childInfo = ref<null | PageMetadata>(null); const narrow = ref(false); const view = ref(null); const el = ref<HTMLDivElement | null>(null); @@ -257,14 +257,16 @@ watch(router.currentRef, (to) => { } }); -provideMetadataReceiver((info) => { +provideMetadataReceiver((metadataGetter) => { + const info = metadataGetter(); if (info == null) { childInfo.value = null; } else { childInfo.value = info; - INFO.value.needWideArea = info.value.needWideArea ?? undefined; + INFO.value.needWideArea = info.needWideArea ?? undefined; } }); +provideReactiveMetadata(INFO); function invite() { misskeyApi('admin/invite/create').then(x => { @@ -318,7 +320,7 @@ const headerActions = computed(() => []); const headerTabs = computed(() => []); -definePageMetadata(INFO.value); +definePageMetadata(() => INFO.value); defineExpose({ header: { diff --git a/packages/frontend/src/pages/admin/instance-block.vue b/packages/frontend/src/pages/admin/instance-block.vue index 7cba6823e7..5167b2e6b2 100644 --- a/packages/frontend/src/pages/admin/instance-block.vue +++ b/packages/frontend/src/pages/admin/instance-block.vue @@ -66,8 +66,8 @@ const headerTabs = computed(() => [{ icon: 'ti ti-eye-off', }]); -definePageMetadata({ +definePageMetadata(() => ({ title: i18n.ts.instanceBlocking, icon: 'ti ti-ban', -}); +})); </script> diff --git a/packages/frontend/src/pages/admin/invites.vue b/packages/frontend/src/pages/admin/invites.vue index a2187fbb27..95727fb14c 100644 --- a/packages/frontend/src/pages/admin/invites.vue +++ b/packages/frontend/src/pages/admin/invites.vue @@ -113,10 +113,10 @@ function deleted(id: string) { const headerActions = computed(() => []); const headerTabs = computed(() => []); -definePageMetadata({ +definePageMetadata(() => ({ title: i18n.ts.invite, icon: 'ti ti-user-plus', -}); +})); </script> <style lang="scss" module> diff --git a/packages/frontend/src/pages/admin/moderation.vue b/packages/frontend/src/pages/admin/moderation.vue index ae0606ed0d..d6cb1e39a7 100644 --- a/packages/frontend/src/pages/admin/moderation.vue +++ b/packages/frontend/src/pages/admin/moderation.vue @@ -116,10 +116,10 @@ function save() { const headerTabs = computed(() => []); -definePageMetadata({ +definePageMetadata(() => ({ title: i18n.ts.moderation, icon: 'ti ti-shield', -}); +})); </script> <style lang="scss" module> diff --git a/packages/frontend/src/pages/admin/modlog.vue b/packages/frontend/src/pages/admin/modlog.vue index 7cfd530790..5e251b8a6f 100644 --- a/packages/frontend/src/pages/admin/modlog.vue +++ b/packages/frontend/src/pages/admin/modlog.vue @@ -60,8 +60,8 @@ const headerActions = computed(() => []); const headerTabs = computed(() => []); -definePageMetadata({ +definePageMetadata(() => ({ title: i18n.ts.moderationLogs, icon: 'ti ti-list-search', -}); +})); </script> diff --git a/packages/frontend/src/pages/admin/object-storage.vue b/packages/frontend/src/pages/admin/object-storage.vue index 2d26eb0fb0..4ff5ab09ca 100644 --- a/packages/frontend/src/pages/admin/object-storage.vue +++ b/packages/frontend/src/pages/admin/object-storage.vue @@ -149,10 +149,10 @@ function save() { const headerTabs = computed(() => []); -definePageMetadata({ +definePageMetadata(() => ({ title: i18n.ts.objectStorage, icon: 'ti ti-cloud', -}); +})); </script> <style lang="scss" module> diff --git a/packages/frontend/src/pages/admin/other-settings.vue b/packages/frontend/src/pages/admin/other-settings.vue index b9a34b8bc4..651f0ef936 100644 --- a/packages/frontend/src/pages/admin/other-settings.vue +++ b/packages/frontend/src/pages/admin/other-settings.vue @@ -86,8 +86,8 @@ const headerActions = computed(() => [{ const headerTabs = computed(() => []); -definePageMetadata({ +definePageMetadata(() => ({ title: i18n.ts.other, icon: 'ti ti-adjustments', -}); +})); </script> diff --git a/packages/frontend/src/pages/admin/overview.vue b/packages/frontend/src/pages/admin/overview.vue index c580f5781b..1de4dc0dc8 100644 --- a/packages/frontend/src/pages/admin/overview.vue +++ b/packages/frontend/src/pages/admin/overview.vue @@ -184,10 +184,10 @@ const headerActions = computed(() => []); const headerTabs = computed(() => []); -definePageMetadata({ +definePageMetadata(() => ({ title: i18n.ts.dashboard, icon: 'ti ti-dashboard', -}); +})); </script> <style lang="scss" module> diff --git a/packages/frontend/src/pages/admin/proxy-account.vue b/packages/frontend/src/pages/admin/proxy-account.vue index 85c9812e85..02b506d13d 100644 --- a/packages/frontend/src/pages/admin/proxy-account.vue +++ b/packages/frontend/src/pages/admin/proxy-account.vue @@ -64,8 +64,8 @@ const headerActions = computed(() => []); const headerTabs = computed(() => []); -definePageMetadata({ +definePageMetadata(() => ({ title: i18n.ts.proxyAccount, icon: 'ti ti-ghost', -}); +})); </script> diff --git a/packages/frontend/src/pages/admin/queue.vue b/packages/frontend/src/pages/admin/queue.vue index 0466649e9e..8d77d927d7 100644 --- a/packages/frontend/src/pages/admin/queue.vue +++ b/packages/frontend/src/pages/admin/queue.vue @@ -68,8 +68,8 @@ const headerTabs = computed(() => [{ title: 'Inbox', }]); -definePageMetadata({ +definePageMetadata(() => ({ title: i18n.ts.jobQueue, icon: 'ti ti-clock-play', -}); +})); </script> diff --git a/packages/frontend/src/pages/admin/relays.vue b/packages/frontend/src/pages/admin/relays.vue index ea80822e53..04982eea1f 100644 --- a/packages/frontend/src/pages/admin/relays.vue +++ b/packages/frontend/src/pages/admin/relays.vue @@ -84,10 +84,10 @@ const headerActions = computed(() => [{ const headerTabs = computed(() => []); -definePageMetadata({ +definePageMetadata(() => ({ title: i18n.ts.relays, icon: 'ti ti-planet', -}); +})); </script> <style lang="scss" module> diff --git a/packages/frontend/src/pages/admin/roles.edit.vue b/packages/frontend/src/pages/admin/roles.edit.vue index 5d0dbe789e..60f06d50ba 100644 --- a/packages/frontend/src/pages/admin/roles.edit.vue +++ b/packages/frontend/src/pages/admin/roles.edit.vue @@ -87,11 +87,8 @@ async function save() { const headerTabs = computed(() => []); -definePageMetadata(computed(() => role.value ? { - title: i18n.ts._role.edit + ': ' + role.value.name, - icon: 'ti ti-badge', -} : { - title: i18n.ts._role.new, +definePageMetadata(() => ({ + title: role.value ? `${i18n.ts._role.edit}: ${role.value.name}` : i18n.ts._role.new, icon: 'ti ti-badge', })); </script> diff --git a/packages/frontend/src/pages/admin/roles.role.vue b/packages/frontend/src/pages/admin/roles.role.vue index 87b5dc7f5c..ab8005045b 100644 --- a/packages/frontend/src/pages/admin/roles.role.vue +++ b/packages/frontend/src/pages/admin/roles.role.vue @@ -170,10 +170,10 @@ const headerActions = computed(() => []); const headerTabs = computed(() => []); -definePageMetadata(computed(() => ({ - title: i18n.ts.role + ': ' + role.name, +definePageMetadata(() => ({ + title: `${i18n.ts.role}: ${role.name}`, icon: 'ti ti-badge', -}))); +})); </script> <style lang="scss" module> diff --git a/packages/frontend/src/pages/admin/roles.vue b/packages/frontend/src/pages/admin/roles.vue index 44b6c0a25c..496cb09664 100644 --- a/packages/frontend/src/pages/admin/roles.vue +++ b/packages/frontend/src/pages/admin/roles.vue @@ -270,10 +270,10 @@ const headerActions = computed(() => []); const headerTabs = computed(() => []); -definePageMetadata(computed(() => ({ +definePageMetadata(() => ({ title: i18n.ts.roles, icon: 'ti ti-badges', -}))); +})); </script> <style lang="scss" module> diff --git a/packages/frontend/src/pages/admin/security.vue b/packages/frontend/src/pages/admin/security.vue index 6a0b3fe793..cadcf5a8cc 100644 --- a/packages/frontend/src/pages/admin/security.vue +++ b/packages/frontend/src/pages/admin/security.vue @@ -229,8 +229,8 @@ const headerActions = computed(() => []); const headerTabs = computed(() => []); -definePageMetadata({ +definePageMetadata(() => ({ title: i18n.ts.security, icon: 'ti ti-lock', -}); +})); </script> diff --git a/packages/frontend/src/pages/admin/server-rules.vue b/packages/frontend/src/pages/admin/server-rules.vue index daea420988..87318bccce 100644 --- a/packages/frontend/src/pages/admin/server-rules.vue +++ b/packages/frontend/src/pages/admin/server-rules.vue @@ -67,10 +67,10 @@ const remove = (index: number): void => { const headerTabs = computed(() => []); -definePageMetadata({ +definePageMetadata(() => ({ title: i18n.ts.serverRules, icon: 'ti ti-checkbox', -}); +})); </script> <style lang="scss" module> diff --git a/packages/frontend/src/pages/admin/settings.vue b/packages/frontend/src/pages/admin/settings.vue index ea57176fff..8af9deae62 100644 --- a/packages/frontend/src/pages/admin/settings.vue +++ b/packages/frontend/src/pages/admin/settings.vue @@ -235,10 +235,10 @@ async function save(): void { const headerTabs = computed(() => []); -definePageMetadata({ +definePageMetadata(() => ({ title: i18n.ts.general, icon: 'ti ti-settings', -}); +})); </script> <style lang="scss" module> diff --git a/packages/frontend/src/pages/admin/users.vue b/packages/frontend/src/pages/admin/users.vue index 888a27906a..06317760d2 100644 --- a/packages/frontend/src/pages/admin/users.vue +++ b/packages/frontend/src/pages/admin/users.vue @@ -137,10 +137,10 @@ const headerActions = computed(() => [{ const headerTabs = computed(() => []); -definePageMetadata(computed(() => ({ +definePageMetadata(() => ({ title: i18n.ts.users, icon: 'ti ti-users', -}))); +})); </script> <style lang="scss" module> |