diff --git a/composables/masto/notification.ts b/composables/masto/notification.ts index 8577b252..4797a543 100644 --- a/composables/masto/notification.ts +++ b/composables/masto/notification.ts @@ -10,8 +10,10 @@ export function useNotifications() { async function clearNotifications() { if (!id || !notifications[id]) return + const lastReadId = notifications[id]![1][0] notifications[id]![1] = [] + if (lastReadId) { await client.v1.markers.create({ notifications: { lastReadId }, @@ -30,11 +32,11 @@ export function useNotifications() { if (!isHydrated.value || !id || notifications[id] !== undefined || !currentUser.value?.token) return - let resolveStream + let resolveStream: ((value: mastodon.streaming.Subscription | PromiseLike) => void) | undefined const streamPromise = new Promise(resolve => resolveStream = resolve) notifications[id] = [streamPromise, []] - await until($$(streamingClient)).toBe(true) + await until($$(streamingClient)).toBeTruthy() const stream = streamingClient!.user.subscribe() resolveStream!(stream) @@ -43,6 +45,7 @@ export function useNotifications() { const position = await client.v1.markers.fetch({ timeline: ['notifications'] }) const paginator = client.v1.notifications.list({ limit: 30 }) + do { const result = await paginator.next() if (!result.done && result.value.length) {