diff options
author | kindgracekind <155408223+kindgracekind@users.noreply.github.com> | 2025-08-26 14:16:50 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-08-26 12:16:50 -0700 |
commit | 88e6dff484634b6d2ec9edb7caf6642cf4ebeb3d (patch) | |
tree | 86980d3e7dbc8a1f43b98fdab5cf59b3e2f4bd12 /src/state/queries/feed.ts | |
parent | 98d96bd28ba62e7cc6d4be39e4f1f146105cdccc (diff) | |
download | voidsky-88e6dff484634b6d2ec9edb7caf6642cf4ebeb3d.tar.zst |
Enable show less / more buttons for third party feeds (#8672)
Co-authored-by: hailey <hailey@blueskyweb.xyz> Co-authored-by: Hailey <me@haileyok.com>
Diffstat (limited to 'src/state/queries/feed.ts')
-rw-r--r-- | src/state/queries/feed.ts | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/state/queries/feed.ts b/src/state/queries/feed.ts index 89023e513..e6e3e82fb 100644 --- a/src/state/queries/feed.ts +++ b/src/state/queries/feed.ts @@ -48,6 +48,7 @@ export type FeedSourceFeedInfo = { creatorDid: string creatorHandle: string likeCount: number | undefined + acceptsInteractions?: boolean likeUri: string | undefined contentMode: AppBskyFeedDefs.GeneratorView['contentMode'] } @@ -73,6 +74,12 @@ export type FeedSourceListInfo = { export type FeedSourceInfo = FeedSourceFeedInfo | FeedSourceListInfo +export function isFeedSourceFeedInfo( + feed: FeedSourceInfo, +): feed is FeedSourceFeedInfo { + return feed.type === 'feed' +} + const feedSourceInfoQueryKeyRoot = 'getFeedSourceInfo' export const feedSourceInfoQueryKey = ({uri}: {uri: string}) => [ feedSourceInfoQueryKeyRoot, @@ -115,6 +122,7 @@ export function hydrateFeedGenerator( creatorDid: view.creator.did, creatorHandle: view.creator.handle, likeCount: view.likeCount, + acceptsInteractions: view.acceptsInteractions, likeUri: view.viewer?.like, contentMode: view.contentMode, } @@ -619,6 +627,29 @@ export function useSavedFeeds() { }) } +const feedInfoQueryKeyRoot = 'feedInfo' + +export function useFeedInfo(feedUri: string | undefined) { + const agent = useAgent() + + return useQuery({ + staleTime: STALE.INFINITY, + queryKey: [feedInfoQueryKeyRoot, feedUri], + queryFn: async () => { + if (!feedUri) { + return undefined + } + + const res = await agent.app.bsky.feed.getFeedGenerator({ + feed: feedUri, + }) + + const feedSourceInfo = hydrateFeedGenerator(res.data.view) + return feedSourceInfo + }, + }) +} + function precacheFeed(queryClient: QueryClient, hydratedFeed: FeedSourceInfo) { precacheResolvedUri( queryClient, |