Pass queryClient explicitly to resetProfilePostsQueries
This commit is contained in:
@@ -3,37 +3,37 @@ import {AppState} from 'react-native'
|
|||||||
import {
|
import {
|
||||||
AppBskyFeedDefs,
|
AppBskyFeedDefs,
|
||||||
AppBskyFeedPost,
|
AppBskyFeedPost,
|
||||||
ModerationDecision,
|
|
||||||
AtUri,
|
AtUri,
|
||||||
|
ModerationDecision,
|
||||||
} from '@atproto/api'
|
} from '@atproto/api'
|
||||||
import {
|
import {
|
||||||
useInfiniteQuery,
|
|
||||||
InfiniteData,
|
InfiniteData,
|
||||||
QueryKey,
|
|
||||||
QueryClient,
|
QueryClient,
|
||||||
|
QueryKey,
|
||||||
|
useInfiniteQuery,
|
||||||
useQueryClient,
|
useQueryClient,
|
||||||
} from '@tanstack/react-query'
|
} from '@tanstack/react-query'
|
||||||
import {moderatePost_wrapped as moderatePost} from '#/lib/moderatePost_wrapped'
|
|
||||||
import {useFeedTuners} from '../preferences/feed-tuners'
|
|
||||||
import {FeedTuner, FeedTunerFn, NoopFeedTuner} from 'lib/api/feed-manip'
|
|
||||||
import {FeedAPI, ReasonFeedSource} from 'lib/api/feed/types'
|
|
||||||
import {FollowingFeedAPI} from 'lib/api/feed/following'
|
|
||||||
import {AuthorFeedAPI} from 'lib/api/feed/author'
|
|
||||||
import {LikesFeedAPI} from 'lib/api/feed/likes'
|
|
||||||
import {CustomFeedAPI} from 'lib/api/feed/custom'
|
|
||||||
import {ListFeedAPI} from 'lib/api/feed/list'
|
|
||||||
import {MergeFeedAPI} from 'lib/api/feed/merge'
|
|
||||||
import {HomeFeedAPI} from '#/lib/api/feed/home'
|
import {HomeFeedAPI} from '#/lib/api/feed/home'
|
||||||
|
import {moderatePost_wrapped as moderatePost} from '#/lib/moderatePost_wrapped'
|
||||||
import {logger} from '#/logger'
|
import {logger} from '#/logger'
|
||||||
import {STALE} from '#/state/queries'
|
import {STALE} from '#/state/queries'
|
||||||
import {precacheFeedPostProfiles} from './profile'
|
|
||||||
import {getAgent} from '#/state/session'
|
|
||||||
import {DEFAULT_LOGGED_OUT_PREFERENCES} from '#/state/queries/preferences/const'
|
import {DEFAULT_LOGGED_OUT_PREFERENCES} from '#/state/queries/preferences/const'
|
||||||
import {KnownError} from '#/view/com/posts/FeedErrorMessage'
|
import {getAgent} from '#/state/session'
|
||||||
import {embedViewRecordToPostView, getEmbeddedPost} from './util'
|
import {AuthorFeedAPI} from 'lib/api/feed/author'
|
||||||
import {useModerationOpts} from './preferences'
|
import {CustomFeedAPI} from 'lib/api/feed/custom'
|
||||||
import {queryClient} from 'lib/react-query'
|
import {FollowingFeedAPI} from 'lib/api/feed/following'
|
||||||
|
import {LikesFeedAPI} from 'lib/api/feed/likes'
|
||||||
|
import {ListFeedAPI} from 'lib/api/feed/list'
|
||||||
|
import {MergeFeedAPI} from 'lib/api/feed/merge'
|
||||||
|
import {FeedAPI, ReasonFeedSource} from 'lib/api/feed/types'
|
||||||
|
import {FeedTuner, FeedTunerFn, NoopFeedTuner} from 'lib/api/feed-manip'
|
||||||
import {BSKY_FEED_OWNER_DIDS} from 'lib/constants'
|
import {BSKY_FEED_OWNER_DIDS} from 'lib/constants'
|
||||||
|
import {KnownError} from '#/view/com/posts/FeedErrorMessage'
|
||||||
|
import {useFeedTuners} from '../preferences/feed-tuners'
|
||||||
|
import {useModerationOpts} from './preferences'
|
||||||
|
import {precacheFeedPostProfiles} from './profile'
|
||||||
|
import {embedViewRecordToPostView, getEmbeddedPost} from './util'
|
||||||
|
|
||||||
type ActorDid = string
|
type ActorDid = string
|
||||||
type AuthorFilter =
|
type AuthorFilter =
|
||||||
@@ -458,7 +458,11 @@ function assertSomePostsPassModeration(feed: AppBskyFeedDefs.FeedViewPost[]) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function resetProfilePostsQueries(did: string, timeout = 0) {
|
export function resetProfilePostsQueries(
|
||||||
|
queryClient: QueryClient,
|
||||||
|
did: string,
|
||||||
|
timeout = 0,
|
||||||
|
) {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
queryClient.resetQueries({
|
queryClient.resetQueries({
|
||||||
predicate: query =>
|
predicate: query =>
|
||||||
|
|||||||
@@ -1,32 +1,33 @@
|
|||||||
import {useCallback} from 'react'
|
import {useCallback} from 'react'
|
||||||
|
import {Image as RNImage} from 'react-native-image-crop-picker'
|
||||||
import {
|
import {
|
||||||
AtUri,
|
|
||||||
AppBskyActorDefs,
|
AppBskyActorDefs,
|
||||||
AppBskyActorProfile,
|
|
||||||
AppBskyActorGetProfile,
|
AppBskyActorGetProfile,
|
||||||
AppBskyFeedDefs,
|
AppBskyActorProfile,
|
||||||
AppBskyEmbedRecord,
|
AppBskyEmbedRecord,
|
||||||
AppBskyEmbedRecordWithMedia,
|
AppBskyEmbedRecordWithMedia,
|
||||||
|
AppBskyFeedDefs,
|
||||||
|
AtUri,
|
||||||
} from '@atproto/api'
|
} from '@atproto/api'
|
||||||
import {
|
import {
|
||||||
|
QueryClient,
|
||||||
|
useMutation,
|
||||||
useQuery,
|
useQuery,
|
||||||
useQueryClient,
|
useQueryClient,
|
||||||
useMutation,
|
|
||||||
QueryClient,
|
|
||||||
} from '@tanstack/react-query'
|
} from '@tanstack/react-query'
|
||||||
import {Image as RNImage} from 'react-native-image-crop-picker'
|
|
||||||
import {useSession, getAgent} from '../session'
|
import {track} from '#/lib/analytics/analytics'
|
||||||
import {updateProfileShadow} from '../cache/profile-shadow'
|
|
||||||
import {uploadBlob} from '#/lib/api'
|
import {uploadBlob} from '#/lib/api'
|
||||||
import {until} from '#/lib/async/until'
|
import {until} from '#/lib/async/until'
|
||||||
import {Shadow} from '#/state/cache/types'
|
|
||||||
import {resetProfilePostsQueries} from '#/state/queries/post-feed'
|
|
||||||
import {useToggleMutationQueue} from '#/lib/hooks/useToggleMutationQueue'
|
import {useToggleMutationQueue} from '#/lib/hooks/useToggleMutationQueue'
|
||||||
import {RQKEY as RQKEY_MY_MUTED} from './my-muted-accounts'
|
|
||||||
import {RQKEY as RQKEY_MY_BLOCKED} from './my-blocked-accounts'
|
|
||||||
import {STALE} from '#/state/queries'
|
|
||||||
import {track} from '#/lib/analytics/analytics'
|
|
||||||
import {logEvent, LogEvents} from '#/lib/statsig/statsig'
|
import {logEvent, LogEvents} from '#/lib/statsig/statsig'
|
||||||
|
import {Shadow} from '#/state/cache/types'
|
||||||
|
import {STALE} from '#/state/queries'
|
||||||
|
import {resetProfilePostsQueries} from '#/state/queries/post-feed'
|
||||||
|
import {updateProfileShadow} from '../cache/profile-shadow'
|
||||||
|
import {getAgent, useSession} from '../session'
|
||||||
|
import {RQKEY as RQKEY_MY_BLOCKED} from './my-blocked-accounts'
|
||||||
|
import {RQKEY as RQKEY_MY_MUTED} from './my-muted-accounts'
|
||||||
import {ThreadNode} from './post-thread'
|
import {ThreadNode} from './post-thread'
|
||||||
|
|
||||||
export const RQKEY = (did: string) => ['profile', did]
|
export const RQKEY = (did: string) => ['profile', did]
|
||||||
@@ -406,13 +407,14 @@ function useProfileBlockMutation() {
|
|||||||
},
|
},
|
||||||
onSuccess(_, {did}) {
|
onSuccess(_, {did}) {
|
||||||
queryClient.invalidateQueries({queryKey: RQKEY_MY_BLOCKED()})
|
queryClient.invalidateQueries({queryKey: RQKEY_MY_BLOCKED()})
|
||||||
resetProfilePostsQueries(did, 1000)
|
resetProfilePostsQueries(queryClient, did, 1000)
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
function useProfileUnblockMutation() {
|
function useProfileUnblockMutation() {
|
||||||
const {currentAccount} = useSession()
|
const {currentAccount} = useSession()
|
||||||
|
const queryClient = useQueryClient()
|
||||||
return useMutation<void, Error, {did: string; blockUri: string}>({
|
return useMutation<void, Error, {did: string; blockUri: string}>({
|
||||||
mutationFn: async ({blockUri}) => {
|
mutationFn: async ({blockUri}) => {
|
||||||
if (!currentAccount) {
|
if (!currentAccount) {
|
||||||
@@ -425,7 +427,7 @@ function useProfileUnblockMutation() {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
onSuccess(_, {did}) {
|
onSuccess(_, {did}) {
|
||||||
resetProfilePostsQueries(did, 1000)
|
resetProfilePostsQueries(queryClient, did, 1000)
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import React, {useMemo} from 'react'
|
import React, {useMemo} from 'react'
|
||||||
import {StyleSheet} from 'react-native'
|
import {StyleSheet} from 'react-native'
|
||||||
import {useFocusEffect} from '@react-navigation/native'
|
|
||||||
import {
|
import {
|
||||||
AppBskyActorDefs,
|
AppBskyActorDefs,
|
||||||
moderateProfile,
|
moderateProfile,
|
||||||
@@ -9,36 +8,38 @@ import {
|
|||||||
} from '@atproto/api'
|
} from '@atproto/api'
|
||||||
import {msg} from '@lingui/macro'
|
import {msg} from '@lingui/macro'
|
||||||
import {useLingui} from '@lingui/react'
|
import {useLingui} from '@lingui/react'
|
||||||
import {NativeStackScreenProps, CommonNavigatorParams} from 'lib/routes/types'
|
import {useFocusEffect} from '@react-navigation/native'
|
||||||
import {CenteredView} from '../com/util/Views'
|
import {useQueryClient} from '@tanstack/react-query'
|
||||||
import {ListRef} from '../com/util/List'
|
|
||||||
import {ScreenHider} from '#/components/moderation/ScreenHider'
|
|
||||||
import {ProfileLists} from '../com/lists/ProfileLists'
|
|
||||||
import {ProfileFeedgens} from '../com/feeds/ProfileFeedgens'
|
|
||||||
import {PagerWithHeader} from 'view/com/pager/PagerWithHeader'
|
|
||||||
import {ErrorScreen} from '../com/util/error/ErrorScreen'
|
|
||||||
import {FAB} from '../com/util/fab/FAB'
|
|
||||||
import {s, colors} from 'lib/styles'
|
|
||||||
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 {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'
|
|
||||||
import {useSession, getAgent} from '#/state/session'
|
|
||||||
import {useModerationOpts} from '#/state/queries/preferences'
|
|
||||||
import {useLabelerInfoQuery} from '#/state/queries/labeler'
|
|
||||||
import {useSetDrawerSwipeDisabled, useSetMinimalShellMode} from '#/state/shell'
|
|
||||||
import {cleanError} from '#/lib/strings/errors'
|
|
||||||
import {useComposerControls} from '#/state/shell/composer'
|
|
||||||
import {listenSoftReset} from '#/state/events'
|
|
||||||
import {isInvalidHandle} from '#/lib/strings/handles'
|
|
||||||
|
|
||||||
|
import {cleanError} from '#/lib/strings/errors'
|
||||||
|
import {isInvalidHandle} from '#/lib/strings/handles'
|
||||||
|
import {useProfileShadow} from '#/state/cache/profile-shadow'
|
||||||
|
import {listenSoftReset} from '#/state/events'
|
||||||
|
import {useLabelerInfoQuery} from '#/state/queries/labeler'
|
||||||
|
import {resetProfilePostsQueries} from '#/state/queries/post-feed'
|
||||||
|
import {useModerationOpts} from '#/state/queries/preferences'
|
||||||
|
import {useProfileQuery} from '#/state/queries/profile'
|
||||||
|
import {useResolveDidQuery} from '#/state/queries/resolve-uri'
|
||||||
|
import {getAgent, useSession} from '#/state/session'
|
||||||
|
import {useSetDrawerSwipeDisabled, useSetMinimalShellMode} from '#/state/shell'
|
||||||
|
import {useComposerControls} from '#/state/shell/composer'
|
||||||
|
import {useAnalytics} from 'lib/analytics/analytics'
|
||||||
|
import {useSetTitle} from 'lib/hooks/useSetTitle'
|
||||||
|
import {ComposeIcon2} from 'lib/icons'
|
||||||
|
import {CommonNavigatorParams, NativeStackScreenProps} from 'lib/routes/types'
|
||||||
|
import {combinedDisplayName} from 'lib/strings/display-names'
|
||||||
|
import {colors, s} from 'lib/styles'
|
||||||
|
import {PagerWithHeader} from 'view/com/pager/PagerWithHeader'
|
||||||
|
import {ProfileHeader, ProfileHeaderLoading} from '#/screens/Profile/Header'
|
||||||
import {ProfileFeedSection} from '#/screens/Profile/Sections/Feed'
|
import {ProfileFeedSection} from '#/screens/Profile/Sections/Feed'
|
||||||
import {ProfileLabelsSection} from '#/screens/Profile/Sections/Labels'
|
import {ProfileLabelsSection} from '#/screens/Profile/Sections/Labels'
|
||||||
import {ProfileHeader, ProfileHeaderLoading} from '#/screens/Profile/Header'
|
import {ScreenHider} from '#/components/moderation/ScreenHider'
|
||||||
|
import {ProfileFeedgens} from '../com/feeds/ProfileFeedgens'
|
||||||
|
import {ProfileLists} from '../com/lists/ProfileLists'
|
||||||
|
import {ErrorScreen} from '../com/util/error/ErrorScreen'
|
||||||
|
import {FAB} from '../com/util/fab/FAB'
|
||||||
|
import {ListRef} from '../com/util/List'
|
||||||
|
import {CenteredView} from '../com/util/Views'
|
||||||
|
|
||||||
interface SectionRef {
|
interface SectionRef {
|
||||||
scrollToTop: () => void
|
scrollToTop: () => void
|
||||||
@@ -48,6 +49,7 @@ type Props = NativeStackScreenProps<CommonNavigatorParams, 'Profile'>
|
|||||||
export function ProfileScreen({route}: Props) {
|
export function ProfileScreen({route}: Props) {
|
||||||
const {_} = useLingui()
|
const {_} = useLingui()
|
||||||
const {currentAccount} = useSession()
|
const {currentAccount} = useSession()
|
||||||
|
const queryClient = useQueryClient()
|
||||||
const name =
|
const name =
|
||||||
route.params.name === 'me' ? currentAccount?.did : route.params.name
|
route.params.name === 'me' ? currentAccount?.did : route.params.name
|
||||||
const moderationOpts = useModerationOpts()
|
const moderationOpts = useModerationOpts()
|
||||||
@@ -78,9 +80,9 @@ export function ProfileScreen({route}: Props) {
|
|||||||
// When we open the profile, we want to reset the posts query if we are blocked.
|
// When we open the profile, we want to reset the posts query if we are blocked.
|
||||||
React.useEffect(() => {
|
React.useEffect(() => {
|
||||||
if (resolvedDid && profile?.viewer?.blockedBy) {
|
if (resolvedDid && profile?.viewer?.blockedBy) {
|
||||||
resetProfilePostsQueries(resolvedDid)
|
resetProfilePostsQueries(queryClient, resolvedDid)
|
||||||
}
|
}
|
||||||
}, [profile?.viewer?.blockedBy, resolvedDid])
|
}, [queryClient, profile?.viewer?.blockedBy, resolvedDid])
|
||||||
|
|
||||||
// Most pushes will happen here, since we will have only placeholder data
|
// Most pushes will happen here, since we will have only placeholder data
|
||||||
if (isLoadingDid || isLoadingProfile) {
|
if (isLoadingDid || isLoadingProfile) {
|
||||||
|
|||||||
Reference in New Issue
Block a user