Skip to content

Commit 95efde6

Browse files
committed
update other changes to useQuery with fallback
1 parent e4acd37 commit 95efde6

File tree

5 files changed

+31
-15
lines changed

5 files changed

+31
-15
lines changed

src/state/queries/actor-autocomplete.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React from 'react'
22
import {AppBskyActorDefs, moderateProfile, ModerationOpts} from '@atproto/api'
3-
import {keepPreviousData, useQuery, useQueryClient} from '@tanstack/react-query'
3+
import {fetchQueryWithFallback, keepPreviousData, useQuery, useQueryClient} from './useQueryWithFallback'
44

55
import {isJustAMute, moduiContainsHideableOffense} from '#/lib/moderation'
66
import {logger} from '#/logger'
@@ -69,14 +69,16 @@ export function useActorAutocompleteFn() {
6969
let res
7070
if (query) {
7171
try {
72-
res = await queryClient.fetchQuery({
73-
staleTime: STALE.MINUTES.ONE,
72+
res = await fetchQueryWithFallback(queryClient, {
7473
queryKey: RQKEY(query || ''),
7574
queryFn: () =>
7675
agent.searchActorsTypeahead({
7776
q: query,
7877
limit,
7978
}),
79+
enableFallback: true,
80+
fallbackType: 'profile',
81+
fallbackIdentifier: query,
8082
})
8183
} catch (e) {
8284
logger.error('useActorSearch: searchActorsTypeahead failed', {

src/state/queries/handle.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import React from 'react'
2-
import {useMutation, useQueryClient} from '@tanstack/react-query'
2+
import {fetchQueryWithFallback, useMutation, useQueryClient} from './useQueryWithFallback'
33

44
import {STALE} from '#/state/queries'
55
import {useAgent} from '#/state/session'
@@ -19,10 +19,12 @@ export function useFetchHandle() {
1919
return React.useCallback(
2020
async (handleOrDid: string) => {
2121
if (handleOrDid.startsWith('did:')) {
22-
const res = await queryClient.fetchQuery({
23-
staleTime: STALE.MINUTES.FIVE,
22+
const res = await fetchQueryWithFallback(queryClient, {
2423
queryKey: fetchHandleQueryKey(handleOrDid),
2524
queryFn: () => agent.getProfile({actor: handleOrDid}),
25+
enableFallback: true,
26+
fallbackType: 'profile',
27+
fallbackIdentifier: handleOrDid,
2628
})
2729
return res.data.handle
2830
}
@@ -57,8 +59,7 @@ export function useFetchDid() {
5759

5860
return React.useCallback(
5961
async (handleOrDid: string) => {
60-
return queryClient.fetchQuery({
61-
staleTime: STALE.INFINITY,
62+
return fetchQueryWithFallback(queryClient, {
6263
queryKey: fetchDidQueryKey(handleOrDid),
6364
queryFn: async () => {
6465
let identifier = handleOrDid
@@ -68,6 +69,9 @@ export function useFetchDid() {
6869
}
6970
return identifier
7071
},
72+
enableFallback: true,
73+
fallbackType: 'profile',
74+
fallbackIdentifier: handleOrDid,
7175
})
7276
},
7377
[queryClient, agent],

src/state/queries/post-feed.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import {
1515
type QueryClient,
1616
type QueryKey,
1717
useInfiniteQuery,
18-
} from '@tanstack/react-query'
18+
} from './useQueryWithFallback'
1919

2020
import {AuthorFeedAPI} from '#/lib/api/feed/author'
2121
import {CustomFeedAPI} from '#/lib/api/feed/custom'
@@ -381,6 +381,11 @@ export function usePostFeedQuery(
381381
},
382382
[selectArgs /* Don't change. Everything needs to go into selectArgs. */],
383383
),
384+
enableFallback: feedDesc.startsWith('author'),
385+
fallbackType: 'feed',
386+
fallbackIdentifier: feedDesc.startsWith('author|')
387+
? feedDesc.split('|')[1]
388+
: undefined,
384389
})
385390

386391
// The server may end up returning an empty page, a page with too few items,

src/state/queries/resolve-link.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {QueryClient, useQuery} from '@tanstack/react-query'
1+
import {fetchQueryWithFallback, type QueryClient, useQuery} from './useQueryWithFallback'
22

33
import {STALE} from '#/state/queries/index'
44
import {useAgent} from '../session'
@@ -29,12 +29,14 @@ export function fetchResolveLinkQuery(
2929
agent: BskyAgent,
3030
url: string,
3131
) {
32-
return queryClient.fetchQuery({
33-
staleTime: STALE.HOURS.ONE,
32+
return fetchQueryWithFallback(queryClient, {
3433
queryKey: RQKEY_LINK(url),
3534
queryFn: async () => {
3635
return await resolveLink(agent, url)
3736
},
37+
enableFallback: true,
38+
fallbackType: 'generic',
39+
fallbackIdentifier: url,
3840
})
3941
}
4042
export function precacheResolveLinkQuery(
@@ -60,11 +62,13 @@ export function fetchResolveGifQuery(
6062
agent: BskyAgent,
6163
gif: Gif,
6264
) {
63-
return queryClient.fetchQuery({
64-
staleTime: STALE.HOURS.ONE,
65+
return fetchQueryWithFallback(queryClient, {
6566
queryKey: RQKEY_GIF(gif.url),
6667
queryFn: async () => {
6768
return await resolveGif(agent, gif)
6869
},
70+
enableFallback: true,
71+
fallbackType: 'generic',
72+
fallbackIdentifier: gif.url,
6973
})
7074
}

src/state/queries/useQueryWithFallback.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -359,10 +359,11 @@ async function attemptInfiniteFallback(
359359
}
360360
}
361361

362-
// Re-export other hooks from TanStack Query for convenience
362+
// Re-export other hooks and utilities from TanStack Query for convenience
363363
export {
364364
useMutation,
365365
useQueryClient,
366+
keepPreviousData,
366367
type UseMutationOptions,
367368
type UseMutationResult,
368369
} from '@tanstack/react-query'

0 commit comments

Comments
 (0)