Merge pull request #2679 from bluesky-social/hailey/check-blocks-load-profile

clear cache when blocking/unblocking and whenever we get blocked, better invalidation logic for `useProfileQuery`
This commit is contained in:
Hailey 2024-01-30 10:35:46 -08:00 committed by GitHub
commit 4058174678
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 48 additions and 13 deletions

View file

@ -27,12 +27,12 @@ export function Component({did}: {did: string}) {
data: profile,
error: profileError,
refetch: refetchProfile,
isFetching: isFetchingProfile,
isLoading: isLoadingProfile,
} = useProfileQuery({
did: did,
})
if (isFetchingProfile || !moderationOpts) {
if (isLoadingProfile || !moderationOpts) {
return (
<CenteredView style={[pal.view, s.flex1]}>
<ProfileHeader

View file

@ -9,6 +9,7 @@ import {sanitizeDisplayName} from 'lib/strings/display-names'
import {sanitizeHandle} from 'lib/strings/handles'
import {makeProfileLink} from 'lib/routes/links'
import {useProfileQuery} from '#/state/queries/profile'
import {STALE} from '#/state/queries'
export function UserInfoText({
type = 'md',
@ -29,7 +30,10 @@ export function UserInfoText({
attr = attr || 'handle'
failed = failed || 'user'
const {data: profile, isError} = useProfileQuery({did})
const {data: profile, isError} = useProfileQuery({
did,
staleTime: STALE.INFINITY,
})
let inner
if (isError) {

View file

@ -21,7 +21,10 @@ import {useAnalytics} from 'lib/analytics/analytics'
import {ComposeIcon2} from 'lib/icons'
import {useSetTitle} from 'lib/hooks/useSetTitle'
import {combinedDisplayName} from 'lib/strings/display-names'
import {FeedDescriptor} from '#/state/queries/post-feed'
import {
FeedDescriptor,
resetProfilePostsQueries,
} from '#/state/queries/post-feed'
import {useResolveDidQuery} from '#/state/queries/resolve-uri'
import {useProfileQuery} from '#/state/queries/profile'
import {useProfileShadow} from '#/state/cache/profile-shadow'
@ -55,13 +58,13 @@ export function ProfileScreen({route}: Props) {
data: resolvedDid,
error: resolveError,
refetch: refetchDid,
isInitialLoading: isInitialLoadingDid,
isLoading: isLoadingDid,
} = useResolveDidQuery(name)
const {
data: profile,
error: profileError,
refetch: refetchProfile,
isInitialLoading: isInitialLoadingProfile,
isLoading: isLoadingProfile,
} = useProfileQuery({
did: resolvedDid,
})
@ -74,7 +77,14 @@ export function ProfileScreen({route}: Props) {
}
}, [resolveError, refetchDid, refetchProfile])
if (isInitialLoadingDid || isInitialLoadingProfile || !moderationOpts) {
// When we open the profile, we want to reset the posts query if we are blocked.
React.useEffect(() => {
if (resolvedDid && profile?.viewer?.blockedBy) {
resetProfilePostsQueries(resolvedDid)
}
}, [profile?.viewer?.blockedBy, resolvedDid])
if (isLoadingDid || isLoadingProfile || !moderationOpts) {
return (
<CenteredView>
<ProfileHeader