diff options
Diffstat (limited to 'src/state')
-rw-r--r-- | src/state/queries/handle.ts | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/state/queries/handle.ts b/src/state/queries/handle.ts new file mode 100644 index 000000000..97e9b2107 --- /dev/null +++ b/src/state/queries/handle.ts @@ -0,0 +1,25 @@ +import React from 'react' +import {useQueryClient} from '@tanstack/react-query' + +import {useSession} from '#/state/session' + +const fetchHandleQueryKey = (handleOrDid: string) => ['handle', handleOrDid] + +export function useFetchHandle() { + const {agent} = useSession() + const queryClient = useQueryClient() + + return React.useCallback( + async (handleOrDid: string) => { + if (handleOrDid.startsWith('did:')) { + const res = await queryClient.fetchQuery({ + queryKey: fetchHandleQueryKey(handleOrDid), + queryFn: () => agent.getProfile({actor: handleOrDid}), + }) + return res.data.handle + } + return handleOrDid + }, + [agent, queryClient], + ) +} |