forked from Mirrors/elk
chore: move path to page when using notification paginator
This commit is contained in:
parent
26883d6d19
commit
5acd2224df
6 changed files with 25 additions and 15 deletions
|
@ -116,9 +116,7 @@ function groupItems(items: mastodon.v1.Notification[]): NotificationSlot[] {
|
|||
// Finalize remaining groups
|
||||
processGroup()
|
||||
|
||||
nextTick().then(() => {
|
||||
nuxtApp.$trackScroll.restoreCustomPageScroll()
|
||||
})
|
||||
|
||||
return results
|
||||
}
|
||||
|
@ -153,10 +151,6 @@ function preprocess(items: NotificationSlot[]): NotificationSlot[] {
|
|||
|
||||
const { clearNotifications } = useNotifications()
|
||||
const { formatNumber } = useHumanReadableNumber()
|
||||
|
||||
onMounted(() => {
|
||||
nuxtApp.$trackScroll.registerCustomRoute(path)
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script setup lang="ts">
|
||||
defineProps<{ path: string }>()
|
||||
// Default limit is 20 notifications, and servers are normally caped to 30
|
||||
const paginator = useMastoClient().v1.notifications.list({ limit: 30, types: ['mention'] })
|
||||
const stream = $(useStreaming(client => client.v1.stream.streamUser()))
|
||||
|
@ -8,5 +9,5 @@ onActivated(clearNotifications)
|
|||
</script>
|
||||
|
||||
<template>
|
||||
<NotificationPaginator v-bind="{ path: '/notification/mention', paginator, stream }" />
|
||||
<NotificationPaginator v-bind="{ path, paginator, stream }" />
|
||||
</template>
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
<script setup lang="ts">
|
||||
defineProps<{ path: string }>()
|
||||
|
||||
// Default limit is 20 notifications, and servers are normally caped to 30
|
||||
const paginator = useMastoClient().v1.notifications.list({ limit: 30 })
|
||||
const stream = useStreaming(client => client.v1.stream.streamUser())
|
||||
|
@ -8,5 +10,5 @@ onActivated(clearNotifications)
|
|||
</script>
|
||||
|
||||
<template>
|
||||
<NotificationPaginator v-bind="{ path: '/notification', paginator, stream }" />
|
||||
<NotificationPaginator v-bind="{ path, paginator, stream }" />
|
||||
</template>
|
||||
|
|
|
@ -3,8 +3,11 @@ const { t } = useI18n()
|
|||
useHeadFixed({
|
||||
title: () => `${t('tab.notifications_all')} | ${t('nav.notifications')}`,
|
||||
})
|
||||
onMounted(() => {
|
||||
useNuxtApp().$trackScroll.registerCustomRoute('/notifications')
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<TimelineNotifications v-if="isHydrated" />
|
||||
<TimelineNotifications v-if="isHydrated" path="/notifications" />
|
||||
</template>
|
||||
|
|
|
@ -3,8 +3,12 @@ const { t } = useI18n()
|
|||
useHeadFixed({
|
||||
title: () => `${t('tab.notifications_mention')} | ${t('nav.notifications')}`,
|
||||
})
|
||||
|
||||
onMounted(() => {
|
||||
useNuxtApp().$trackScroll.registerCustomRoute('/notification/mention')
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<TimelineMentions v-if="isHydrated" />
|
||||
<TimelineMentions v-if="isHydrated" path="/notifications/mention" />
|
||||
</template>
|
||||
|
|
|
@ -13,7 +13,7 @@ export default defineNuxtPlugin((nuxtApp) => {
|
|||
track.value = true
|
||||
})
|
||||
|
||||
const forceScroll = () => {
|
||||
const forceScrollToTop = () => {
|
||||
storage.value[route.fullPath] = 0
|
||||
window.scrollTo({ top: 0, left: 0, behavior: 'smooth' })
|
||||
}
|
||||
|
@ -22,7 +22,7 @@ export default defineNuxtPlugin((nuxtApp) => {
|
|||
const path = route.fullPath
|
||||
return nextTick().then(() => {
|
||||
if (route.meta?.noScrollTrack) {
|
||||
forceScroll()
|
||||
forceScrollToTop()
|
||||
return Promise.resolve()
|
||||
}
|
||||
|
||||
|
@ -43,6 +43,13 @@ export default defineNuxtPlugin((nuxtApp) => {
|
|||
if (scrollPosition)
|
||||
window.scrollTo(0, scrollPosition)
|
||||
|
||||
// required for custom routes: first call will reject
|
||||
if (!track.value) {
|
||||
nextTick().then(() => {
|
||||
track.value = true
|
||||
})
|
||||
}
|
||||
|
||||
resolve()
|
||||
}, 600)
|
||||
})
|
||||
|
@ -76,9 +83,8 @@ export default defineNuxtPlugin((nuxtApp) => {
|
|||
return {
|
||||
provide: {
|
||||
trackScroll: reactive({
|
||||
forceScroll,
|
||||
forceScrollToTop,
|
||||
restoreScroll,
|
||||
track,
|
||||
registerCustomRoute,
|
||||
restoreCustomPageScroll,
|
||||
}),
|
||||
|
|
Loading…
Reference in a new issue