Bluesky app fork with some witchin' additions 馃挮
at readme-update 70 lines 1.8 kB view raw
1import {type QueryClient, useQuery} from '@tanstack/react-query' 2 3import {STALE} from '#/state/queries/index' 4import {useAgent} from '../session' 5 6const RQKEY_LINK_ROOT = 'resolve-link' 7export const RQKEY_LINK = (url: string) => [RQKEY_LINK_ROOT, url] 8 9const RQKEY_GIF_ROOT = 'resolve-gif' 10export const RQKEY_GIF = (url: string) => [RQKEY_GIF_ROOT, url] 11 12import {type BskyAgent} from '@atproto/api' 13 14import {type ResolvedLink, resolveGif, resolveLink} from '#/lib/api/resolve' 15import {type Gif} from './tenor' 16 17export function useResolveLinkQuery(url: string) { 18 const agent = useAgent() 19 return useQuery({ 20 staleTime: STALE.HOURS.ONE, 21 queryKey: RQKEY_LINK(url), 22 queryFn: async () => { 23 return await resolveLink(agent, url) 24 }, 25 }) 26} 27export function fetchResolveLinkQuery( 28 queryClient: QueryClient, 29 agent: BskyAgent, 30 url: string, 31) { 32 return queryClient.fetchQuery({ 33 staleTime: STALE.HOURS.ONE, 34 queryKey: RQKEY_LINK(url), 35 queryFn: async () => { 36 return await resolveLink(agent, url) 37 }, 38 }) 39} 40export function precacheResolveLinkQuery( 41 queryClient: QueryClient, 42 url: string, 43 resolvedLink: ResolvedLink, 44) { 45 queryClient.setQueryData(RQKEY_LINK(url), resolvedLink) 46} 47 48export function useResolveGifQuery(gif: Gif) { 49 const agent = useAgent() 50 return useQuery({ 51 staleTime: STALE.HOURS.ONE, 52 queryKey: RQKEY_GIF(gif.url), 53 queryFn: async () => { 54 return await resolveGif(agent, gif) 55 }, 56 }) 57} 58export function fetchResolveGifQuery( 59 queryClient: QueryClient, 60 agent: BskyAgent, 61 gif: Gif, 62) { 63 return queryClient.fetchQuery({ 64 staleTime: STALE.HOURS.ONE, 65 queryKey: RQKEY_GIF(gif.url), 66 queryFn: async () => { 67 return await resolveGif(agent, gif) 68 }, 69 }) 70}