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
zio/stable
dan 2024-06-24 21:34:42 +01:00 committed by GitHub
parent 873d91d466
commit f64245c1fb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 31 additions and 23 deletions

View File

@ -41,13 +41,9 @@ export function StepFeeds({moderationOpts}: {moderationOpts: ModerationOpts}) {
limit: 30,
})
const popularFeeds = popularFeedsPages?.pages.flatMap(p => p.feeds) ?? []
const suggestedFeeds =
savedFeeds.length === 0
? popularFeeds
: savedFeeds.concat(
popularFeeds.filter(f => !savedFeeds.some(sf => sf.uri === f.uri)),
)
const suggestedFeeds = savedFeeds.concat(
popularFeeds.filter(f => !savedFeeds.some(sf => sf.uri === f.uri)),
)
const {data: searchedFeeds, isLoading: isLoadingSearch} =
useSearchPopularFeedsQuery({q: throttledQuery})

View File

@ -509,6 +509,7 @@ export function useSavedFeeds() {
placeholderData: previousData => {
return (
previousData || {
// The likely count before we try to resolve them.
count: savedItems.length,
feeds: [],
}
@ -556,28 +557,39 @@ export function useSavedFeeds() {
precacheList(queryClient, list)
})
const res: SavedFeedItem[] = savedItems.map(s => {
if (s.type === 'timeline') {
return {
const result: SavedFeedItem[] = []
for (let savedItem of savedItems) {
if (savedItem.type === 'timeline') {
result.push({
type: 'timeline',
config: s,
config: savedItem,
view: undefined,
})
} else if (savedItem.type === 'feed') {
const resolvedFeed = resolvedFeeds.get(savedItem.value)
if (resolvedFeed) {
result.push({
type: 'feed',
config: savedItem,
view: resolvedFeed,
})
}
} else if (savedItem.type === 'list') {
const resolvedList = resolvedLists.get(savedItem.value)
if (resolvedList) {
result.push({
type: 'list',
config: savedItem,
view: resolvedList,
})
}
}
return {
type: s.type,
config: s,
view:
s.type === 'feed'
? resolvedFeeds.get(s.value)
: resolvedLists.get(s.value),
}
}) as SavedFeedItem[]
}
return {
count: savedItems.length,
feeds: res,
// By this point we know the real count.
count: result.length,
feeds: result,
}
},
})