From bb119d0f8d464d37e440280410f17a16e23e2895 Mon Sep 17 00:00:00 2001 From: userquin Date: Fri, 10 Feb 2023 23:37:09 +0100 Subject: [PATCH] chore: add custom page scroll track --- .../notification/NotificationPaginator.vue | 13 +++++++- components/timeline/TimelineMentions.vue | 2 +- components/timeline/TimelineNotifications.vue | 2 +- plugins/track-scroll-position.client.ts | 32 +++++++++++++------ 4 files changed, 36 insertions(+), 13 deletions(-) diff --git a/components/notification/NotificationPaginator.vue b/components/notification/NotificationPaginator.vue index 6f7a00e0..e65cd924 100644 --- a/components/notification/NotificationPaginator.vue +++ b/components/notification/NotificationPaginator.vue @@ -4,11 +4,14 @@ import { DynamicScrollerItem } from 'vue-virtual-scroller' import type { Paginator, WsEvents, mastodon } from 'masto' import type { GroupedAccountLike, NotificationSlot } from '~/types' -const { paginator, stream } = defineProps<{ +const { path, paginator, stream } = defineProps<{ + path: string paginator: Paginator stream?: Promise }>() +const nuxtApp = useNuxtApp() + const virtualScroller = false // TODO: fix flickering issue with virtual scroll const groupCapacity = Number.MAX_VALUE // No limit @@ -113,6 +116,10 @@ function groupItems(items: mastodon.v1.Notification[]): NotificationSlot[] { // Finalize remaining groups processGroup() + nextTick().then(() => { + nuxtApp.$trackScroll.restoreCustomPageScroll() + }) + return results } @@ -146,6 +153,10 @@ function preprocess(items: NotificationSlot[]): NotificationSlot[] { const { clearNotifications } = useNotifications() const { formatNumber } = useHumanReadableNumber() + +onMounted(() => { + nuxtApp.$trackScroll.registerCustomRoute(path) +})