import React from 'react' import {View} from 'react-native' import {ComAtprotoModerationDefs} from '@atproto/api' import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' import {useMutation} from '@tanstack/react-query' import {BLUESKY_MOD_SERVICE_HEADERS} from '#/lib/constants' import {logger} from '#/state/ageAssurance/util' import {useAgent, useSession} from '#/state/session' import * as Toast from '#/view/com/util/Toast' import {atoms as a, useBreakpoints, web} from '#/alf' import {AgeAssuranceBadge} from '#/components/ageAssurance/AgeAssuranceBadge' import {Button, ButtonIcon, ButtonText} from '#/components/Button' import * as Dialog from '#/components/Dialog' import {Loader} from '#/components/Loader' import {Text} from '#/components/Typography' export function AgeAssuranceAppealDialog({ control, }: { control: Dialog.DialogControlProps }) { const {_} = useLingui() return ( ) } function Inner({control}: {control: Dialog.DialogControlProps}) { const {_} = useLingui() const {currentAccount} = useSession() const {gtPhone} = useBreakpoints() const agent = useAgent() const [details, setDetails] = React.useState('') const isInvalid = details.length > 1000 const {mutate, isPending} = useMutation({ mutationFn: async () => { logger.metric('ageAssurance:appealDialogSubmit', {}) await agent.createModerationReport( { reasonType: ComAtprotoModerationDefs.REASONAPPEAL, subject: { $type: 'com.atproto.admin.defs#repoRef', did: currentAccount?.did, }, reason: `AGE_ASSURANCE_INQUIRY: ` + details, }, { encoding: 'application/json', headers: BLUESKY_MOD_SERVICE_HEADERS, }, ) }, onError: err => { logger.error('AgeAssuranceAppealDialog failed', {safeMessage: err}) Toast.show( _(msg`Age assurance inquiry failed to send, please try again.`), 'xmark', ) }, onSuccess: () => { control.close() Toast.show( _( msg({ message: 'Age assurance inquiry was submitted', context: 'toast', }), ), ) }, }) return ( Contact us Please provide any additional details you feel moderators may need in order to properly assess your Age Assurance status. { setDetails(details) }} label={_(msg`Additional details (limit 1000 characters)`)} numberOfLines={4} onSubmitEditing={() => mutate()} /> ) }