diff options
-rw-r--r-- | src/lib/embeds.ts | 24 | ||||
-rw-r--r-- | src/view/com/post-thread/PostThreadItem.tsx | 34 | ||||
-rw-r--r-- | src/view/com/posts/FeedItem.tsx | 5 | ||||
-rw-r--r-- | src/view/com/util/moderation/PostAlerts.tsx | 6 |
4 files changed, 63 insertions, 6 deletions
diff --git a/src/lib/embeds.ts b/src/lib/embeds.ts new file mode 100644 index 000000000..a758987b2 --- /dev/null +++ b/src/lib/embeds.ts @@ -0,0 +1,24 @@ +import { + AppBskyFeedDefs, + AppBskyEmbedRecord, + AppBskyEmbedRecordWithMedia, +} from '@atproto/api' + +export function isEmbedByEmbedder( + embed: AppBskyFeedDefs.PostView['embed'], + did: string, +): boolean { + if (!embed) { + return false + } + if (AppBskyEmbedRecord.isViewRecord(embed.record)) { + return embed.record.author.did === did + } + if ( + AppBskyEmbedRecordWithMedia.isView(embed) && + AppBskyEmbedRecord.isViewRecord(embed.record.record) + ) { + return embed.record.record.author.did === did + } + return true +} diff --git a/src/view/com/post-thread/PostThreadItem.tsx b/src/view/com/post-thread/PostThreadItem.tsx index 8b556cea3..5b5fee0ca 100644 --- a/src/view/com/post-thread/PostThreadItem.tsx +++ b/src/view/com/post-thread/PostThreadItem.tsx @@ -19,6 +19,7 @@ import {niceDate} from 'lib/strings/time' import {sanitizeDisplayName} from 'lib/strings/display-names' import {sanitizeHandle} from 'lib/strings/handles' import {pluralize} from 'lib/strings/helpers' +import {isEmbedByEmbedder} from 'lib/embeds' import {getTranslatorLink, isPostInLanguage} from '../../../locale/helpers' import {useStores} from 'state/index' import {PostMeta} from '../util/PostMeta' @@ -59,6 +60,7 @@ export const PostThreadItem = observer(function PostThreadItem({ const itemTitle = `Post by ${item.post.author.handle}` const authorHref = makeProfileLink(item.post.author) const authorTitle = item.post.author.handle + const isAuthorMuted = item.post.author.viewer?.muted const likesHref = React.useMemo(() => { const urip = new AtUri(item.post.uri) return makeProfileLink(item.post.author, 'post', urip.rkey, 'liked-by') @@ -224,6 +226,30 @@ export const PostThreadItem = observer(function PostThreadItem({ </View> </View> <View style={styles.meta}> + {isAuthorMuted && ( + <View + style={[ + pal.viewLight, + { + flexDirection: 'row', + alignItems: 'center', + gap: 4, + borderRadius: 6, + paddingHorizontal: 6, + paddingVertical: 2, + marginRight: 4, + }, + ]}> + <FontAwesomeIcon + icon={['far', 'eye-slash']} + size={12} + color={pal.colors.textLight} + /> + <Text type="sm-medium" style={pal.textLight}> + Muted + </Text> + </View> + )} <Link style={styles.metaItem} href={authorHref} @@ -280,7 +306,13 @@ export const PostThreadItem = observer(function PostThreadItem({ </View> ) : undefined} {item.post.embed && ( - <ContentHider moderation={item.moderation.embed} style={s.mb10}> + <ContentHider + moderation={item.moderation.embed} + ignoreMute={isEmbedByEmbedder( + item.post.embed, + item.post.author.did, + )} + style={s.mb10}> <PostEmbeds embed={item.post.embed} moderation={item.moderation.embed} diff --git a/src/view/com/posts/FeedItem.tsx b/src/view/com/posts/FeedItem.tsx index c46411f0f..e11f258a5 100644 --- a/src/view/com/posts/FeedItem.tsx +++ b/src/view/com/posts/FeedItem.tsx @@ -28,6 +28,7 @@ import {sanitizeDisplayName} from 'lib/strings/display-names' import {sanitizeHandle} from 'lib/strings/handles' import {getTranslatorLink, isPostInLanguage} from '../../../locale/helpers' import {makeProfileLink} from 'lib/routes/links' +import {isEmbedByEmbedder} from 'lib/embeds' export const FeedItem = observer(function ({ item, @@ -292,6 +293,10 @@ export const FeedItem = observer(function ({ <ContentHider testID="contentHider-embed" moderation={item.moderation.embed} + ignoreMute={isEmbedByEmbedder( + item.post.embed, + item.post.author.did, + )} style={styles.embed}> <PostEmbeds embed={item.post.embed} diff --git a/src/view/com/util/moderation/PostAlerts.tsx b/src/view/com/util/moderation/PostAlerts.tsx index 8a6cbbb85..604b80988 100644 --- a/src/view/com/util/moderation/PostAlerts.tsx +++ b/src/view/com/util/moderation/PostAlerts.tsx @@ -9,7 +9,6 @@ import {useStores} from 'state/index' export function PostAlerts({ moderation, - includeMute, style, }: { moderation: ModerationUI @@ -19,10 +18,7 @@ export function PostAlerts({ const store = useStores() const pal = usePalette('default') - const shouldAlert = - !!moderation.cause && - (moderation.alert || - (includeMute && moderation.blur && moderation.cause?.type === 'muted')) + const shouldAlert = !!moderation.cause && moderation.alert if (!shouldAlert) { return null } |