Fix notification->post jump for real (#5314)
* Revert "Fix notification scroll jump (#5297)"
This reverts commit e0d9e75407
.
* Query notifications first
zio/dev^2
parent
0315814edd
commit
1dc7ef137c
|
@ -175,19 +175,9 @@ async function fetchSubjects(
|
||||||
}> {
|
}> {
|
||||||
const postUris = new Set<string>()
|
const postUris = new Set<string>()
|
||||||
const packUris = new Set<string>()
|
const packUris = new Set<string>()
|
||||||
|
|
||||||
const postUrisWithLikes = new Set<string>()
|
|
||||||
const postUrisWithReposts = new Set<string>()
|
|
||||||
|
|
||||||
for (const notif of groupedNotifs) {
|
for (const notif of groupedNotifs) {
|
||||||
if (notif.subjectUri?.includes('app.bsky.feed.post')) {
|
if (notif.subjectUri?.includes('app.bsky.feed.post')) {
|
||||||
postUris.add(notif.subjectUri)
|
postUris.add(notif.subjectUri)
|
||||||
if (notif.type === 'post-like') {
|
|
||||||
postUrisWithLikes.add(notif.subjectUri)
|
|
||||||
}
|
|
||||||
if (notif.type === 'repost') {
|
|
||||||
postUrisWithReposts.add(notif.subjectUri)
|
|
||||||
}
|
|
||||||
} else if (
|
} else if (
|
||||||
notif.notification.reasonSubject?.includes('app.bsky.graph.starterpack')
|
notif.notification.reasonSubject?.includes('app.bsky.graph.starterpack')
|
||||||
) {
|
) {
|
||||||
|
@ -216,15 +206,6 @@ async function fetchSubjects(
|
||||||
AppBskyFeedPost.validateRecord(post.record).success
|
AppBskyFeedPost.validateRecord(post.record).success
|
||||||
) {
|
) {
|
||||||
postsMap.set(post.uri, post)
|
postsMap.set(post.uri, post)
|
||||||
|
|
||||||
// HACK. In some cases, the appview appears to lag behind and returns empty counters.
|
|
||||||
// To prevent scroll jump due to missing metrics, fill in 1 like/repost instead of 0.
|
|
||||||
if (post.likeCount === 0 && postUrisWithLikes.has(post.uri)) {
|
|
||||||
post.likeCount = 1
|
|
||||||
}
|
|
||||||
if (post.repostCount === 0 && postUrisWithReposts.has(post.uri)) {
|
|
||||||
post.repostCount = 1
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (const pack of packsChunks.flat()) {
|
for (const pack of packsChunks.flat()) {
|
||||||
|
|
|
@ -408,10 +408,14 @@ export function* findAllPostsInQueryData(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (let post of findAllPostsInFeedQueryData(queryClient, uri)) {
|
for (let post of findAllPostsInNotifsQueryData(queryClient, uri)) {
|
||||||
|
// Check notifications first. If you have a post in notifications,
|
||||||
|
// it's often due to a like or a repost, and we want to prioritize
|
||||||
|
// a post object with >0 likes/reposts over a stale version with no
|
||||||
|
// metrics in order to avoid a notification->post scroll jump.
|
||||||
yield postViewToPlaceholderThread(post)
|
yield postViewToPlaceholderThread(post)
|
||||||
}
|
}
|
||||||
for (let post of findAllPostsInNotifsQueryData(queryClient, uri)) {
|
for (let post of findAllPostsInFeedQueryData(queryClient, uri)) {
|
||||||
yield postViewToPlaceholderThread(post)
|
yield postViewToPlaceholderThread(post)
|
||||||
}
|
}
|
||||||
for (let post of findAllPostsInQuoteQueryData(queryClient, uri)) {
|
for (let post of findAllPostsInQuoteQueryData(queryClient, uri)) {
|
||||||
|
|
Loading…
Reference in New Issue