27 lines
853 B
Vue
27 lines
853 B
Vue
<script setup lang="ts">
|
|
import type { mastodon } from 'masto'
|
|
|
|
const paginator = useMastoClient().v1.timelines.public.list({ limit: 30 })
|
|
|
|
// streaming requires user session
|
|
let stream: Ref<mastodon.streaming.Subscription | undefined>
|
|
if (currentUser.value !== undefined)
|
|
stream = useStreaming(client => client.public.subscribe())
|
|
|
|
function reorderAndFilter(items: mastodon.v1.Status[]) {
|
|
return reorderedTimeline(items, 'public')
|
|
}
|
|
|
|
let followedTags: mastodon.v1.Tag[]
|
|
if (currentUser.value !== undefined) {
|
|
const { client } = useMasto()
|
|
const paginator = client.value.v1.followedTags.list()
|
|
followedTags = (await paginator.values().next()).value ?? []
|
|
}
|
|
</script>
|
|
|
|
<template>
|
|
<div>
|
|
<TimelinePaginator :followed-tags="followedTags" v-bind="{ paginator, stream }" :preprocess="reorderAndFilter" context="public" />
|
|
</div>
|
|
</template>
|