Skip to content

Commit

Permalink
Fix notification->post jump for real (#5314)
Browse files Browse the repository at this point in the history
* Revert "Fix notification scroll jump (#5297)"

This reverts commit e0d9e75.

* Query notifications first
  • Loading branch information
gaearon authored Sep 13, 2024
1 parent 0315814 commit 1dc7ef1
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 21 deletions.
19 changes: 0 additions & 19 deletions src/state/queries/notifications/util.ts
Original file line number Diff line number Diff line change
Expand Up @@ -175,19 +175,9 @@ async function fetchSubjects(
}> {
const postUris = new Set<string>()
const packUris = new Set<string>()

const postUrisWithLikes = new Set<string>()
const postUrisWithReposts = new Set<string>()

for (const notif of groupedNotifs) {
if (notif.subjectUri?.includes('app.bsky.feed.post')) {
postUris.add(notif.subjectUri)
if (notif.type === 'post-like') {
postUrisWithLikes.add(notif.subjectUri)
}
if (notif.type === 'repost') {
postUrisWithReposts.add(notif.subjectUri)
}
} else if (
notif.notification.reasonSubject?.includes('app.bsky.graph.starterpack')
) {
Expand Down Expand Up @@ -216,15 +206,6 @@ async function fetchSubjects(
AppBskyFeedPost.validateRecord(post.record).success
) {
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()) {
Expand Down
8 changes: 6 additions & 2 deletions src/state/queries/post-thread.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
for (let post of findAllPostsInNotifsQueryData(queryClient, uri)) {
for (let post of findAllPostsInFeedQueryData(queryClient, uri)) {
yield postViewToPlaceholderThread(post)
}
for (let post of findAllPostsInQuoteQueryData(queryClient, uri)) {
Expand Down

0 comments on commit 1dc7ef1

Please sign in to comment.