this repo has no description
1import {useCallback} from 'react'
2import {type AppBskyActorDefs} from '@atproto/api'
3import {msg} from '@lingui/core/macro'
4import {useLingui} from '@lingui/react'
5
6import {logger} from '#/logger'
7import {useVerificationsRemoveMutation} from '#/state/queries/verification/useVerificationsRemoveMutation'
8import {type DialogControlProps} from '#/components/Dialog'
9import * as Prompt from '#/components/Prompt'
10import * as Toast from '#/components/Toast'
11import type * as bsky from '#/types/bsky'
12
13export {useDialogControl as usePromptControl} from '#/components/Dialog'
14
15export function VerificationRemovePrompt({
16 control,
17 profile,
18 verifications,
19 onConfirm: onConfirmInner,
20}: {
21 control: DialogControlProps
22 profile: bsky.profile.AnyProfileView
23 verifications: AppBskyActorDefs.VerificationView[]
24 onConfirm?: () => void
25}) {
26 const {_} = useLingui()
27 const {mutateAsync: remove} = useVerificationsRemoveMutation()
28 const onConfirm = useCallback(async () => {
29 onConfirmInner?.()
30 try {
31 await remove({profile, verifications})
32 Toast.show(_(msg`Removed verification`))
33 } catch (e) {
34 Toast.show(_(msg`Failed to remove verification`), {
35 type: 'error',
36 })
37 logger.error('Failed to remove verification', {
38 safeMessage: e,
39 })
40 }
41 }, [_, profile, verifications, remove, onConfirmInner])
42
43 return (
44 <Prompt.Basic
45 control={control}
46 title={_(msg`Remove your verification for this account?`)}
47 onConfirm={onConfirm}
48 confirmButtonCta={_(msg`Remove verification`)}
49 confirmButtonColor="negative"
50 />
51 )
52}