diff options
author | Paul Frazee <pfrazee@gmail.com> | 2024-03-19 11:38:17 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-19 11:38:17 -0700 |
commit | c9c3bd98b7418845c4e7ee64060a4362eb2e3128 (patch) | |
tree | 28a544ed1f2ed55722afbc12476fa5d1ab515b7a /src/components/ReportDialog | |
parent | 9277282e6c9ea90003a4ee583c862af6e96b5433 (diff) | |
download | voidsky-c9c3bd98b7418845c4e7ee64060a4362eb2e3128.tar.zst |
Rework the labeler selection step of the report flow (#3269)
* Rework the labeler selection step of the report flow * Fix: use gtMobile * Use primitives, fix avatar * Spacing tweaks * Show handle instead of description --------- Co-authored-by: Eric Bailey <git@esb.lol>
Diffstat (limited to 'src/components/ReportDialog')
-rw-r--r-- | src/components/ReportDialog/SelectLabelerView.tsx | 75 | ||||
-rw-r--r-- | src/components/ReportDialog/SelectReportOptionView.tsx | 5 |
2 files changed, 29 insertions, 51 deletions
diff --git a/src/components/ReportDialog/SelectLabelerView.tsx b/src/components/ReportDialog/SelectLabelerView.tsx index 300114fc4..817426355 100644 --- a/src/components/ReportDialog/SelectLabelerView.tsx +++ b/src/components/ReportDialog/SelectLabelerView.tsx @@ -5,12 +5,13 @@ import {useLingui} from '@lingui/react' import {AppBskyLabelerDefs} from '@atproto/api' export {useDialogControl as useReportDialogControl} from '#/components/Dialog' +import {getLabelingServiceTitle} from '#/lib/moderation' -import {atoms as a, useTheme} from '#/alf' +import {atoms as a, useTheme, useBreakpoints} from '#/alf' import {Text} from '#/components/Typography' import {Button, useButtonContext} from '#/components/Button' import {Divider} from '#/components/Divider' -import {ChevronRight_Stroke2_Corner0_Rounded as ChevronRight} from '#/components/icons/Chevron' +import * as LabelingServiceCard from '#/components/LabelingServiceCard' import {ReportDialogProps} from './types' @@ -22,31 +23,29 @@ export function SelectLabelerView({ }) { const t = useTheme() const {_} = useLingui() + const {gtMobile} = useBreakpoints() return ( <View style={[a.gap_lg]}> - <View style={[a.justify_center, a.gap_sm]}> + <View style={[a.justify_center, gtMobile ? a.gap_sm : a.gap_xs]}> <Text style={[a.text_2xl, a.font_bold]}> - <Trans>Select moderation service</Trans> + <Trans>Select moderator</Trans> </Text> <Text style={[a.text_md, t.atoms.text_contrast_medium]}> - <Trans>Who do you want to send this report to?</Trans> + <Trans>To whom would you like to send this report?</Trans> </Text> </View> <Divider /> - <View style={[a.gap_sm, {marginHorizontal: a.p_md.padding * -1}]}> + <View style={[a.gap_xs, {marginHorizontal: a.p_md.padding * -1}]}> {props.labelers.map(labeler => { return ( <Button key={labeler.creator.did} label={_(msg`Send report to ${labeler.creator.displayName}`)} onPress={() => props.onSelectLabeler(labeler.creator.did)}> - <LabelerButton - title={labeler.creator.displayName || labeler.creator.handle} - description={labeler.creator.description || ''} - /> + <LabelerButton labeler={labeler} /> </Button> ) })} @@ -56,11 +55,9 @@ export function SelectLabelerView({ } function LabelerButton({ - title, - description, + labeler, }: { - title: string - description: string + labeler: AppBskyLabelerDefs.LabelerViewDetailed }) { const t = useTheme() const {hovered, pressed} = useButtonContext() @@ -75,41 +72,21 @@ function LabelerButton({ }, [t]) return ( - <View - style={[ - a.w_full, - a.flex_row, - a.align_center, - a.justify_between, - a.p_md, - a.rounded_md, - {paddingRight: 70}, - interacted && styles.interacted, - ]}> - <View style={[a.flex_1, a.gap_xs]}> - <Text style={[a.text_md, a.font_bold, t.atoms.text_contrast_medium]}> - {title} - </Text> - <Text style={[a.leading_tight, {maxWidth: 400}]} numberOfLines={3}> - {description} - </Text> - </View> - - <View - style={[ - a.absolute, - a.inset_0, - a.justify_center, - a.pr_md, - {left: 'auto'}, - ]}> - <ChevronRight - size="md" - fill={ - hovered ? t.palette.primary_500 : t.atoms.text_contrast_low.color - } + <LabelingServiceCard.Outer + style={[a.p_md, a.rounded_sm, interacted && styles.interacted]}> + <LabelingServiceCard.Avatar avatar={labeler.creator.avatar} /> + <LabelingServiceCard.Content> + <LabelingServiceCard.Title + value={getLabelingServiceTitle({ + displayName: labeler.creator.displayName, + handle: labeler.creator.handle, + })} /> - </View> - </View> + <Text + style={[t.atoms.text_contrast_medium, a.text_sm, a.font_semibold]}> + @{labeler.creator.handle} + </Text> + </LabelingServiceCard.Content> + </LabelingServiceCard.Outer> ) } diff --git a/src/components/ReportDialog/SelectReportOptionView.tsx b/src/components/ReportDialog/SelectReportOptionView.tsx index 037a62fce..bacf5a867 100644 --- a/src/components/ReportDialog/SelectReportOptionView.tsx +++ b/src/components/ReportDialog/SelectReportOptionView.tsx @@ -9,7 +9,7 @@ import {DMCA_LINK} from '#/components/ReportDialog/const' import {Link} from '#/components/Link' export {useDialogControl as useReportDialogControl} from '#/components/Dialog' -import {atoms as a, useTheme} from '#/alf' +import {atoms as a, useTheme, useBreakpoints} from '#/alf' import {Text} from '#/components/Typography' import { Button, @@ -35,6 +35,7 @@ export function SelectReportOptionView({ }) { const t = useTheme() const {_} = useLingui() + const {gtMobile} = useBreakpoints() const allReportOptions = useReportOptions() const reportOptions = allReportOptions[props.params.type] @@ -76,7 +77,7 @@ export function SelectReportOptionView({ </Button> ) : null} - <View style={[a.justify_center, a.gap_sm]}> + <View style={[a.justify_center, gtMobile ? a.gap_sm : a.gap_xs]}> <Text style={[a.text_2xl, a.font_bold]}>{i18n.title}</Text> <Text style={[a.text_md, t.atoms.text_contrast_medium]}> {i18n.description} |