From feb2b762658383b8a4829b8adcbb37299e5693fe Mon Sep 17 00:00:00 2001 From: Eric Bailey Date: Thu, 9 Apr 2026 15:52:45 -0500 Subject: [PATCH] [APP-1775] Handle labels on actor statuses (#9716) (cherry picked from commit 8c9a11dc3fb4bea27d276278e057f6116ed96154) --- package.json | 2 +- .../liveNow/components/LiveStatusDialog.tsx | 147 +++++++++++++----- src/features/liveNow/index.tsx | 31 +++- yarn.lock | 40 ++++- 4 files changed, 167 insertions(+), 53 deletions(-) diff --git a/package.json b/package.json index 21973ba6d4..ce4353c3d6 100644 --- a/package.json +++ b/package.json @@ -81,7 +81,7 @@ "icons:optimize": "svgo -f ./assets/icons" }, "dependencies": { - "@atproto/api": "^0.19.6", + "@atproto/api": "^0.19.8", "@bitdrift/react-native": "^0.6.8", "@braintree/sanitize-url": "^6.0.2", "@bsky.app/alf": "^0.1.7", diff --git a/src/features/liveNow/components/LiveStatusDialog.tsx b/src/features/liveNow/components/LiveStatusDialog.tsx index 7ffc7ab51a..e351a406d0 100644 --- a/src/features/liveNow/components/LiveStatusDialog.tsx +++ b/src/features/liveNow/components/LiveStatusDialog.tsx @@ -1,10 +1,12 @@ -import {useCallback} from 'react' +import {useCallback, useMemo} from 'react' import {View} from 'react-native' import {Image} from 'expo-image' -import {type AppBskyActorDefs, type AppBskyEmbedExternal} from '@atproto/api' -import {msg} from '@lingui/core/macro' -import {useLingui} from '@lingui/react' -import {Trans} from '@lingui/react/macro' +import { + type AppBskyActorDefs, + type AppBskyEmbedExternal, + moderateStatus, +} from '@atproto/api' +import {Trans, useLingui} from '@lingui/react/macro' import {useNavigation} from '@react-navigation/native' import {useQueryClient} from '@tanstack/react-query' @@ -19,8 +21,10 @@ import {Button, ButtonIcon, ButtonText} from '#/components/Button' import * as Dialog from '#/components/Dialog' import {CircleInfo_Stroke2_Corner0_Rounded as CircleInfoIcon} from '#/components/icons/CircleInfo' import {Globe_Stroke2_Corner0_Rounded} from '#/components/icons/Globe' +import {Image_Stroke2_Corner0_Rounded as ImageIcon} from '#/components/icons/Image' import {SquareArrowTopRight_Stroke2_Corner0_Rounded as SquareArrowTopRightIcon} from '#/components/icons/SquareArrowTopRight' import {createStaticClick, SimpleInlineLinkText} from '#/components/Link' +import * as Hider from '#/components/moderation/Hider' import {useGlobalReportDialogControl} from '#/components/moderation/ReportDialog' import * as ProfileCard from '#/components/ProfileCard' import {Text} from '#/components/Typography' @@ -64,7 +68,7 @@ function DialogInner({ navigation: NavigationProp status: AppBskyActorDefs.StatusView }) { - const {_} = useLingui() + const {t: l} = useLingui() const control = Dialog.useDialogContext() const onPressOpenProfile = useCallback(() => { @@ -77,7 +81,7 @@ function DialogInner({ return ( void }) { const ax = useAnalytics() - const {_} = useLingui() + const {t: l} = useLingui() const t = useTheme() const queryClient = useQueryClient() const openLink = useOpenLink() const moderationOpts = useModerationOpts() const reportDialogControl = useGlobalReportDialogControl() const dialogContext = Dialog.useDialogContext() + const moderation = useMemo(() => { + return moderateStatus(profile, moderationOpts!) + }, [profile, moderationOpts]) return ( <> {embed.external.thumb && ( - - - - + + + + + + + + + + + )}