elk/pages/[[server]]/@[account]/index.vue

54 lines
1.8 KiB
Vue
Raw Normal View History

2022-11-13 16:05:32 +00:00
<script setup lang="ts">
definePageMeta({
key: route => `${route.params.server ?? currentServer.value}:${route.params.account}`,
})
2022-11-13 16:05:32 +00:00
const params = useRoute().params
const accountName = $(computedEager(() => toShortHandle(params.account as string)))
2022-11-28 14:25:32 +00:00
const { t } = useI18n()
const { data: account, pending, refresh } = $(await useAsyncData(() => fetchAccountByHandle(accountName).catch(() => null), { immediate: process.client, default: () => shallowRef() }))
2022-12-04 16:50:38 +00:00
const relationship = $computed(() => account ? useRelationship(account).value : undefined)
const userSettings = useUserSettings()
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-13 16:05:32 +00:00
</script>
<template>
2022-11-26 12:58:10 +00:00
<MainContent back>
<template #title>
<ContentRich
timeline-title-style
:content="account ? getDisplayName(account) : t('nav.profile')"
:show-emojis="!getPreferences(userSettings, 'hideUsernameEmojis')"
/>
2022-11-26 12:58:10 +00:00
</template>
<template v-if="pending" />
<template v-else-if="account">
<AccountMoved v-if="account.moved" :account="account" />
<AccountHeader :account="account" command border="b base" :class="{ 'op-50 grayscale-50': !!account.moved }" />
2022-12-04 16:50:38 +00: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 />
</template>
<CommonNotFound v-else>
2022-11-29 21:50:13 +00:00
{{ $t('error.account_not_found', [`@${accountName}`]) }}
</CommonNotFound>
</MainContent>
2022-11-13 16:05:32 +00:00
</template>