feat: /public/local timeline and timeline header (#3)

Co-authored-by: Anthony Fu <anthonyfu117@hotmail.com>
zio/stable
patak 2022-11-15 14:50:41 +01:00 committed by GitHub
parent cf22ca25bf
commit a17d3276d3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 87 additions and 14 deletions

View File

@ -0,0 +1,13 @@
<template>
<div flex flex-col>
<div flex justify-between>
<div p3 flex gap-1>
<slot name="title" />
</div>
<div p3 flex>
<slot name="actions" />
</div>
</div>
<slot />
</div>
</template>

View File

@ -2,12 +2,16 @@
<div h-full of-hidden> <div h-full of-hidden>
<main grid="~ lg:cols-[1fr_40rem_1fr]" h-full> <main grid="~ lg:cols-[1fr_40rem_1fr]" h-full>
<div> <div>
<slot name="left">
<NavTitle p4 /> <NavTitle p4 />
</slot>
</div> </div>
<div h-full of-auto border="l r border"> <div h-full of-auto border="l r border">
<slot /> <slot />
</div> </div>
<div>Right</div> <div>
<slot name="right" />
</div>
</main> </main>
</div> </div>
</template> </template>

23
pages/home.vue 100644
View File

@ -0,0 +1,23 @@
<script setup lang="ts">
const token = useCookie('nuxtodon-token')
const router = useRouter()
if (!token.value)
router.replace('/public')
const masto = await useMasto()
const paginator = masto.timelines.getHomeIterable()
</script>
<template>
<MainContent>
<template #title>
<div i-ri:home-fill h-6 mr-1 /><span>Home</span>
</template>
<template #actions>
<div color-gray i-ri:equalizer-fill mr-1 h-6 />
</template>
<slot>
<TimelinePaginator :timelines="paginator" />
</slot>
</MainContent>
</template>

View File

@ -1,14 +1,14 @@
<script setup lang="ts"> <script setup lang="ts">
const token = useCookie('nuxtodon-token') const token = useCookie('nuxtodon-token')
const router = useRouter() const router = useRouter()
// TODO: move to middleware // TODO: move to middleware
if (!token.value) if (!token.value)
router.replace('/public') router.replace('/public')
else
const masto = await useMasto() router.replace('/home')
const paginator = masto.timelines.getHomeIterable()
</script> </script>
<template> <template>
<TimelinePaginator :paginator="paginator" /> <div />
</template> </template>

View File

@ -1,8 +0,0 @@
<script setup lang="ts">
const masto = await useMasto()
const paginator = masto.timelines.getPublicIterable()
</script>
<template>
<TimelinePaginator :paginator="paginator" />
</template>

View File

@ -0,0 +1,18 @@
<script setup lang="ts">
const masto = await useMasto()
const { data: timelines } = await useAsyncData('timelines-public', () => masto.timelines.fetchPublic().then(r => r.value))
</script>
<template>
<MainContent>
<template #title>
<div i-ri:earth-fill h-6 mr-1 /><span>Federated Timeline</span>
</template>
<template #actions>
<div color-gray i-ri:equalizer-fill mr-1 h-6 />
</template>
<slot>
<TimelineList :timelines="timelines" />
</slot>
</MainContent>
</template>

View File

@ -0,0 +1,23 @@
<script setup lang="ts">
const token = useCookie('nuxtodon-token')
const router = useRouter()
if (!token.value)
router.replace('/public')
const masto = await useMasto()
const { data: timelines } = await useAsyncData('timelines-home', () => masto.timelines.fetchPublic({ local: true }).then(r => r.value))
</script>
<template>
<MainContent>
<template #title>
<div i-ri:group-fill h-6 mr-1 /><span>Local timeline</span>
</template>
<template #actions>
<div color-gray i-ri:equalizer-fill mr-1 h-6 />
</template>
<slot>
<TimelineList :timelines="timelines" />
</slot>
</MainContent>
</template>