From d1e43ac5dbd0a1c031c49447e89867aba3b5ceab Mon Sep 17 00:00:00 2001 From: Samuel Newman Date: Sun, 22 Mar 2026 15:17:48 +0200 Subject: [PATCH] make onReply callbacks non reactive --- .../PostThread/components/ThreadItemAnchor.tsx | 15 ++++----------- src/screens/PostThread/index.tsx | 14 ++++---------- 2 files changed, 8 insertions(+), 21 deletions(-) diff --git a/src/screens/PostThread/components/ThreadItemAnchor.tsx b/src/screens/PostThread/components/ThreadItemAnchor.tsx index f0eca21224..42574c7408 100644 --- a/src/screens/PostThread/components/ThreadItemAnchor.tsx +++ b/src/screens/PostThread/components/ThreadItemAnchor.tsx @@ -1,4 +1,4 @@ -import {memo, useCallback, useMemo} from 'react' +import {memo, useMemo} from 'react' import {Text as RNText, View} from 'react-native' import { AppBskyFeedDefs, @@ -9,6 +9,7 @@ import { } from '@atproto/api' import {Plural, Trans, useLingui} from '@lingui/react/macro' +import {useNonReactiveCallback} from '#/lib/hooks/useNonReactiveCallback' import {useOpenComposer} from '#/lib/hooks/useOpenComposer' import {makeProfileLink} from '#/lib/routes/links' import {sanitizeDisplayName} from '#/lib/strings/display-names' @@ -245,7 +246,7 @@ const ThreadItemAnchorInner = memo(function ThreadItemAnchorInner({ } }, [postSource]) - const onPressReply = useCallback(() => { + const onPressReply = useNonReactiveCallback(() => { openComposer({ replyTo: { uri: post.uri, @@ -268,15 +269,7 @@ const ThreadItemAnchorInner = memo(function ThreadItemAnchorInner({ reqId: postSource.post.reqId, }) } - }, [ - openComposer, - post, - record, - onPostSuccess, - moderation, - postSource, - feedFeedback, - ]) + }) const onOpenAuthor = () => { ax.metric('post:clickthroughAuthor', { diff --git a/src/screens/PostThread/index.tsx b/src/screens/PostThread/index.tsx index bf89dfc69d..c3c9405287 100644 --- a/src/screens/PostThread/index.tsx +++ b/src/screens/PostThread/index.tsx @@ -11,6 +11,7 @@ import Animated, {useAnimatedStyle} from 'react-native-reanimated' import {Trans} from '@lingui/react/macro' import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender' +import {useNonReactiveCallback} from '#/lib/hooks/useNonReactiveCallback' import {useOpenComposer} from '#/lib/hooks/useOpenComposer' import {usePostViewTracking} from '#/lib/hooks/usePostViewTracking' import {useFeedFeedback} from '#/state/feed-feedback' @@ -105,7 +106,7 @@ export function PostThread({uri}: {uri: string}) { const trackThreadItemView = usePostViewTracking('PostThreadItem') const {openComposer} = useOpenComposer() - const optimisticOnPostReply = useCallback( + const optimisticOnPostReply = useNonReactiveCallback( (payload: OnPostSuccessData) => { if (payload) { const {replyToUri, posts} = payload @@ -114,9 +115,8 @@ export function PostThread({uri}: {uri: string}) { } } }, - [thread], ) - const onReplyToAnchor = useCallback(() => { + const onReplyToAnchor = useNonReactiveCallback(() => { if (anchor?.type !== 'threadPost') { return } @@ -143,13 +143,7 @@ export function PostThread({uri}: {uri: string}) { reqId: anchorPostSource.post.reqId, }) } - }, [ - anchor, - openComposer, - optimisticOnPostReply, - anchorPostSource, - feedFeedback, - ]) + }) const isRoot = !!anchor && anchor.value.post.record.reply === undefined const canReply = !anchor?.value.post?.viewer?.replyDisabled