diff options
author | Paul Frazee <pfrazee@gmail.com> | 2024-03-18 16:15:57 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-18 16:15:57 -0700 |
commit | 959121f394cd92a5931d618d1cadf6315663c59c (patch) | |
tree | 14b2affadf6ac3cc780d4e9339e4e0c42adfb95e /src/components/ReportDialog/index.tsx | |
parent | 1b10c7bc08cf517d2b3a943d8f8949ccc012028b (diff) | |
download | voidsky-959121f394cd92a5931d618d1cadf6315663c59c.tar.zst |
Update the reporting flow to first select a recipient if the user has multiple labelers (#3258)
Diffstat (limited to 'src/components/ReportDialog/index.tsx')
-rw-r--r-- | src/components/ReportDialog/index.tsx | 54 |
1 files changed, 38 insertions, 16 deletions
diff --git a/src/components/ReportDialog/index.tsx b/src/components/ReportDialog/index.tsx index b35727c7d..f01ff3f3b 100644 --- a/src/components/ReportDialog/index.tsx +++ b/src/components/ReportDialog/index.tsx @@ -12,9 +12,11 @@ import * as Dialog from '#/components/Dialog' import {Text} from '#/components/Typography' import {ReportDialogProps} from './types' +import {SelectLabelerView} from './SelectLabelerView' import {SelectReportOptionView} from './SelectReportOptionView' import {SubmitView} from './SubmitView' import {useDelayedLoading} from '#/components/hooks/useDelayedLoading' +import {AppBskyLabelerDefs} from '@atproto/api' export function ReportDialog(props: ReportDialogProps) { return ( @@ -33,9 +35,6 @@ function ReportDialogInner(props: ReportDialogProps) { error, } = useMyLabelersQuery() const isLoading = useDelayedLoading(500, isLabelerLoading) - const [selectedReportOption, setSelectedReportOption] = React.useState< - ReportOption | undefined - >() return ( <Dialog.ScrollableInner label="Report Dialog"> @@ -51,23 +50,46 @@ function ReportDialogInner(props: ReportDialogProps) { <Trans>Something went wrong, please try again.</Trans> </Text> </View> - ) : selectedReportOption ? ( - <SubmitView - {...props} - labelers={labelers} - selectedReportOption={selectedReportOption} - goBack={() => setSelectedReportOption(undefined)} - onSubmitComplete={() => props.control.close()} - /> ) : ( - <SelectReportOptionView - {...props} - labelers={labelers} - onSelectReportOption={setSelectedReportOption} - /> + <ReportDialogLoaded labelers={labelers} {...props} /> )} <Dialog.Close /> </Dialog.ScrollableInner> ) } + +function ReportDialogLoaded( + props: ReportDialogProps & { + labelers: AppBskyLabelerDefs.LabelerViewDetailed[] + }, +) { + const [selectedLabeler, setSelectedLabeler] = React.useState< + string | undefined + >(props.labelers.length === 1 ? props.labelers[0].creator.did : undefined) + const [selectedReportOption, setSelectedReportOption] = React.useState< + ReportOption | undefined + >() + + if (selectedReportOption && selectedLabeler) { + return ( + <SubmitView + {...props} + selectedLabeler={selectedLabeler} + selectedReportOption={selectedReportOption} + goBack={() => setSelectedReportOption(undefined)} + onSubmitComplete={() => props.control.close()} + /> + ) + } + if (selectedLabeler) { + return ( + <SelectReportOptionView + {...props} + goBack={() => setSelectedLabeler(undefined)} + onSelectReportOption={setSelectedReportOption} + /> + ) + } + return <SelectLabelerView {...props} onSelectLabeler={setSelectedLabeler} /> +} |