diff --git a/src/view/com/util/post-ctrls/PostCtrls.tsx b/src/view/com/util/post-ctrls/PostCtrls.tsx index f73cede352..b61bad2ca9 100644 --- a/src/view/com/util/post-ctrls/PostCtrls.tsx +++ b/src/view/com/util/post-ctrls/PostCtrls.tsx @@ -26,6 +26,7 @@ import {makeProfileLink} from '#/lib/routes/links' import {shareUrl} from '#/lib/sharing' import {useGate} from '#/lib/statsig/statsig' import {toShareUrl} from '#/lib/strings/url-helpers' +import {useProfileShadow} from '#/state/cache/profile-shadow' import {Shadow} from '#/state/cache/types' import {useFeedFeedbackContext} from '#/state/feed-feedback' import { @@ -94,6 +95,15 @@ let PostCtrls = ({ post.author.viewer?.blockingByList, ) + const shadowedAuthor = useProfileShadow(post.author) + const followersCanReply = !!threadgateRecord?.allow?.find( + rule => rule.$type === 'app.bsky.feed.threadgate#followerRule', + ) + const canOverrideReplyDisabled = + followersCanReply && + shadowedAuthor.viewer?.following?.startsWith('at://did') + const replyDisabled = post.viewer?.replyDisabled && !canOverrideReplyDisabled + const shouldShowLoggedOutWarning = React.useMemo(() => { return ( post.author.did !== currentAccount?.did && @@ -247,13 +257,13 @@ let PostCtrls = ({ { - if (!post.viewer?.replyDisabled) { + if (!replyDisabled) { playHaptic('Light') requireAuth(() => onPressReply()) }