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 in Feeds and Starter Packs (#4616)

* Remove useless check

* Fix the bug by only adding resolved feeds/lists

* Clarify the purpose of the count field

authored by

dan and committed by
GitHub
f64245c1 873d91d4

+31 -23
+3 -7
src/screens/StarterPack/Wizard/StepFeeds.tsx
··· 41 41 limit: 30, 42 42 }) 43 43 const popularFeeds = popularFeedsPages?.pages.flatMap(p => p.feeds) ?? [] 44 - 45 - const suggestedFeeds = 46 - savedFeeds.length === 0 47 - ? popularFeeds 48 - : savedFeeds.concat( 49 - popularFeeds.filter(f => !savedFeeds.some(sf => sf.uri === f.uri)), 50 - ) 44 + const suggestedFeeds = savedFeeds.concat( 45 + popularFeeds.filter(f => !savedFeeds.some(sf => sf.uri === f.uri)), 46 + ) 51 47 52 48 const {data: searchedFeeds, isLoading: isLoadingSearch} = 53 49 useSearchPopularFeedsQuery({q: throttledQuery})
+28 -16
src/state/queries/feed.ts
··· 509 509 placeholderData: previousData => { 510 510 return ( 511 511 previousData || { 512 + // The likely count before we try to resolve them. 512 513 count: savedItems.length, 513 514 feeds: [], 514 515 } ··· 556 557 precacheList(queryClient, list) 557 558 }) 558 559 559 - const res: SavedFeedItem[] = savedItems.map(s => { 560 - if (s.type === 'timeline') { 561 - return { 560 + const result: SavedFeedItem[] = [] 561 + for (let savedItem of savedItems) { 562 + if (savedItem.type === 'timeline') { 563 + result.push({ 562 564 type: 'timeline', 563 - config: s, 565 + config: savedItem, 564 566 view: undefined, 567 + }) 568 + } else if (savedItem.type === 'feed') { 569 + const resolvedFeed = resolvedFeeds.get(savedItem.value) 570 + if (resolvedFeed) { 571 + result.push({ 572 + type: 'feed', 573 + config: savedItem, 574 + view: resolvedFeed, 575 + }) 576 + } 577 + } else if (savedItem.type === 'list') { 578 + const resolvedList = resolvedLists.get(savedItem.value) 579 + if (resolvedList) { 580 + result.push({ 581 + type: 'list', 582 + config: savedItem, 583 + view: resolvedList, 584 + }) 565 585 } 566 586 } 567 - 568 - return { 569 - type: s.type, 570 - config: s, 571 - view: 572 - s.type === 'feed' 573 - ? resolvedFeeds.get(s.value) 574 - : resolvedLists.get(s.value), 575 - } 576 - }) as SavedFeedItem[] 587 + } 577 588 578 589 return { 579 - count: savedItems.length, 580 - feeds: res, 590 + // By this point we know the real count. 591 + count: result.length, 592 + feeds: result, 581 593 } 582 594 }, 583 595 })