···88import EventEmitter from 'eventemitter3'
991010import {batchedUpdates} from '#/lib/batchedUpdates'
1111+import {findAllPostsInQueryData as findAllPostsInBookmarksQueryData} from '#/state/queries/bookmarks/useBookmarksQuery'
1112import {findAllPostsInQueryData as findAllPostsInExploreFeedPreviewsQueryData} from '#/state/queries/explore-feed-previews'
1213import {findAllPostsInQueryData as findAllPostsInNotifsQueryData} from '#/state/queries/notifications/feed'
1314import {findAllPostsInQueryData as findAllPostsInFeedQueryData} from '#/state/queries/post-feed'
···188189 queryClient,
189190 uri,
190191 )) {
192192+ yield post
193193+ }
194194+ for (let post of findAllPostsInBookmarksQueryData(queryClient, uri)) {
191195 yield post
192196 }
193197}
+46-1
src/state/queries/bookmarks/useBookmarksQuery.ts
···11import {
22 type $Typed,
33 type AppBskyBookmarkGetBookmarks,
44- type AppBskyFeedDefs,
44+ AppBskyFeedDefs,
55+ AtUri,
56} from '@atproto/api'
67import {
78 type InfiniteData,
···1011 useInfiniteQuery,
1112} from '@tanstack/react-query'
12131414+import {
1515+ didOrHandleUriMatches,
1616+ embedViewRecordToPostView,
1717+ getEmbeddedPost,
1818+} from '#/state/queries/util'
1319import {useAgent} from '#/state/session'
2020+import * as bsky from '#/types/bsky'
14211522export const bookmarksQueryKeyRoot = 'bookmarks'
1623export const createBookmarksQueryKey = () => [bookmarksQueryKeyRoot]
···112119 },
113120 )
114121}
122122+123123+export function* findAllPostsInQueryData(
124124+ queryClient: QueryClient,
125125+ uri: string,
126126+): Generator<AppBskyFeedDefs.PostView, undefined> {
127127+ const queryDatas = queryClient.getQueriesData<
128128+ InfiniteData<AppBskyBookmarkGetBookmarks.OutputSchema>
129129+ >({
130130+ queryKey: [bookmarksQueryKeyRoot],
131131+ })
132132+ const atUri = new AtUri(uri)
133133+134134+ for (const [_queryKey, queryData] of queryDatas) {
135135+ if (!queryData?.pages) {
136136+ continue
137137+ }
138138+ for (const page of queryData?.pages) {
139139+ for (const bookmark of page.bookmarks) {
140140+ if (
141141+ !bsky.dangerousIsType<AppBskyFeedDefs.PostView>(
142142+ bookmark.item,
143143+ AppBskyFeedDefs.isPostView,
144144+ )
145145+ )
146146+ continue
147147+148148+ if (didOrHandleUriMatches(atUri, bookmark.item)) {
149149+ yield bookmark.item
150150+ }
151151+152152+ const quotedPost = getEmbeddedPost(bookmark.item.embed)
153153+ if (quotedPost && didOrHandleUriMatches(atUri, quotedPost)) {
154154+ yield embedViewRecordToPostView(quotedPost)
155155+ }
156156+ }
157157+ }
158158+ }
159159+}