2022-11-14 01:05:32 +09:00
|
|
|
<script setup lang="ts">
|
2022-12-12 08:30:26 +09:00
|
|
|
definePageMeta({
|
2023-02-05 21:10:19 +09:00
|
|
|
key: route => `${route.params.server ?? currentServer.value}:${route.params.account}`,
|
2022-12-12 08:30:26 +09:00
|
|
|
})
|
|
|
|
|
2022-11-14 01:05:32 +09:00
|
|
|
const params = useRoute().params
|
2022-11-28 02:34:45 +09:00
|
|
|
const accountName = $(computedEager(() => toShortHandle(params.account as string)))
|
2022-11-21 06:38:52 +09:00
|
|
|
|
2022-11-28 23:25:32 +09:00
|
|
|
const { t } = useI18n()
|
|
|
|
|
2023-01-16 09:33:07 +09:00
|
|
|
const { data: account, pending, refresh } = $(await useAsyncData(() => fetchAccountByHandle(accountName).catch(() => null), { immediate: process.client, default: () => shallowRef() }))
|
2022-12-05 01:50:38 +09:00
|
|
|
const relationship = $computed(() => account ? useRelationship(account).value : undefined)
|
2022-11-21 06:38:52 +09:00
|
|
|
|
2023-02-05 02:02:05 +09:00
|
|
|
const userSettings = useUserSettings()
|
|
|
|
|
2022-11-28 02:34:45 +09:00
|
|
|
onReactivated(() => {
|
|
|
|
// Silently update data when reentering the page
|
|
|
|
// The user will see the previous content first, and any changes will be updated to the UI when the request is completed
|
|
|
|
refresh()
|
|
|
|
})
|
2022-11-14 01:05:32 +09:00
|
|
|
</script>
|
|
|
|
|
|
|
|
<template>
|
2022-11-26 21:58:10 +09:00
|
|
|
<MainContent back>
|
|
|
|
<template #title>
|
2023-02-05 02:02:05 +09:00
|
|
|
<ContentRich
|
|
|
|
timeline-title-style
|
|
|
|
:content="account ? getDisplayName(account) : t('nav.profile')"
|
|
|
|
:show-emojis="!getPreferences(userSettings, 'hideUsernameEmojis')"
|
2023-02-15 19:21:33 +09:00
|
|
|
:markdown="false"
|
2023-02-05 02:02:05 +09:00
|
|
|
/>
|
2022-11-26 21:58:10 +09:00
|
|
|
</template>
|
|
|
|
|
2022-12-26 23:14:48 +09:00
|
|
|
<template v-if="pending" />
|
|
|
|
<template v-else-if="account">
|
2022-12-05 02:28:22 +09:00
|
|
|
<AccountMoved v-if="account.moved" :account="account" />
|
|
|
|
<AccountHeader :account="account" command border="b base" :class="{ 'op-50 grayscale-50': !!account.moved }" />
|
2022-12-05 01:50:38 +09:00
|
|
|
|
|
|
|
<div v-if="relationship?.blockedBy" h-30 flex="~ col center gap-2">
|
|
|
|
<div text-secondary>
|
|
|
|
{{ $t('account.profile_unavailable') }}
|
|
|
|
</div>
|
|
|
|
<div text-secondary-light text-sm>
|
|
|
|
{{ $t('account.blocked_by') }}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<NuxtPage v-else />
|
2022-11-26 08:49:56 +09:00
|
|
|
</template>
|
|
|
|
|
|
|
|
<CommonNotFound v-else>
|
2022-11-30 06:50:13 +09:00
|
|
|
{{ $t('error.account_not_found', [`@${accountName}`]) }}
|
2022-11-26 08:49:56 +09:00
|
|
|
</CommonNotFound>
|
|
|
|
</MainContent>
|
2022-11-14 01:05:32 +09:00
|
|
|
</template>
|