diff options
Diffstat (limited to 'src/state/queries')
-rw-r--r-- | src/state/queries/post-thread.ts | 16 | ||||
-rw-r--r-- | src/state/queries/threadgate/index.ts | 19 | ||||
-rw-r--r-- | src/state/queries/threadgate/util.ts | 20 |
3 files changed, 15 insertions, 40 deletions
diff --git a/src/state/queries/post-thread.ts b/src/state/queries/post-thread.ts index 2c4a36c01..9d650024a 100644 --- a/src/state/queries/post-thread.ts +++ b/src/state/queries/post-thread.ts @@ -88,7 +88,10 @@ export type ThreadModerationCache = WeakMap<ThreadNode, ModerationDecision> export function usePostThreadQuery(uri: string | undefined) { const queryClient = useQueryClient() const agent = useAgent() - return useQuery<ThreadNode, Error>({ + return useQuery< + {thread: ThreadNode; threadgate?: AppBskyFeedDefs.ThreadgateView}, + Error + >({ gcTime: 0, queryKey: RQKEY(uri || ''), async queryFn() { @@ -99,16 +102,21 @@ export function usePostThreadQuery(uri: string | undefined) { if (res.success) { const thread = responseToThreadNodes(res.data.thread) annotateSelfThread(thread) - return thread + return { + thread, + threadgate: res.data.threadgate as + | AppBskyFeedDefs.ThreadgateView + | undefined, + } } - return {type: 'unknown', uri: uri!} + return {thread: {type: 'unknown', uri: uri!}} }, enabled: !!uri, placeholderData: () => { if (!uri) return const post = findPostInQueryData(queryClient, uri) if (post) { - return post + return {thread: post} } return undefined }, diff --git a/src/state/queries/threadgate/index.ts b/src/state/queries/threadgate/index.ts index faa166e2c..8aa932081 100644 --- a/src/state/queries/threadgate/index.ts +++ b/src/state/queries/threadgate/index.ts @@ -9,12 +9,10 @@ import {useMutation, useQuery, useQueryClient} from '@tanstack/react-query' import {networkRetry, retry} from '#/lib/async/retry' import {until} from '#/lib/async/until' -import {updatePostShadow} from '#/state/cache/post-shadow' import {STALE} from '#/state/queries' import {RQKEY_ROOT as postThreadQueryKeyRoot} from '#/state/queries/post-thread' import {ThreadgateAllowUISetting} from '#/state/queries/threadgate/types' import { - createTempThreadgateView, createThreadgateRecord, mergeThreadgateRecords, threadgateAllowUISettingToAllowRecordValue, @@ -33,18 +31,16 @@ export const createThreadgateRecordQueryKey = (uri: string) => [ ] export function useThreadgateRecordQuery({ - enabled, postUri, initialData, }: { - enabled?: boolean postUri?: string initialData?: AppBskyFeedThreadgate.Record } = {}) { const agent = useAgent() return useQuery({ - enabled: enabled ?? !!postUri, + enabled: !!postUri, queryKey: createThreadgateRecordQueryKey(postUri || ''), placeholderData: initialData, staleTime: STALE.MINUTES.ONE, @@ -344,26 +340,17 @@ export function useToggleReplyVisibilityMutation() { } }) }, - onSuccess(_, {postUri, replyUri}) { - updatePostShadow(queryClient, postUri, { - threadgateView: createTempThreadgateView({ - postUri, - hiddenReplies: [replyUri], - }), - }) + onSuccess() { queryClient.invalidateQueries({ queryKey: [threadgateRecordQueryKeyRoot], }) }, - onError(_, {postUri, replyUri, action}) { + onError(_, {replyUri, action}) { if (action === 'hide') { hiddenReplies.removeHiddenReplyUri(replyUri) } else if (action === 'show') { hiddenReplies.addHiddenReplyUri(replyUri) } - updatePostShadow(queryClient, postUri, { - threadgateView: undefined, - }) }, }) } diff --git a/src/state/queries/threadgate/util.ts b/src/state/queries/threadgate/util.ts index 35c33875e..09ae0a0c1 100644 --- a/src/state/queries/threadgate/util.ts +++ b/src/state/queries/threadgate/util.ts @@ -139,23 +139,3 @@ export function createThreadgateRecord( hiddenReplies: threadgate.hiddenReplies || [], } } - -export function createTempThreadgateView({ - postUri, - hiddenReplies, -}: Pick<AppBskyFeedThreadgate.Record, 'hiddenReplies'> & { - postUri: string -}): AppBskyFeedDefs.ThreadgateView { - const record: AppBskyFeedThreadgate.Record = { - $type: 'app.bsky.feed.threadgate', - post: postUri, - allow: undefined, - hiddenReplies, - createdAt: new Date().toISOString(), - } - return { - $type: 'app.bsky.feed.defs#threadgateView', - uri: postUri, - record, - } -} |