import {StyleSheet, View} from 'react-native' import {AppBskyFeedDefs, type ModerationDecision} from '@atproto/api' import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' import {isReasonFeedSource, type ReasonFeedSource} from '#/lib/api/feed/types' import {createSanitizedDisplayName} from '#/lib/moderation/create-sanitized-display-name' import {makeProfileLink} from '#/lib/routes/links' import {useSession} from '#/state/session' import {atoms as a, useTheme} from '#/alf' import {Pin_Stroke2_Corner0_Rounded as PinIcon} from '#/components/icons/Pin' import {Repost_Stroke2_Corner3_Rounded as RepostIcon} from '#/components/icons/Repost' import {Link} from '#/components/Link' import {ProfileHoverCard} from '#/components/ProfileHoverCard' import {Text} from '#/components/Typography' import {FeedNameText} from '../util/FeedInfoText' export function PostFeedReason({ reason, moderation, onOpenReposter, }: { reason: | ReasonFeedSource | AppBskyFeedDefs.ReasonRepost | AppBskyFeedDefs.ReasonPin | {[k: string]: unknown; $type: string} moderation?: ModerationDecision onOpenReposter?: () => void }) { const t = useTheme() const {_} = useLingui() const {currentAccount} = useSession() if (isReasonFeedSource(reason)) { return ( From{' '} ) } if (AppBskyFeedDefs.isReasonRepost(reason)) { const isOwner = reason.by.did === currentAccount?.did const reskeeter = createSanitizedDisplayName( reason.by, false, moderation?.ui('displayName'), ) return ( {isOwner ? ( Reposted by you ) : ( Reposted by {reskeeter} )} ) } if (AppBskyFeedDefs.isReasonPin(reason)) { return ( Pinned ) } } const styles = StyleSheet.create({ includeReason: { flexDirection: 'row', alignItems: 'center', marginBottom: 2, marginLeft: -16, }, })