Bluesky app fork with some witchin' additions 💫
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Go back to content-driven slice keys in feeds (#2190)

* Go back to deterministic react keys

* Quick fix to cases when custom feeds serve empty responses

authored by

Paul Frazee and committed by
GitHub
870505cb 90647fe7

+11 -11
+10 -10
src/lib/api/feed-manip.ts
··· 14 14 ) => FeedViewPostsSlice[] 15 15 16 16 export class FeedViewPostsSlice { 17 + _reactKey: string 17 18 isFlattenedReply = false 18 19 19 - constructor(public items: FeedViewPost[], public _reactKey: string) {} 20 + constructor(public items: FeedViewPost[]) { 21 + const item = items[0] 22 + this._reactKey = `slice-${item.post.uri}-${ 23 + item.reason?.indexedAt || item.post.indexedAt 24 + }` 25 + } 20 26 21 27 get uri() { 22 28 if (this.isFlattenedReply) { ··· 120 126 feed: FeedViewPost[], 121 127 _opts?: {dryRun: boolean; maintainOrder: boolean}, 122 128 ): FeedViewPostsSlice[] { 123 - return feed.map( 124 - item => new FeedViewPostsSlice([item], `slice-${this.keyCounter++}`), 125 - ) 129 + return feed.map(item => new FeedViewPostsSlice([item])) 126 130 } 127 131 } 128 132 ··· 160 164 }) 161 165 162 166 if (maintainOrder) { 163 - slices = feed.map( 164 - item => new FeedViewPostsSlice([item], `slice-${this.keyCounter++}`), 165 - ) 167 + slices = feed.map(item => new FeedViewPostsSlice([item])) 166 168 } else { 167 169 // arrange the posts into thread slices 168 170 for (let i = feed.length - 1; i >= 0; i--) { ··· 178 180 continue 179 181 } 180 182 } 181 - slices.unshift( 182 - new FeedViewPostsSlice([item], `slice-${this.keyCounter++}`), 183 - ) 183 + slices.unshift(new FeedViewPostsSlice([item])) 184 184 } 185 185 } 186 186
+1 -1
src/lib/api/feed/custom.ts
··· 37 37 res.data.feed = res.data.feed.slice(0, limit) 38 38 } 39 39 return { 40 - cursor: res.data.cursor, 40 + cursor: res.data.feed.length ? res.data.cursor : undefined, 41 41 feed: res.data.feed, 42 42 } 43 43 }