Bluesky app fork with some witchin' additions 💫
0
fork

Configure Feed

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

Fix crash when nothing is pinned (#7510)

authored by

dan and committed by
GitHub
2e8f2d58 fe9bb792

+21 -16
+21 -16
src/view/screens/Home.tsx
··· 15 15 import {isWeb} from '#/platform/detection' 16 16 import {emitSoftReset} from '#/state/events' 17 17 import {SavedFeedSourceInfo, usePinnedFeedsInfos} from '#/state/queries/feed' 18 - import {FeedParams} from '#/state/queries/post-feed' 18 + import {FeedDescriptor, FeedParams} from '#/state/queries/post-feed' 19 19 import {usePreferencesQuery} from '#/state/queries/preferences' 20 20 import {UsePreferencesQueryResponse} from '#/state/queries/preferences/types' 21 21 import {useSession} from '#/state/session' ··· 99 99 () => pinnedFeedInfos.map(f => f.feedDescriptor), 100 100 [pinnedFeedInfos], 101 101 ) 102 - const rawSelectedFeed = useSelectedFeed() ?? allFeeds[0] 102 + const maybeRawSelectedFeed: FeedDescriptor | undefined = 103 + useSelectedFeed() ?? allFeeds[0] 103 104 const setSelectedFeed = useSetSelectedFeed() 104 - const maybeFoundIndex = allFeeds.indexOf(rawSelectedFeed) 105 + const maybeFoundIndex = allFeeds.indexOf(maybeRawSelectedFeed) 105 106 const selectedIndex = Math.max(0, maybeFoundIndex) 106 - const selectedFeed = allFeeds[selectedIndex] 107 + const maybeSelectedFeed: FeedDescriptor | undefined = allFeeds[selectedIndex] 107 108 const requestNotificationsPermission = useRequestNotificationsPermission() 108 109 109 110 useSetTitle(pinnedFeedInfos[selectedIndex]?.displayName) ··· 135 136 136 137 useFocusEffect( 137 138 useNonReactiveCallback(() => { 138 - if (selectedFeed) { 139 + if (maybeSelectedFeed) { 139 140 logEvent('home:feedDisplayed', { 140 141 index: selectedIndex, 141 - feedType: selectedFeed.split('|')[0], 142 - feedUrl: selectedFeed, 142 + feedType: maybeSelectedFeed.split('|')[0], 143 + feedUrl: maybeSelectedFeed, 143 144 reason: 'focus', 144 145 }) 145 146 } ··· 149 150 const onPageSelected = React.useCallback( 150 151 (index: number) => { 151 152 setMinimalShellMode(false) 152 - const feed = allFeeds[index] 153 + const maybeFeed = allFeeds[index] 154 + 153 155 // Mutate the ref before setting state to avoid the imperative syncing effect 154 156 // above from starting a loop on Android when swiping back and forth. 155 157 lastPagerReportedIndexRef.current = index 156 - setSelectedFeed(feed) 157 - logEvent('home:feedDisplayed', { 158 - index, 159 - feedType: feed.split('|')[0], 160 - feedUrl: feed, 161 - }) 158 + setSelectedFeed(maybeFeed) 159 + 160 + if (maybeFeed) { 161 + logEvent('home:feedDisplayed', { 162 + index, 163 + feedType: maybeFeed.split('|')[0], 164 + feedUrl: maybeFeed, 165 + }) 166 + } 162 167 }, 163 168 [setSelectedFeed, setMinimalShellMode, allFeeds], 164 169 ) ··· 228 233 <FeedPage 229 234 key={feed} 230 235 testID="followingFeedPage" 231 - isPageFocused={selectedFeed === feed} 236 + isPageFocused={maybeSelectedFeed === feed} 232 237 isPageAdjacent={Math.abs(selectedIndex - index) === 1} 233 238 feed={feed} 234 239 feedParams={homeFeedParams} ··· 243 248 <FeedPage 244 249 key={feed} 245 250 testID="customFeedPage" 246 - isPageFocused={selectedFeed === feed} 251 + isPageFocused={maybeSelectedFeed === feed} 247 252 isPageAdjacent={Math.abs(selectedIndex - index) === 1} 248 253 feed={feed} 249 254 renderEmptyState={renderCustomFeedEmptyState}