diff options
Diffstat (limited to 'src/components/moderation')
-rw-r--r-- | src/components/moderation/ModerationDetailsDialog.tsx | 19 | ||||
-rw-r--r-- | src/components/moderation/PostAlerts.tsx | 14 |
2 files changed, 27 insertions, 6 deletions
diff --git a/src/components/moderation/ModerationDetailsDialog.tsx b/src/components/moderation/ModerationDetailsDialog.tsx index b8f02582c..d95717cf4 100644 --- a/src/components/moderation/ModerationDetailsDialog.tsx +++ b/src/components/moderation/ModerationDetailsDialog.tsx @@ -8,17 +8,19 @@ import {useModerationCauseDescription} from '#/lib/moderation/useModerationCause import {makeProfileLink} from '#/lib/routes/links' import {listUriToHref} from '#/lib/strings/url-helpers' import {isNative} from '#/platform/detection' +import {useSession} from '#/state/session' import {atoms as a, useTheme} from '#/alf' import * as Dialog from '#/components/Dialog' import {Divider} from '#/components/Divider' import {InlineLinkText} from '#/components/Link' +import {AppModerationCause} from '#/components/Pills' import {Text} from '#/components/Typography' export {useDialogControl as useModerationDetailsDialogControl} from '#/components/Dialog' export interface ModerationDetailsDialogProps { control: Dialog.DialogOuterProps['control'] - modcause?: ModerationCause + modcause?: ModerationCause | AppModerationCause } export function ModerationDetailsDialog(props: ModerationDetailsDialogProps) { @@ -39,6 +41,7 @@ function ModerationDetailsDialogInner({ const t = useTheme() const {_} = useLingui() const desc = useModerationCauseDescription(modcause) + const {currentAccount} = useSession() let name let description @@ -105,6 +108,14 @@ function ModerationDetailsDialogInner({ } else if (modcause.type === 'hidden') { name = _(msg`Post Hidden by You`) description = _(msg`You have hidden this post.`) + } else if (modcause.type === 'reply-hidden') { + const isYou = currentAccount?.did === modcause.source.did + name = isYou + ? _(msg`Reply Hidden by You`) + : _(msg`Reply Hidden by Thread Author`) + description = isYou + ? _(msg`You hid this reply.`) + : _(msg`The author of this thread has hidden this reply.`) } else if (modcause.type === 'label') { name = desc.name description = desc.description @@ -119,12 +130,12 @@ function ModerationDetailsDialogInner({ <Text style={[t.atoms.text, a.text_2xl, a.font_bold, a.mb_sm]}> {name} </Text> - <Text style={[t.atoms.text, a.text_md, a.mb_lg, a.leading_snug]}> + <Text style={[t.atoms.text, a.text_md, a.leading_snug]}> {description} </Text> {modcause?.type === 'label' && ( - <> + <View style={[a.pt_lg]}> <Divider /> <Text style={[t.atoms.text, a.text_md, a.leading_snug, a.mt_lg]}> {modcause.source.type === 'user' ? ( @@ -143,7 +154,7 @@ function ModerationDetailsDialogInner({ </Trans> )} </Text> - </> + </View> )} {isNative && <View style={{height: 40}} />} diff --git a/src/components/moderation/PostAlerts.tsx b/src/components/moderation/PostAlerts.tsx index efbf18219..6c4e5f8c8 100644 --- a/src/components/moderation/PostAlerts.tsx +++ b/src/components/moderation/PostAlerts.tsx @@ -1,6 +1,6 @@ import React from 'react' import {StyleProp, ViewStyle} from 'react-native' -import {ModerationUI} from '@atproto/api' +import {ModerationCause, ModerationUI} from '@atproto/api' import {getModerationCauseKey} from '#/lib/moderation' import * as Pills from '#/components/Pills' @@ -9,13 +9,15 @@ export function PostAlerts({ modui, size = 'sm', style, + additionalCauses, }: { modui: ModerationUI size?: Pills.CommonProps['size'] includeMute?: boolean style?: StyleProp<ViewStyle> + additionalCauses?: ModerationCause[] | Pills.AppModerationCause[] }) { - if (!modui.alert && !modui.inform) { + if (!modui.alert && !modui.inform && !additionalCauses?.length) { return null } @@ -37,6 +39,14 @@ export function PostAlerts({ noBg={size === 'sm'} /> ))} + {additionalCauses?.map(cause => ( + <Pills.Label + key={getModerationCauseKey(cause)} + cause={cause} + size={size} + noBg={size === 'sm'} + /> + ))} </Pills.Row> ) } |