import React from 'react' import {View} from 'react-native' import {AppBskyLabelerDefs} from '@atproto/api' import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' import {ReportOption, useReportOptions} from '#/lib/moderation/useReportOptions' import {Link} from '#/components/Link' import {DMCA_LINK} from '#/components/ReportDialog/const' export {useDialogControl as useReportDialogControl} from '#/components/Dialog' import {atoms as a, useBreakpoints, useTheme} from '#/alf' import { Button, ButtonIcon, ButtonText, useButtonContext, } from '#/components/Button' import {Divider} from '#/components/Divider' import { ChevronLeft_Stroke2_Corner0_Rounded as ChevronLeft, ChevronRight_Stroke2_Corner0_Rounded as ChevronRight, } from '#/components/icons/Chevron' import {SquareArrowTopRight_Stroke2_Corner0_Rounded as SquareArrowTopRight} from '#/components/icons/SquareArrowTopRight' import {Text} from '#/components/Typography' import {ReportDialogProps} from './types' export function SelectReportOptionView({ ...props }: ReportDialogProps & { labelers: AppBskyLabelerDefs.LabelerViewDetailed[] onSelectReportOption: (reportOption: ReportOption) => void goBack: () => void }) { const t = useTheme() const {_} = useLingui() const {gtMobile} = useBreakpoints() const allReportOptions = useReportOptions() const reportOptions = allReportOptions[props.params.type] const i18n = React.useMemo(() => { let title = _(msg`Report this content`) let description = _(msg`Why should this content be reviewed?`) if (props.params.type === 'account') { title = _(msg`Report this user`) description = _(msg`Why should this user be reviewed?`) } else if (props.params.type === 'post') { title = _(msg`Report this post`) description = _(msg`Why should this post be reviewed?`) } else if (props.params.type === 'list') { title = _(msg`Report this list`) description = _(msg`Why should this list be reviewed?`) } else if (props.params.type === 'feedgen') { title = _(msg`Report this feed`) description = _(msg`Why should this feed be reviewed?`) } return { title, description, } }, [_, props.params.type]) return ( {props.labelers?.length > 1 ? ( ) : null} {i18n.title} {i18n.description} {reportOptions.map(reportOption => { return ( ) })} {(props.params.type === 'post' || props.params.type === 'account') && ( Need to report a copyright violation? View details )} ) } function ReportOptionButton({ title, description, }: { title: string description: string }) { const t = useTheme() const {hovered, pressed} = useButtonContext() const interacted = hovered || pressed return ( {title} {description} ) }