forked from
jollywhoppers.com/witchsky.app
Bluesky app fork with some witchin' additions 馃挮
1import {useCallback} from 'react'
2import {type AppBskyActorDefs} from '@atproto/api'
3import {msg} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
5
6import {logger} from '#/logger'
7import {useVerificationsRemoveMutation} from '#/state/queries/verification/useVerificationsRemoveMutation'
8import * as Toast from '#/view/com/util/Toast'
9import {type DialogControlProps} from '#/components/Dialog'
10import * as Prompt from '#/components/Prompt'
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`), 'xmark')
35 logger.error('Failed to remove verification', {
36 safeMessage: e,
37 })
38 }
39 }, [_, profile, verifications, remove, onConfirmInner])
40
41 return (
42 <Prompt.Basic
43 control={control}
44 title={_(msg`Remove your verification for this account?`)}
45 onConfirm={onConfirm}
46 confirmButtonCta={_(msg`Remove verification`)}
47 confirmButtonColor="negative"
48 />
49 )
50}