2022-12-11 11:52:36 +01:00
|
|
|
<script lang="ts" setup>
|
|
|
|
import { STORAGE_KEY_HIDE_EXPLORE_TAGS_TIPS } from '~~/constants'
|
|
|
|
|
2022-12-13 19:44:40 +01:00
|
|
|
const { t } = useI18n()
|
|
|
|
|
2022-12-25 15:04:50 +01:00
|
|
|
const masto = useMasto()
|
2022-12-11 11:52:36 +01:00
|
|
|
const { data, pending, error } = useLazyAsyncData(
|
2023-01-08 07:21:09 +01:00
|
|
|
async () => masto.v1.trends.listTags({ limit: 20 }),
|
2022-12-11 11:52:36 +01:00
|
|
|
{ immediate: true },
|
|
|
|
)
|
|
|
|
|
|
|
|
const hideTagsTips = useLocalStorage(STORAGE_KEY_HIDE_EXPLORE_TAGS_TIPS, false)
|
|
|
|
|
2022-12-13 19:44:40 +01:00
|
|
|
useHeadFixed({
|
2022-12-27 18:49:15 +01:00
|
|
|
title: () => `${t('tab.hashtags')} | ${t('nav.explore')}`,
|
2022-12-13 19:44:40 +01:00
|
|
|
})
|
2022-12-11 11:52:36 +01:00
|
|
|
</script>
|
|
|
|
|
|
|
|
<template>
|
2023-01-01 21:43:09 +01:00
|
|
|
<CommonAlert v-if="isHydrated && !hideTagsTips && data && data.length" @close="hideTagsTips = true">
|
2022-12-11 11:52:36 +01:00
|
|
|
<p>{{ $t('tooltip.explore_tags_intro') }}</p>
|
|
|
|
</CommonAlert>
|
|
|
|
|
|
|
|
<div v-if="data && data.length">
|
|
|
|
<TagCard v-for="item of data" :key="item.name" :tag="item" border="b base" />
|
|
|
|
|
|
|
|
<div p5 text-center text-secondary-light italic>
|
|
|
|
{{ $t('common.end_of_list') }}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div v-else-if="pending">
|
|
|
|
<TagCardSkeleton border="b base" />
|
|
|
|
<TagCardSkeleton border="b base" />
|
|
|
|
<TagCardSkeleton border="b base" op50 />
|
|
|
|
<TagCardSkeleton border="b base" op50 />
|
|
|
|
<TagCardSkeleton border="b base" op25 />
|
|
|
|
</div>
|
|
|
|
<div v-else-if="error" p5 text-center text-red italic>
|
|
|
|
{{ $t('common.error') }}: {{ error }}
|
|
|
|
</div>
|
|
|
|
<div v-else p5 text-center text-secondary italic>
|
|
|
|
{{ $t('error.explore-list-empty') }}
|
|
|
|
</div>
|
|
|
|
</template>
|