import {useCallback, useState} from 'react' import {View} from 'react-native' import {type AppBskyActorDefs, ToolsOzoneReportDefs} from '@atproto/api' import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' import {useMutation} from '@tanstack/react-query' import {BLUESKY_MOD_SERVICE_HEADERS} from '#/lib/constants' import {logger} from '#/logger' import {useAgent} from '#/state/session' import {atoms as a, web} from '#/alf' import {Button, ButtonIcon, ButtonText} from '#/components/Button' import * as Dialog from '#/components/Dialog' import {Loader} from '#/components/Loader' import * as Toast from '#/components/Toast' import {Text} from '#/components/Typography' export function GoLiveDisabledDialog({ control, status, }: { control: Dialog.DialogControlProps status: AppBskyActorDefs.StatusView }) { return ( ) } export function DialogInner({ control, status, }: { control: Dialog.DialogControlProps status: AppBskyActorDefs.StatusView }) { const {_} = useLingui() const agent = useAgent() const [details, setDetails] = useState('') const {mutate, isPending} = useMutation({ mutationFn: async () => { if (!agent.session?.did) { throw new Error('Not logged in') } if (!status.uri || !status.cid) { throw new Error('Status is missing uri or cid') } if (__DEV__) { logger.info('Submitting go live appeal', { details, }) } else { await agent.createModerationReport( { reasonType: ToolsOzoneReportDefs.REASONAPPEAL, subject: { $type: 'com.atproto.repo.strongRef', uri: status.uri, cid: status.cid, }, reason: details, }, { encoding: 'application/json', headers: BLUESKY_MOD_SERVICE_HEADERS, }, ) } }, onError: () => { Toast.show(_(msg`Failed to submit appeal, please try again.`), { type: 'error', }) }, onSuccess: () => { control.close() Toast.show(_(msg({message: 'Appeal submitted', context: 'toast'})), { type: 'success', }) }, }) const onSubmit = useCallback(() => mutate(), [mutate]) return ( Going live is currently disabled for your account You are currently blocked from using the Go Live feature. To appeal this moderation decision, please submit the form below. This appeal will be sent to Bluesky's moderation service. ) }