diff options
Diffstat (limited to 'src/state/queries')
-rw-r--r-- | src/state/queries/actor-starter-packs.ts | 57 | ||||
-rw-r--r-- | src/state/queries/feed.ts | 31 | ||||
-rw-r--r-- | src/state/queries/handle-availability.ts | 7 | ||||
-rw-r--r-- | src/state/queries/messages/accept-conversation.ts | 7 | ||||
-rw-r--r-- | src/state/queries/messages/const.ts | 5 | ||||
-rw-r--r-- | src/state/queries/messages/conversation.ts | 8 | ||||
-rw-r--r-- | src/state/queries/messages/get-convo-availability.ts | 2 | ||||
-rw-r--r-- | src/state/queries/messages/get-convo-for-members.ts | 4 | ||||
-rw-r--r-- | src/state/queries/messages/leave-conversation.ts | 7 | ||||
-rw-r--r-- | src/state/queries/messages/list-conversations.tsx | 2 | ||||
-rw-r--r-- | src/state/queries/messages/mute-conversation.ts | 14 | ||||
-rw-r--r-- | src/state/queries/messages/update-all-read.ts | 4 | ||||
-rw-r--r-- | src/state/queries/service.ts | 5 | ||||
-rw-r--r-- | src/state/queries/trending/useGetSuggestedUsersQuery.ts | 9 |
14 files changed, 128 insertions, 34 deletions
diff --git a/src/state/queries/actor-starter-packs.ts b/src/state/queries/actor-starter-packs.ts index 670544dfe..d40e05453 100644 --- a/src/state/queries/actor-starter-packs.ts +++ b/src/state/queries/actor-starter-packs.ts @@ -1,15 +1,23 @@ -import {AppBskyGraphGetActorStarterPacks} from '@atproto/api' import { - InfiniteData, - QueryClient, - QueryKey, + type AppBskyGraphGetActorStarterPacks, + type AppBskyGraphGetStarterPacksWithMembership, +} from '@atproto/api' +import { + type InfiniteData, + type QueryClient, + type QueryKey, useInfiniteQuery, } from '@tanstack/react-query' import {useAgent} from '#/state/session' export const RQKEY_ROOT = 'actor-starter-packs' +export const RQKEY_WITH_MEMBERSHIP_ROOT = 'actor-starter-packs-with-membership' export const RQKEY = (did?: string) => [RQKEY_ROOT, did] +export const RQKEY_WITH_MEMBERSHIP = (did?: string) => [ + RQKEY_WITH_MEMBERSHIP_ROOT, + did, +] export function useActorStarterPacksQuery({ did, @@ -42,6 +50,37 @@ export function useActorStarterPacksQuery({ }) } +export function useActorStarterPacksWithMembershipsQuery({ + did, + enabled = true, +}: { + did?: string + enabled?: boolean +}) { + const agent = useAgent() + + return useInfiniteQuery< + AppBskyGraphGetStarterPacksWithMembership.OutputSchema, + Error, + InfiniteData<AppBskyGraphGetStarterPacksWithMembership.OutputSchema>, + QueryKey, + string | undefined + >({ + queryKey: RQKEY_WITH_MEMBERSHIP(did), + queryFn: async ({pageParam}: {pageParam?: string}) => { + const res = await agent.app.bsky.graph.getStarterPacksWithMembership({ + actor: did!, + limit: 10, + cursor: pageParam, + }) + return res.data + }, + enabled: Boolean(did) && enabled, + initialPageParam: undefined, + getNextPageParam: lastPage => lastPage.cursor, + }) +} + export async function invalidateActorStarterPacksQuery({ queryClient, did, @@ -51,3 +90,13 @@ export async function invalidateActorStarterPacksQuery({ }) { await queryClient.invalidateQueries({queryKey: RQKEY(did)}) } + +export async function invalidateActorStarterPacksWithMembershipQuery({ + queryClient, + did, +}: { + queryClient: QueryClient + did: string +}) { + await queryClient.invalidateQueries({queryKey: RQKEY_WITH_MEMBERSHIP(did)}) +} 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, diff --git a/src/state/queries/handle-availability.ts b/src/state/queries/handle-availability.ts index 9391f5d09..06fc6eebb 100644 --- a/src/state/queries/handle-availability.ts +++ b/src/state/queries/handle-availability.ts @@ -1,4 +1,4 @@ -import {Agent, ComAtprotoTempCheckHandleAvailability} from '@atproto/api' +import {ComAtprotoTempCheckHandleAvailability} from '@atproto/api' import {useQuery} from '@tanstack/react-query' import { @@ -10,6 +10,7 @@ import {createFullHandle} from '#/lib/strings/handles' import {logger} from '#/logger' import {useDebouncedValue} from '#/components/live/utils' import * as bsky from '#/types/bsky' +import {Agent} from '../session/agent' export const RQKEY_handleAvailability = ( handle: string, @@ -74,7 +75,7 @@ export async function checkHandleAvailability( }, ) { if (serviceDid === BSKY_SERVICE_DID) { - const agent = new Agent({service: BSKY_SERVICE}) + const agent = new Agent(null, {service: BSKY_SERVICE}) // entryway has a special API for handle availability const {data} = await agent.com.atproto.temp.checkHandleAvailability({ handle, @@ -109,7 +110,7 @@ export async function checkHandleAvailability( } } else { // 3rd party PDSes won't have this API so just try and resolve the handle - const agent = new Agent({service: PUBLIC_BSKY_SERVICE}) + const agent = new Agent(null, {service: PUBLIC_BSKY_SERVICE}) try { const res = await agent.resolveHandle({ handle, diff --git a/src/state/queries/messages/accept-conversation.ts b/src/state/queries/messages/accept-conversation.ts index 82acb33c8..0c06055b5 100644 --- a/src/state/queries/messages/accept-conversation.ts +++ b/src/state/queries/messages/accept-conversation.ts @@ -1,9 +1,12 @@ -import {ChatBskyConvoAcceptConvo, ChatBskyConvoListConvos} from '@atproto/api' +import { + type ChatBskyConvoAcceptConvo, + type ChatBskyConvoListConvos, +} from '@atproto/api' import {useMutation, useQueryClient} from '@tanstack/react-query' +import {DM_SERVICE_HEADERS} from '#/lib/constants' import {logger} from '#/logger' import {useAgent} from '#/state/session' -import {DM_SERVICE_HEADERS} from './const' import { RQKEY as CONVO_LIST_KEY, RQKEY_ROOT as CONVO_LIST_ROOT_KEY, diff --git a/src/state/queries/messages/const.ts b/src/state/queries/messages/const.ts deleted file mode 100644 index 1c5519a63..000000000 --- a/src/state/queries/messages/const.ts +++ /dev/null @@ -1,5 +0,0 @@ -import {CHAT_PROXY_DID} from '#/env' - -export const DM_SERVICE_HEADERS = { - 'atproto-proxy': `${CHAT_PROXY_DID}#bsky_chat`, -} diff --git a/src/state/queries/messages/conversation.ts b/src/state/queries/messages/conversation.ts index de5a90571..393bf9e52 100644 --- a/src/state/queries/messages/conversation.ts +++ b/src/state/queries/messages/conversation.ts @@ -1,17 +1,17 @@ -import {ChatBskyConvoDefs} from '@atproto/api' +import {type ChatBskyConvoDefs} from '@atproto/api' import { - QueryClient, + type QueryClient, useMutation, useQuery, useQueryClient, } from '@tanstack/react-query' +import {DM_SERVICE_HEADERS} from '#/lib/constants' import {STALE} from '#/state/queries' -import {DM_SERVICE_HEADERS} from '#/state/queries/messages/const' import {useOnMarkAsRead} from '#/state/queries/messages/list-conversations' import {useAgent} from '#/state/session' import { - ConvoListQueryData, + type ConvoListQueryData, getConvoFromQueryData, RQKEY_ROOT as LIST_CONVOS_KEY, } from './list-conversations' diff --git a/src/state/queries/messages/get-convo-availability.ts b/src/state/queries/messages/get-convo-availability.ts index f545c3bba..2392edb09 100644 --- a/src/state/queries/messages/get-convo-availability.ts +++ b/src/state/queries/messages/get-convo-availability.ts @@ -1,6 +1,6 @@ import {useQuery} from '@tanstack/react-query' -import {DM_SERVICE_HEADERS} from '#/state/queries/messages/const' +import {DM_SERVICE_HEADERS} from '#/lib/constants' import {useAgent} from '#/state/session' import {STALE} from '..' diff --git a/src/state/queries/messages/get-convo-for-members.ts b/src/state/queries/messages/get-convo-for-members.ts index 3f45c2328..58c1ab524 100644 --- a/src/state/queries/messages/get-convo-for-members.ts +++ b/src/state/queries/messages/get-convo-for-members.ts @@ -1,8 +1,8 @@ -import {ChatBskyConvoGetConvoForMembers} from '@atproto/api' +import {type ChatBskyConvoGetConvoForMembers} from '@atproto/api' import {useMutation, useQueryClient} from '@tanstack/react-query' +import {DM_SERVICE_HEADERS} from '#/lib/constants' import {logger} from '#/logger' -import {DM_SERVICE_HEADERS} from '#/state/queries/messages/const' import {useAgent} from '#/state/session' import {precacheConvoQuery} from './conversation' diff --git a/src/state/queries/messages/leave-conversation.ts b/src/state/queries/messages/leave-conversation.ts index b17e515be..986351a07 100644 --- a/src/state/queries/messages/leave-conversation.ts +++ b/src/state/queries/messages/leave-conversation.ts @@ -1,13 +1,16 @@ import {useMemo} from 'react' -import {ChatBskyConvoLeaveConvo, ChatBskyConvoListConvos} from '@atproto/api' +import { + type ChatBskyConvoLeaveConvo, + type ChatBskyConvoListConvos, +} from '@atproto/api' import { useMutation, useMutationState, useQueryClient, } from '@tanstack/react-query' +import {DM_SERVICE_HEADERS} from '#/lib/constants' import {logger} from '#/logger' -import {DM_SERVICE_HEADERS} from '#/state/queries/messages/const' import {useAgent} from '#/state/session' import {RQKEY_ROOT as CONVO_LIST_KEY} from './list-conversations' diff --git a/src/state/queries/messages/list-conversations.tsx b/src/state/queries/messages/list-conversations.tsx index 3f8252519..c5457d1cb 100644 --- a/src/state/queries/messages/list-conversations.tsx +++ b/src/state/queries/messages/list-conversations.tsx @@ -13,10 +13,10 @@ import { } from '@tanstack/react-query' import throttle from 'lodash.throttle' +import {DM_SERVICE_HEADERS} from '#/lib/constants' import {useCurrentConvoId} from '#/state/messages/current-convo-id' import {useMessagesEventBus} from '#/state/messages/events' import {useModerationOpts} from '#/state/preferences/moderation-opts' -import {DM_SERVICE_HEADERS} from '#/state/queries/messages/const' import {useAgent, useSession} from '#/state/session' import {useLeftConvos} from './leave-conversation' diff --git a/src/state/queries/messages/mute-conversation.ts b/src/state/queries/messages/mute-conversation.ts index da9644145..d668e36cb 100644 --- a/src/state/queries/messages/mute-conversation.ts +++ b/src/state/queries/messages/mute-conversation.ts @@ -1,11 +1,15 @@ import { - ChatBskyConvoDefs, - ChatBskyConvoListConvos, - ChatBskyConvoMuteConvo, + type ChatBskyConvoDefs, + type ChatBskyConvoListConvos, + type ChatBskyConvoMuteConvo, } from '@atproto/api' -import {InfiniteData, useMutation, useQueryClient} from '@tanstack/react-query' +import { + type InfiniteData, + useMutation, + useQueryClient, +} from '@tanstack/react-query' -import {DM_SERVICE_HEADERS} from '#/state/queries/messages/const' +import {DM_SERVICE_HEADERS} from '#/lib/constants' import {useAgent} from '#/state/session' import {RQKEY as CONVO_KEY} from './conversation' import {RQKEY_ROOT as CONVO_LIST_KEY} from './list-conversations' diff --git a/src/state/queries/messages/update-all-read.ts b/src/state/queries/messages/update-all-read.ts index 72fa65ee6..3d0fd3a45 100644 --- a/src/state/queries/messages/update-all-read.ts +++ b/src/state/queries/messages/update-all-read.ts @@ -1,8 +1,8 @@ -import {ChatBskyConvoListConvos} from '@atproto/api' +import {type ChatBskyConvoListConvos} from '@atproto/api' import {useMutation, useQueryClient} from '@tanstack/react-query' +import {DM_SERVICE_HEADERS} from '#/lib/constants' import {logger} from '#/logger' -import {DM_SERVICE_HEADERS} from '#/state/queries/messages/const' import {useAgent} from '#/state/session' import {RQKEY as CONVO_LIST_KEY} from './list-conversations' diff --git a/src/state/queries/service.ts b/src/state/queries/service.ts index 6bfd0b011..e9661db9e 100644 --- a/src/state/queries/service.ts +++ b/src/state/queries/service.ts @@ -1,6 +1,7 @@ -import {BskyAgent} from '@atproto/api' import {useQuery} from '@tanstack/react-query' +import {Agent} from '../session/agent' + const RQKEY_ROOT = 'service' export const RQKEY = (serviceUrl: string) => [RQKEY_ROOT, serviceUrl] @@ -8,7 +9,7 @@ export function useServiceQuery(serviceUrl: string) { return useQuery({ queryKey: RQKEY(serviceUrl), queryFn: async () => { - const agent = new BskyAgent({service: serviceUrl}) + const agent = new Agent(null, {service: serviceUrl}) const res = await agent.com.atproto.server.describeServer() return res.data }, diff --git a/src/state/queries/trending/useGetSuggestedUsersQuery.ts b/src/state/queries/trending/useGetSuggestedUsersQuery.ts index 05cc4d74d..898029398 100644 --- a/src/state/queries/trending/useGetSuggestedUsersQuery.ts +++ b/src/state/queries/trending/useGetSuggestedUsersQuery.ts @@ -17,6 +17,7 @@ export type QueryProps = { category?: string | null limit?: number enabled?: boolean + overrideInterests?: string[] } export const getSuggestedUsersQueryKeyRoot = 'unspecced-suggested-users' @@ -24,6 +25,7 @@ export const createGetSuggestedUsersQueryKey = (props: QueryProps) => [ getSuggestedUsersQueryKeyRoot, props.category, props.limit, + props.overrideInterests?.join(','), ] export function useGetSuggestedUsersQuery(props: QueryProps) { @@ -36,6 +38,7 @@ export function useGetSuggestedUsersQuery(props: QueryProps) { queryKey: createGetSuggestedUsersQueryKey(props), queryFn: async () => { const contentLangs = getContentLanguages().join(',') + const interests = aggregateUserInterests(preferences) const {data} = await agent.app.bsky.unspecced.getSuggestedUsers( { category: props.category ?? undefined, @@ -43,7 +46,11 @@ export function useGetSuggestedUsersQuery(props: QueryProps) { }, { headers: { - ...createBskyTopicsHeader(aggregateUserInterests(preferences)), + ...createBskyTopicsHeader( + props.overrideInterests && props.overrideInterests.length > 0 + ? props.overrideInterests.join(',') + : interests, + ), 'Accept-Language': contentLangs, }, }, |