filter out muted/blocked convos from share menu (#8802)

This commit is contained in:
Samuel Newman
2025-08-12 02:56:46 +03:00
committed by GitHub
parent 9dfddd3c42
commit 3ce14b0c6f
@@ -4,10 +4,12 @@ import {msg, Trans} from '@lingui/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {useNavigation} from '@react-navigation/native' import {useNavigation} from '@react-navigation/native'
import {isBlockedOrBlocking, isMuted} from '#/lib/moderation/blocked-and-muted'
import {type NavigationProp} from '#/lib/routes/types' import {type NavigationProp} from '#/lib/routes/types'
import {sanitizeDisplayName} from '#/lib/strings/display-names' import {sanitizeDisplayName} from '#/lib/strings/display-names'
import {sanitizeHandle} from '#/lib/strings/handles' import {sanitizeHandle} from '#/lib/strings/handles'
import {logger} from '#/logger' import {logger} from '#/logger'
import {useProfileShadow} from '#/state/cache/profile-shadow'
import {useModerationOpts} from '#/state/preferences/moderation-opts' import {useModerationOpts} from '#/state/preferences/moderation-opts'
import {useListConvosQuery} from '#/state/queries/messages/list-conversations' import {useListConvosQuery} from '#/state/queries/messages/list-conversations'
import {useSession} from '#/state/session' import {useSession} from '#/state/session'
@@ -57,7 +59,11 @@ export function RecentChats({postUri}: {postUri: string}) {
member => member.did !== currentAccount?.did, member => member.did !== currentAccount?.did,
) )
if (!otherMember || otherMember.handle === 'missing.invalid') if (
!otherMember ||
otherMember.handle === 'missing.invalid' ||
convo.muted
)
return null return null
return ( return (
@@ -87,7 +93,7 @@ export function RecentChats({postUri}: {postUri: string}) {
const WIDTH = 80 const WIDTH = 80
function RecentChatItem({ function RecentChatItem({
profile, profile: profileUnshadowed,
onPress, onPress,
moderationOpts, moderationOpts,
}: { }: {
@@ -98,6 +104,8 @@ function RecentChatItem({
const {_} = useLingui() const {_} = useLingui()
const t = useTheme() const t = useTheme()
const profile = useProfileShadow(profileUnshadowed)
const moderation = moderateProfile(profile, moderationOpts) const moderation = moderateProfile(profile, moderationOpts)
const name = sanitizeDisplayName( const name = sanitizeDisplayName(
profile.displayName || sanitizeHandle(profile.handle), profile.displayName || sanitizeHandle(profile.handle),
@@ -105,6 +113,10 @@ function RecentChatItem({
) )
const verification = useSimpleVerificationState({profile}) const verification = useSimpleVerificationState({profile})
if (isBlockedOrBlocking(profile) || isMuted(profile)) {
return null
}
return ( return (
<Button <Button
onPress={onPress} onPress={onPress}