[🐴] DM button on profile (#4097)
* add profile button * separate out button to component * normalise subscribe to labeller button size * infinite staletime * use Link rather than Button and change icon * adjust icon position
This commit is contained in:
parent
2414559b80
commit
24f8794d4d
5 changed files with 125 additions and 42 deletions
|
@ -1,11 +1,15 @@
|
|||
import {ChatBskyConvoGetConvoForMembers} from '@atproto/api'
|
||||
import {useMutation, useQueryClient} from '@tanstack/react-query'
|
||||
import {useMutation, useQuery, useQueryClient} from '@tanstack/react-query'
|
||||
|
||||
import {logger} from '#/logger'
|
||||
import {DM_SERVICE_HEADERS} from '#/state/queries/messages/const'
|
||||
import {useAgent} from '#/state/session'
|
||||
import {STALE} from '..'
|
||||
import {RQKEY as CONVO_KEY} from './conversation'
|
||||
|
||||
const RQKEY_ROOT = 'convo-for-user'
|
||||
export const RQKEY = (did: string) => [RQKEY_ROOT, did]
|
||||
|
||||
export function useGetConvoForMembers({
|
||||
onSuccess,
|
||||
onError,
|
||||
|
@ -35,3 +39,29 @@ export function useGetConvoForMembers({
|
|||
},
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the conversation ID for a given DID. Returns null if it's not possible to message them.
|
||||
*/
|
||||
export function useMaybeConvoForUser(did: string) {
|
||||
const {getAgent} = useAgent()
|
||||
|
||||
return useQuery({
|
||||
queryKey: RQKEY(did),
|
||||
queryFn: async () => {
|
||||
const convo = await getAgent()
|
||||
.api.chat.bsky.convo.getConvoForMembers(
|
||||
{members: [did]},
|
||||
{headers: DM_SERVICE_HEADERS},
|
||||
)
|
||||
.catch(() => ({success: null}))
|
||||
|
||||
if (convo.success) {
|
||||
return convo.data.convo.id
|
||||
} else {
|
||||
return null
|
||||
}
|
||||
},
|
||||
staleTime: STALE.INFINITY,
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue