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.

Do the same for the profile

SharpMars 2783fd0a cb81c526

+22 -3
+22 -3
src/app/(authenticated)/(feed,profile,notifications,search)/profile/[userId]/index.tsx
··· 471 471 const selectedPage = useContext(CurrentPageContext); 472 472 const session = useOAuthSession(); 473 473 const cache = useInteractionCache(); 474 + 475 + const [isRefreshing, setIsRefreshing] = useState(false); 476 + const [feedEnabled, setFeedEnabled] = useState(false); 474 477 const feedQuery = useInfiniteQuery({ 475 - enabled: props.index === selectedPage, 478 + enabled: false, 476 479 queryKey: ["feed", props.userId, props.selectedFeed], 477 480 initialPageParam: "", 478 481 queryFn: async ({ signal, pageParam, queryKey }) => { ··· 550 553 }), 551 554 }); 552 555 556 + useEffect(() => { 557 + if (!feedEnabled && props.index === selectedPage) { 558 + setFeedEnabled(true); 559 + feedQuery.refetch(); 560 + } 561 + }, [feedEnabled, props.index, selectedPage, feedQuery]); 562 + 553 563 const [headerHeight, setHeaderHeight] = useState(0); 554 564 555 565 useAnimatedReaction( ··· 594 604 data={feedQuery.data.pages.flatMap((val) => val.feed)} 595 605 onEndReached={() => feedQuery.fetchNextPage()} 596 606 contentContainerStyle={{ gap: 8 }} 597 - refreshControl={<RefreshControl refreshing={feedQuery.isRefetching} progressViewOffset={headerHeight} />} 607 + refreshControl={ 608 + <RefreshControl 609 + refreshing={isRefreshing} 610 + progressViewOffset={headerHeight} 611 + onRefresh={async () => { 612 + setIsRefreshing(true); 613 + await feedQuery.refetch(); 614 + setIsRefreshing(false); 615 + }} 616 + /> 617 + } 598 618 ListFooterComponent={<View />} 599 619 ListFooterComponentStyle={{ height: 64 }} 600 - onRefresh={() => feedQuery.refetch()} 601 620 renderItem={({ item }) => <FeedPost feedPost={item} />} 602 621 /> 603 622 </View>