import React from 'react' import {View} from 'react-native' import {ModerationCause} from '@atproto/api' import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' import {useModerationCauseDescription} from '#/lib/moderation/useModerationCauseDescription' import {makeProfileLink} from '#/lib/routes/links' import {listUriToHref} from '#/lib/strings/url-helpers' import {isNative} from '#/platform/detection' import {atoms as a, useTheme} from '#/alf' import * as Dialog from '#/components/Dialog' import {Divider} from '#/components/Divider' import {InlineLinkText} from '#/components/Link' import {Text} from '#/components/Typography' export {useDialogControl as useModerationDetailsDialogControl} from '#/components/Dialog' export interface ModerationDetailsDialogProps { control: Dialog.DialogOuterProps['control'] modcause: ModerationCause } export function ModerationDetailsDialog(props: ModerationDetailsDialogProps) { return ( ) } function ModerationDetailsDialogInner({ modcause, control, }: ModerationDetailsDialogProps & { control: Dialog.DialogOuterProps['control'] }) { const t = useTheme() const {_} = useLingui() const desc = useModerationCauseDescription(modcause) let name let description if (!modcause) { name = _(msg`Content Warning`) description = _( msg`Moderator has chosen to set a general warning on the content.`, ) } else if (modcause.type === 'blocking') { if (modcause.source.type === 'list') { const list = modcause.source.list name = _(msg`User Blocked by List`) description = ( This user is included in the{' '} {list.name} {' '} list which you have blocked. ) } else { name = _(msg`User Blocked`) description = _( msg`You have blocked this user. You cannot view their content.`, ) } } else if (modcause.type === 'blocked-by') { name = _(msg`User Blocks You`) description = _( msg`This user has blocked you. You cannot view their content.`, ) } else if (modcause.type === 'block-other') { name = _(msg`Content Not Available`) description = _( msg`This content is not available because one of the users involved has blocked the other.`, ) } else if (modcause.type === 'muted') { if (modcause.source.type === 'list') { const list = modcause.source.list name = _(msg`Account Muted by List`) description = ( This user is included in the{' '} {list.name} {' '} list which you have muted. ) } else { name = _(msg`Account Muted`) description = _(msg`You have muted this account.`) } } else if (modcause.type === 'mute-word') { name = _(msg`Post Hidden by Muted Word`) description = _(msg`You've chosen to hide a word or tag within this post.`) } else if (modcause.type === 'hidden') { name = _(msg`Post Hidden by You`) description = _(msg`You have hidden this post.`) } else if (modcause.type === 'label') { name = desc.name description = desc.description } else { // should never happen name = '' description = '' } return ( {name} {description} {modcause.type === 'label' && ( <> {modcause.source.type === 'user' ? ( This label was applied by the author. ) : ( This label was applied by{' '} control.close()} style={a.text_md}> {desc.source} . )} )} {isNative && } ) }