import React from 'react' import {View, Pressable} from 'react-native' import {Trans} from '@lingui/macro' import {useMyLabelersQuery} from '#/state/queries/preferences' import {ReportOption} from '#/lib/moderation/useReportOptions' export {useDialogControl as useReportDialogControl} from '#/components/Dialog' import {atoms as a} from '#/alf' import {Loader} from '#/components/Loader' 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 ( ) } function ReportDialogInner(props: ReportDialogProps) { const { isLoading: isLabelerLoading, data: labelers, error, } = useMyLabelersQuery() const isLoading = useDelayedLoading(500, isLabelerLoading) return ( {isLoading ? ( {/* Here to capture focus for a hot sec to prevent flash */} ) : error || !labelers ? ( Something went wrong, please try again. ) : ( )} ) } 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 ( setSelectedReportOption(undefined)} onSubmitComplete={() => props.control.close()} /> ) } if (selectedLabeler) { return ( setSelectedLabeler(undefined)} onSelectReportOption={setSelectedReportOption} /> ) } return }