Bluesky app fork with some witchin' additions 馃挮
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

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