[Session] Drill into `getAgent` into `whenAppViewReady` (#3702)

* Drill into whenAppViewReady

(cherry picked from commit e290e5be3df509bdd9d0e626a164996c9dee3636)

* Drill getAgent instead

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
zio/stable
Eric Bailey 2024-04-25 15:39:28 -05:00 committed by GitHub
parent ec37696034
commit a69e567991
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 45 additions and 20 deletions

View File

@ -4,6 +4,7 @@ import {
AppBskyGraphGetList, AppBskyGraphGetList,
AppBskyGraphList, AppBskyGraphList,
AtUri, AtUri,
BskyAgent,
Facet, Facet,
} from '@atproto/api' } from '@atproto/api'
import {useMutation, useQuery, useQueryClient} from '@tanstack/react-query' import {useMutation, useQuery, useQueryClient} from '@tanstack/react-query'
@ -85,9 +86,13 @@ export function useListCreateMutation() {
) )
// wait for the appview to update // wait for the appview to update
await whenAppViewReady(res.uri, (v: AppBskyGraphGetList.Response) => { await whenAppViewReady(
return typeof v?.data?.list.uri === 'string' getAgent,
}) res.uri,
(v: AppBskyGraphGetList.Response) => {
return typeof v?.data?.list.uri === 'string'
},
)
return res return res
}, },
onSuccess() { onSuccess() {
@ -150,12 +155,16 @@ export function useListMetadataMutation() {
).data ).data
// wait for the appview to update // wait for the appview to update
await whenAppViewReady(res.uri, (v: AppBskyGraphGetList.Response) => { await whenAppViewReady(
const list = v.data.list getAgent,
return ( res.uri,
list.name === record.name && list.description === record.description (v: AppBskyGraphGetList.Response) => {
) const list = v.data.list
}) return (
list.name === record.name && list.description === record.description
)
},
)
return res return res
}, },
onSuccess(data, variables) { onSuccess(data, variables) {
@ -220,9 +229,13 @@ export function useListDeleteMutation() {
} }
// wait for the appview to update // wait for the appview to update
await whenAppViewReady(uri, (v: AppBskyGraphGetList.Response) => { await whenAppViewReady(
return !v?.success getAgent,
}) uri,
(v: AppBskyGraphGetList.Response) => {
return !v?.success
},
)
}, },
onSuccess() { onSuccess() {
invalidateMyLists(queryClient) invalidateMyLists(queryClient)
@ -244,9 +257,13 @@ export function useListMuteMutation() {
await getAgent().unmuteModList(uri) await getAgent().unmuteModList(uri)
} }
await whenAppViewReady(uri, (v: AppBskyGraphGetList.Response) => { await whenAppViewReady(
return Boolean(v?.data.list.viewer?.muted) === mute getAgent,
}) uri,
(v: AppBskyGraphGetList.Response) => {
return Boolean(v?.data.list.viewer?.muted) === mute
},
)
}, },
onSuccess(data, variables) { onSuccess(data, variables) {
queryClient.invalidateQueries({ queryClient.invalidateQueries({
@ -266,11 +283,15 @@ export function useListBlockMutation() {
await getAgent().unblockModList(uri) await getAgent().unblockModList(uri)
} }
await whenAppViewReady(uri, (v: AppBskyGraphGetList.Response) => { await whenAppViewReady(
return block getAgent,
? typeof v?.data.list.viewer?.blocked === 'string' uri,
: !v?.data.list.viewer?.blocked (v: AppBskyGraphGetList.Response) => {
}) return block
? typeof v?.data.list.viewer?.blocked === 'string'
: !v?.data.list.viewer?.blocked
},
)
}, },
onSuccess(data, variables) { onSuccess(data, variables) {
queryClient.invalidateQueries({ queryClient.invalidateQueries({
@ -281,6 +302,7 @@ export function useListBlockMutation() {
} }
async function whenAppViewReady( async function whenAppViewReady(
getAgent: () => BskyAgent,
uri: string, uri: string,
fn: (res: AppBskyGraphGetList.Response) => boolean, fn: (res: AppBskyGraphGetList.Response) => boolean,
) { ) {

View File

@ -8,6 +8,7 @@ import {
AppBskyEmbedRecordWithMedia, AppBskyEmbedRecordWithMedia,
AppBskyFeedDefs, AppBskyFeedDefs,
AtUri, AtUri,
BskyAgent,
} from '@atproto/api' } from '@atproto/api'
import { import {
QueryClient, QueryClient,
@ -154,6 +155,7 @@ export function useProfileUpdateMutation() {
return existing return existing
}) })
await whenAppViewReady( await whenAppViewReady(
getAgent,
profile.did, profile.did,
checkCommitted || checkCommitted ||
(res => { (res => {
@ -516,6 +518,7 @@ export function precacheThreadPostProfiles(
} }
async function whenAppViewReady( async function whenAppViewReady(
getAgent: () => BskyAgent,
actor: string, actor: string,
fn: (res: AppBskyActorGetProfile.Response) => boolean, fn: (res: AppBskyActorGetProfile.Response) => boolean,
) { ) {