Bluesky app fork with some witchin' additions 💫
0
fork

Configure Feed

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

Prefetch adjacent Home pages (#6904)

authored by

dan and committed by
GitHub
996871d8 2f10be2c

+10 -5
+4 -2
src/view/com/feeds/FeedPage.tsx
··· 32 32 export function FeedPage({ 33 33 testID, 34 34 isPageFocused, 35 + isPageAdjacent, 35 36 feed, 36 37 feedParams, 37 38 renderEmptyState, ··· 42 43 feed: FeedDescriptor 43 44 feedParams?: FeedParams 44 45 isPageFocused: boolean 46 + isPageAdjacent: boolean 45 47 renderEmptyState: () => JSX.Element 46 48 renderEndOfFeed?: () => JSX.Element 47 49 savedFeedConfig?: AppBskyActorDefs.SavedFeed ··· 111 113 <FeedFeedbackProvider value={feedFeedback}> 112 114 <Feed 113 115 testID={testID ? `${testID}-feed` : undefined} 114 - enabled={isPageFocused} 116 + enabled={isPageFocused || isPageAdjacent} 115 117 feed={feed} 116 118 feedParams={feedParams} 117 119 pollInterval={POLL_FREQ} 118 - disablePoll={hasNew} 120 + disablePoll={hasNew || !isPageFocused} 119 121 scrollElRef={scrollElRef} 120 122 onScrolledDownChange={setIsScrolledDown} 121 123 onHasNew={setHasNew}
+2 -2
src/view/com/posts/Feed.tsx
··· 216 216 checkForNewRef.current = checkForNew 217 217 }, [checkForNew]) 218 218 React.useEffect(() => { 219 - if (enabled) { 219 + if (enabled && !disablePoll) { 220 220 const timeSinceFirstLoad = Date.now() - lastFetchRef.current 221 221 // DISABLED need to check if this is causing random feed refreshes -prf 222 222 /*if (timeSinceFirstLoad > REFRESH_AFTER) { ··· 231 231 checkForNewRef.current() 232 232 } 233 233 } 234 - }, [enabled, feed, queryClient, scrollElRef]) 234 + }, [enabled, disablePoll, feed, queryClient, scrollElRef]) 235 235 React.useEffect(() => { 236 236 let cleanup1: () => void | undefined, cleanup2: () => void | undefined 237 237 const subscription = AppState.addEventListener('change', nextAppState => {
+4 -1
src/view/screens/Home.tsx
··· 233 233 onPageScrollStateChanged={onPageScrollStateChanged} 234 234 renderTabBar={renderTabBar}> 235 235 {pinnedFeedInfos.length ? ( 236 - pinnedFeedInfos.map(feedInfo => { 236 + pinnedFeedInfos.map((feedInfo, index) => { 237 237 const feed = feedInfo.feedDescriptor 238 238 if (feed === 'following') { 239 239 return ( ··· 241 241 key={feed} 242 242 testID="followingFeedPage" 243 243 isPageFocused={selectedFeed === feed} 244 + isPageAdjacent={Math.abs(selectedIndex - index) === 1} 244 245 feed={feed} 245 246 feedParams={homeFeedParams} 246 247 renderEmptyState={renderFollowingEmptyState} ··· 254 255 key={feed} 255 256 testID="customFeedPage" 256 257 isPageFocused={selectedFeed === feed} 258 + isPageAdjacent={Math.abs(selectedIndex - index) === 1} 257 259 feed={feed} 258 260 renderEmptyState={renderCustomFeedEmptyState} 259 261 savedFeedConfig={savedFeedConfig} ··· 273 275 <FeedPage 274 276 testID="customFeedPage" 275 277 isPageFocused 278 + isPageAdjacent={false} 276 279 feed={`feedgen|${PROD_DEFAULT_FEED('whats-hot')}`} 277 280 renderEmptyState={renderCustomFeedEmptyState} 278 281 />