migrate the activity subscription queries to the appview client

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Samuel Newman
2026-08-03 19:32:48 +03:00
parent f2a1a6ceb9
commit 0bf2ada0c6
2 changed files with 16 additions and 15 deletions
@@ -2,10 +2,10 @@ import {useMemo, useState} from 'react'
import {View} from 'react-native' import {View} from 'react-native'
import { import {
type AppBskyNotificationDefs, type AppBskyNotificationDefs,
type AppBskyNotificationListActivitySubscriptions,
type ModerationOpts, type ModerationOpts,
type Un$Typed, type Un$Typed,
} from '@atproto/api' } from '@atproto/api'
import {type DidString} from '@atproto/syntax'
import {msg} from '@lingui/core/macro' import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {Trans} from '@lingui/react/macro' import {Trans} from '@lingui/react/macro'
@@ -20,7 +20,7 @@ import {cleanError} from '#/lib/strings/errors'
import {sanitizeHandle} from '#/lib/strings/handles' import {sanitizeHandle} from '#/lib/strings/handles'
import {updateProfileShadow} from '#/state/cache/profile-shadow' import {updateProfileShadow} from '#/state/cache/profile-shadow'
import {RQKEY_getActivitySubscriptions} from '#/state/queries/activity-subscriptions' import {RQKEY_getActivitySubscriptions} from '#/state/queries/activity-subscriptions'
import {useAgent} from '#/state/session' import {useAppviewClient} from '#/state/session'
import {atoms as a, platform, useTheme, web} from '#/alf' import {atoms as a, platform, useTheme, web} from '#/alf'
import {Admonition} from '#/components/Admonition' import {Admonition} from '#/components/Admonition'
import { import {
@@ -37,6 +37,7 @@ import * as Toast from '#/components/Toast'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
import {useAnalytics} from '#/analytics' import {useAnalytics} from '#/analytics'
import {IS_WEB} from '#/env' import {IS_WEB} from '#/env'
import {app} from '#/lexicons'
import type * as bsky from '#/types/bsky' import type * as bsky from '#/types/bsky'
export function SubscribeProfileDialog({ export function SubscribeProfileDialog({
@@ -74,7 +75,7 @@ function DialogInner({
const ax = useAnalytics() const ax = useAnalytics()
const {_} = useLingui() const {_} = useLingui()
const t = useTheme() const t = useTheme()
const agent = useAgent() const client = useAppviewClient()
const control = Dialog.useDialogContext() const control = Dialog.useDialogContext()
const queryClient = useQueryClient() const queryClient = useQueryClient()
const initialState = parseActivitySubscription( const initialState = parseActivitySubscription(
@@ -122,8 +123,9 @@ function DialogInner({
mutationFn: async ( mutationFn: async (
activitySubscription: Un$Typed<AppBskyNotificationDefs.ActivitySubscription>, activitySubscription: Un$Typed<AppBskyNotificationDefs.ActivitySubscription>,
) => { ) => {
await agent.app.bsky.notification.putActivitySubscription({ await client.call(app.bsky.notification.putActivitySubscription, {
subject: profile.did, // the profile view carries an already-resolved did
subject: profile.did as DidString,
activitySubscription, activitySubscription,
}) })
}, },
@@ -148,7 +150,7 @@ function DialogInner({
queryClient.setQueryData( queryClient.setQueryData(
RQKEY_getActivitySubscriptions, RQKEY_getActivitySubscriptions,
( (
old?: InfiniteData<AppBskyNotificationListActivitySubscriptions.OutputSchema>, old?: InfiniteData<app.bsky.notification.listActivitySubscriptions.$OutputBody>,
) => { ) => {
if (!old) return old if (!old) return old
return { return {
+8 -9
View File
@@ -1,7 +1,6 @@
import { import {
type AppBskyActorDefs, type AppBskyActorDefs,
type AppBskyNotificationDeclaration, type AppBskyNotificationDeclaration,
type AppBskyNotificationListActivitySubscriptions,
} from '@atproto/api' } from '@atproto/api'
import {t} from '@lingui/core/macro' import {t} from '@lingui/core/macro'
import { import {
@@ -13,23 +12,23 @@ import {
useQueryClient, useQueryClient,
} from '@tanstack/react-query' } from '@tanstack/react-query'
import {useAgent, useSession} from '#/state/session' import {useAgent, useAppviewClient, useSession} from '#/state/session'
import * as Toast from '#/components/Toast' import * as Toast from '#/components/Toast'
import {app} from '#/lexicons'
export const RQKEY_getActivitySubscriptions = ['activity-subscriptions'] export const RQKEY_getActivitySubscriptions = ['activity-subscriptions']
export const RQKEY_getNotificationDeclaration = ['notification-declaration'] export const RQKEY_getNotificationDeclaration = ['notification-declaration']
export function useActivitySubscriptionsQuery() { export function useActivitySubscriptionsQuery() {
const agent = useAgent() const client = useAppviewClient()
return useInfiniteQuery({ return useInfiniteQuery({
queryKey: RQKEY_getActivitySubscriptions, queryKey: RQKEY_getActivitySubscriptions,
queryFn: async ({pageParam}) => { queryFn: async ({pageParam}) => {
const response = return await client.call(
await agent.app.bsky.notification.listActivitySubscriptions({ app.bsky.notification.listActivitySubscriptions,
cursor: pageParam, {cursor: pageParam},
}) )
return response.data
}, },
initialPageParam: undefined as string | undefined, initialPageParam: undefined as string | undefined,
getNextPageParam: prev => prev.cursor, getNextPageParam: prev => prev.cursor,
@@ -111,7 +110,7 @@ export function* findAllProfilesInQueryData(
did: string, did: string,
): Generator<AppBskyActorDefs.ProfileView, void> { ): Generator<AppBskyActorDefs.ProfileView, void> {
const queryDatas = queryClient.getQueriesData< const queryDatas = queryClient.getQueriesData<
InfiniteData<AppBskyNotificationListActivitySubscriptions.OutputSchema> InfiniteData<app.bsky.notification.listActivitySubscriptions.$OutputBody>
>({ >({
queryKey: RQKEY_getActivitySubscriptions, queryKey: RQKEY_getActivitySubscriptions,
}) })