Hopefully feature-complete Android Bluesky client written in Expo
atproto bluesky
3
fork

Configure Feed

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

Dedupe post roots on profile

Needs improvements as described here
https://bsky.app/profile/sharpmars.nekoweb.org/post/3mdvleizqrk2x

If 2 posts have the same root and are on the same level the older one
doesn't get shown

SharpMars 66226c5d 576f1220

+23
+23
src/app/(authenticated)/profile/[userId].tsx
··· 496 496 }, 497 497 getNextPageParam: (lastPage, allPages, lastPageParam, allPageParams) => lastPage.cursor, 498 498 getPreviousPageParam: (firstPage, allPages, firstPageParam, allPageParams) => firstPage.cursor, 499 + select: (data) => ({ 500 + pages: data.pages.map((currPage, pageIndex) => ({ 501 + ...currPage, 502 + feed: currPage.feed.filter((val, i, arr) => { 503 + const prevPageRootIndex = 504 + pageIndex === 0 505 + ? null 506 + : data.pages[pageIndex - 1].feed.findIndex( 507 + (val2) => 508 + val2.reply?.root.uri === val.post.uri || 509 + (val2.reply && val.reply && val2.reply?.root.uri === val.reply?.root.uri) 510 + ); 511 + const rootIndex = arr.findIndex( 512 + (val2) => 513 + val2.reply?.root.uri === val.post.uri || 514 + (val2.reply && val.reply && val2.reply?.root.uri === val.reply?.root.uri) 515 + ); 516 + 517 + if (prevPageRootIndex && prevPageRootIndex !== -1) return false; 518 + return rootIndex === -1 ? true : rootIndex === i; 519 + }), 520 + })), 521 + }), 499 522 }); 500 523 501 524 const [headerHeight, setHeaderHeight] = useState(0);