diff --git a/src/components/live/LiveStatusDialog.tsx b/src/components/live/LiveStatusDialog.tsx
index f15650e485..2d84275478 100644
--- a/src/components/live/LiveStatusDialog.tsx
+++ b/src/components/live/LiveStatusDialog.tsx
@@ -17,6 +17,12 @@ import {unstableCacheProfileView} from '#/state/queries/profile'
import {android, atoms as a, platform, tokens, useTheme, web} from '#/alf'
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 {createStaticClick, SimpleInlineLinkText} from '#/components/Link'
+import {
+ ReportDialog,
+ useReportDialogControl,
+} from '#/components/moderation/ReportDialog'
import * as ProfileCard from '#/components/ProfileCard'
import {Text} from '#/components/Typography'
import type * as bsky from '#/types/bsky'
@@ -94,6 +100,7 @@ export function LiveStatus({
const queryClient = useQueryClient()
const openLink = useOpenLink()
const moderationOpts = useModerationOpts()
+ const reportDialogControl = useReportDialogControl()
return (
<>
@@ -205,16 +212,38 @@ export function LiveStatus({
)}
-
- Live feature is in beta testing
-
+
+
+
+ Live feature is in beta
+
+
+ {
+ reportDialogControl.open()
+ })}
+ style={[a.text_sm, a.underline, t.atoms.text_contrast_medium]}>
+ Report
+
+
+
+
>
)
}
diff --git a/src/components/moderation/ReportDialog/action.ts b/src/components/moderation/ReportDialog/action.ts
index 1c35bd0494..e7e88ac265 100644
--- a/src/components/moderation/ReportDialog/action.ts
+++ b/src/components/moderation/ReportDialog/action.ts
@@ -70,6 +70,7 @@ export function useSubmitReportMutation() {
}
break
}
+ case 'status':
case 'post':
case 'list':
case 'feed':
diff --git a/src/components/moderation/ReportDialog/copy.ts b/src/components/moderation/ReportDialog/copy.ts
index 1027673b12..5fb2ad326d 100644
--- a/src/components/moderation/ReportDialog/copy.ts
+++ b/src/components/moderation/ReportDialog/copy.ts
@@ -14,6 +14,12 @@ export function useCopyForSubject(subject: ParsedReportSubject) {
subtitle: _(msg`Why should this user be reviewed?`),
}
}
+ case 'status': {
+ return {
+ title: _(msg`Report this livestream`),
+ subtitle: _(msg`Why should this livestream be reviewed?`),
+ }
+ }
case 'post': {
return {
title: _(msg`Report this post`),
diff --git a/src/components/moderation/ReportDialog/types.ts b/src/components/moderation/ReportDialog/types.ts
index 6df3a82ff6..42fcf7c25e 100644
--- a/src/components/moderation/ReportDialog/types.ts
+++ b/src/components/moderation/ReportDialog/types.ts
@@ -18,6 +18,7 @@ export type ReportSubject =
| $Typed
| $Typed
| $Typed
+ | $Typed
| $Typed
| $Typed
| $Typed
@@ -38,6 +39,12 @@ export type ParsedReportSubject =
quote: boolean
}
}
+ | {
+ type: 'status'
+ uri: string
+ cid: string
+ nsid: string
+ }
| {
type: 'list'
uri: string
diff --git a/src/components/moderation/ReportDialog/utils/parseReportSubject.ts b/src/components/moderation/ReportDialog/utils/parseReportSubject.ts
index 0abfe1d9fd..70db23900e 100644
--- a/src/components/moderation/ReportDialog/utils/parseReportSubject.ts
+++ b/src/components/moderation/ReportDialog/utils/parseReportSubject.ts
@@ -1,5 +1,6 @@
import {
AppBskyActorDefs,
+ AppBskyActorStatus,
AppBskyFeedDefs,
AppBskyFeedPost,
AppBskyGraphDefs,
@@ -33,6 +34,21 @@ export function parseReportSubject(
did: subject.did,
nsid: 'app.bsky.actor.profile',
}
+ } else if (AppBskyActorDefs.isStatusView(subject)) {
+ const record = subject.record
+ if (
+ bsky.dangerousIsType(
+ record,
+ AppBskyActorStatus.isRecord,
+ )
+ ) {
+ return {
+ type: 'status',
+ uri: subject.uri,
+ cid: subject.cid,
+ nsid: 'app.bsky.actor.status',
+ }
+ }
} else if (AppBskyGraphDefs.isListView(subject)) {
return {
type: 'list',