feat: show and stream new notifications (#282)

Co-authored-by: Anthony Fu <anthonyfu117@hotmail.com>
This commit is contained in:
Daniel Roe 2022-12-02 02:21:10 +00:00 committed by GitHub
parent 0f06653636
commit 585b9e0229
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 74 additions and 10 deletions

View file

@ -1,9 +1,10 @@
<script setup lang="ts">
import type { Notification, Paginator } from 'masto'
import type { Notification, Paginator, WsEvents } from 'masto'
import type { GroupedNotifications } from '~/types'
const { paginator } = defineProps<{
const { paginator, stream } = defineProps<{
paginator: Paginator<any, Notification[]>
stream?: WsEvents
}>()
function groupItems(items: Notification[]): (Notification | GroupedNotifications)[] {
@ -41,10 +42,17 @@ function groupItems(items: Notification[]): (Notification | GroupedNotifications
return results
}
const { clearNotifications } = useNotifications()
</script>
<template>
<CommonPaginator :paginator="paginator">
<CommonPaginator :paginator="paginator" :stream="stream" event-type="notification">
<template #updater="{ number, update }">
<button py-4 border="b base" flex="~ col" p-3 w-full text-primary font-bold @click="() => { update(); clearNotifications() }">
{{ $t('timeline.show_new_items', [number]) }}
</button>
</template>
<template #items="{ items }">
<template v-for="item of groupItems(items)" :key="item.id">
<NotificationGroupedFollow