about summary refs log tree commit diff
path: root/src/state/queries/feed.ts
diff options
context:
space:
mode:
authordan <dan.abramov@gmail.com>2024-06-24 21:34:42 +0100
committerGitHub <noreply@github.com>2024-06-24 21:34:42 +0100
commitf64245c1fb0b590edf1959ea0f30ec3bee507ad1 (patch)
tree6fe1846d14a18e59e3335f73e5b1753214b41b19 /src/state/queries/feed.ts
parent873d91d4664403577fff0438bfc81304f1fafe5b (diff)
downloadvoidsky-f64245c1fb0b590edf1959ea0f30ec3bee507ad1.tar.zst
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
Diffstat (limited to 'src/state/queries/feed.ts')
-rw-r--r--src/state/queries/feed.ts44
1 files changed, 28 insertions, 16 deletions
diff --git a/src/state/queries/feed.ts b/src/state/queries/feed.ts
index dea6f5d77..36555c181 100644
--- a/src/state/queries/feed.ts
+++ b/src/state/queries/feed.ts
@@ -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,
       }
     },
   })