Fix: distinguish between post media and quotes with the moderation hider (#2075)

* Fix: distinguish between post media and quotes with the moderation hider

* Type fixes
This commit is contained in:
Paul Frazee 2023-12-04 12:53:25 -08:00 committed by GitHub
parent a46059ca46
commit 37cafb080b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 74 additions and 10 deletions

View file

@ -16,6 +16,7 @@ import {
AppBskyFeedDefs,
AppBskyGraphDefs,
ModerationUI,
PostModeration,
} from '@atproto/api'
import {Link} from '../Link'
import {ImageLayoutGrid} from '../images/ImageLayoutGrid'
@ -28,8 +29,9 @@ import {getYoutubeVideoId} from 'lib/strings/url-helpers'
import {MaybeQuoteEmbed} from './QuoteEmbed'
import {AutoSizedImage} from '../images/AutoSizedImage'
import {ListEmbed} from './ListEmbed'
import {isCauseALabelOnUri} from 'lib/moderation'
import {isCauseALabelOnUri, isQuoteBlurred} from 'lib/moderation'
import {FeedSourceCard} from 'view/com/feeds/FeedSourceCard'
import {ContentHider} from '../moderation/ContentHider'
type Embed =
| AppBskyEmbedRecord.View
@ -41,10 +43,12 @@ type Embed =
export function PostEmbeds({
embed,
moderation,
moderationDecisions,
style,
}: {
embed?: Embed
moderation: ModerationUI
moderationDecisions?: PostModeration['decisions']
style?: StyleProp<ViewStyle>
}) {
const pal = usePalette('default')
@ -55,14 +59,17 @@ export function PostEmbeds({
// =
if (AppBskyEmbedRecordWithMedia.isView(embed)) {
const isModOnQuote =
AppBskyEmbedRecord.isViewRecord(embed.record.record) &&
isCauseALabelOnUri(moderation.cause, embed.record.record.uri)
(AppBskyEmbedRecord.isViewRecord(embed.record.record) &&
isCauseALabelOnUri(moderation.cause, embed.record.record.uri)) ||
(moderationDecisions && isQuoteBlurred(moderationDecisions))
const mediaModeration = isModOnQuote ? {} : moderation
const quoteModeration = isModOnQuote ? moderation : {}
return (
<View style={[styles.stackContainer, style]}>
<PostEmbeds embed={embed.media} moderation={mediaModeration} />
<MaybeQuoteEmbed embed={embed.record} moderation={quoteModeration} />
<ContentHider moderation={quoteModeration}>
<MaybeQuoteEmbed embed={embed.record} moderation={quoteModeration} />
</ContentHider>
</View>
)
}