shadow activity subs list

This commit is contained in:
Samuel Newman
2025-07-01 08:07:11 +03:00
parent 29c7ed6890
commit d51be0cd90
4 changed files with 51 additions and 23 deletions
@@ -11,6 +11,7 @@ import {
} from '#/lib/routes/types'
import {cleanError} from '#/lib/strings/errors'
import {logger} from '#/logger'
import {useProfileShadow} from '#/state/cache/profile-shadow'
import {useModerationOpts} from '#/state/preferences/moderation-opts'
import {useActivitySubscriptionsQuery} from '#/state/queries/activity-subscriptions'
import {useNotificationSettingsQuery} from '#/state/queries/notifications/settings'
@@ -193,12 +194,13 @@ function keyExtractor(item: bsky.profile.AnyProfileView) {
}
function ActivitySubscriptionCard({
profile,
profile: profileUnshadowed,
moderationOpts,
}: {
profile: bsky.profile.AnyProfileView
moderationOpts: ModerationOpts
}) {
const profile = useProfileShadow(profileUnshadowed)
const control = useDialogControl()
const {_} = useLingui()
const t = useTheme()
+4 -2
View File
@@ -4,6 +4,7 @@ import {type QueryClient} from '@tanstack/react-query'
import EventEmitter from 'eventemitter3'
import {batchedUpdates} from '#/lib/batchedUpdates'
import {findAllProfilesInQueryData as findAllProfilesInActivitySubscriptionsQueryData} from '#/state/queries/activity-subscriptions'
import {findAllProfilesInQueryData as findAllProfilesInActorSearchQueryData} from '#/state/queries/actor-search'
import {findAllProfilesInQueryData as findAllProfilesInExploreFeedPreviewsQueryData} from '#/state/queries/explore-feed-previews'
import {findAllProfilesInQueryData as findAllProfilesInKnownFollowersQueryData} from '#/state/queries/known-followers'
@@ -115,8 +116,8 @@ export function updateProfileShadow(
value: Partial<ProfileShadow>,
) {
const cachedProfiles = findProfilesInCache(queryClient, did)
for (let post of cachedProfiles) {
shadows.set(post, {...shadows.get(post), ...value})
for (let profile of cachedProfiles) {
shadows.set(profile, {...shadows.get(profile), ...value})
}
batchedUpdates(() => {
emitter.emit(did, value)
@@ -176,4 +177,5 @@ function* findProfilesInCache(
yield* findAllProfilesInPostThreadV2QueryData(queryClient, did)
yield* findAllProfilesInKnownFollowersQueryData(queryClient, did)
yield* findAllProfilesInExploreFeedPreviewsQueryData(queryClient, did)
yield* findAllProfilesInActivitySubscriptionsQueryData(queryClient, did)
}
+30 -1
View File
@@ -1,6 +1,12 @@
import {type AppBskyNotificationDeclaration} from '@atproto/api'
import {
type AppBskyActorDefs,
type AppBskyNotificationDeclaration,
type AppBskyNotificationListActivitySubscriptions,
} from '@atproto/api'
import {t} from '@lingui/macro'
import {
type InfiniteData,
type QueryClient,
useInfiniteQuery,
useMutation,
useQuery,
@@ -99,3 +105,26 @@ export function useNotificationDeclarationMutation() {
},
})
}
export function* findAllProfilesInQueryData(
queryClient: QueryClient,
did: string,
): Generator<AppBskyActorDefs.ProfileView, void> {
const queryDatas = queryClient.getQueriesData<
InfiniteData<AppBskyNotificationListActivitySubscriptions.OutputSchema>
>({
queryKey: RQKEY_getActivitySubscriptions,
})
for (const [_queryKey, queryData] of queryDatas) {
if (!queryData?.pages) {
continue
}
for (const page of queryData.pages) {
for (const subscription of page.subscriptions) {
if (subscription.did === did) {
yield subscription
}
}
}
}
}
+7 -12
View File
@@ -1,13 +1,13 @@
import {
AppBskyActorDefs,
AppBskyGraphDefs,
AppBskyGraphGetList,
BskyAgent,
type AppBskyActorDefs,
type AppBskyGraphDefs,
type AppBskyGraphGetList,
type BskyAgent,
} from '@atproto/api'
import {
InfiniteData,
QueryClient,
QueryKey,
type InfiniteData,
type QueryClient,
type QueryKey,
useInfiniteQuery,
useQuery,
} from '@tanstack/react-query'
@@ -99,10 +99,6 @@ export function* findAllProfilesInQueryData(
>({
queryKey: [RQKEY_ROOT],
})
for (const [_queryKey, queryData] of queryDatas) {
if (!queryData) {
continue
}
for (const [_queryKey, queryData] of queryDatas) {
if (!queryData?.pages) {
continue
@@ -118,7 +114,6 @@ export function* findAllProfilesInQueryData(
}
}
}
}
const allQueryData = queryClient.getQueriesData<
AppBskyGraphDefs.ListItemView[]