Hoist moderation, attempt to fill feed up to 30 (#2134)

* Move moderatePost up to feed query

* Attemt to fill page up to 30

* Add the 'ensure full page' behavior to notifs

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
This commit is contained in:
Eric Bailey 2023-12-07 15:44:22 -06:00 committed by GitHub
parent 940fc0ea5c
commit 174a1622c9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 112 additions and 83 deletions

View file

@ -16,6 +16,7 @@
* 3. Don't call this query's `refetch()` if you're trying to sync latest; call `checkUnread()` instead.
*/
import {useEffect} from 'react'
import {AppBskyFeedDefs} from '@atproto/api'
import {
useInfiniteQuery,
@ -49,7 +50,7 @@ export function useNotificationFeedQuery(opts?: {enabled?: boolean}) {
const unreads = useUnreadNotificationsApi()
const enabled = opts?.enabled !== false
return useInfiniteQuery<
const query = useInfiniteQuery<
FeedPage,
Error,
InfiniteData<FeedPage>,
@ -85,6 +86,21 @@ export function useNotificationFeedQuery(opts?: {enabled?: boolean}) {
getNextPageParam: lastPage => lastPage.cursor,
enabled,
})
useEffect(() => {
const {isFetching, hasNextPage, data} = query
let count = 0
for (const page of data?.pages || []) {
count += page.items.length
}
if (!isFetching && hasNextPage && count < PAGE_SIZE) {
query.fetchNextPage()
}
}, [query])
return query
}
/**