import {View} from 'react-native' import {msg} from '@lingui/macro' import {useLingui} from '@lingui/react' import {logger} from '#/logger' import {type Shadow} from '#/state/cache/types' import {atoms as a, useBreakpoints, useTheme} from '#/alf' import {Button} from '#/components/Button' import {useDialogControl} from '#/components/Dialog' import {useFullVerificationState} from '#/components/verification' import {type FullVerificationState} from '#/components/verification' import {VerificationCheck} from '#/components/verification/VerificationCheck' import {VerificationsDialog} from '#/components/verification/VerificationsDialog' import {VerifierDialog} from '#/components/verification/VerifierDialog' import type * as bsky from '#/types/bsky' export function shouldShowVerificationCheckButton( state: FullVerificationState, ) { let ok = false if (state.profile.role === 'default') { if (state.profile.isVerified) { ok = true } else if (state.profile.isViewer && state.profile.wasVerified) { ok = true } else if ( state.viewer.role === 'verifier' && state.viewer.hasIssuedVerification ) { ok = true } } else if (state.profile.role === 'verifier') { if (state.profile.isViewer) { ok = true } else if (state.profile.isVerified) { ok = true } } if ( !state.profile.showBadge && !state.profile.isViewer && !(state.viewer.role === 'verifier' && state.viewer.hasIssuedVerification) ) { ok = false } return ok } export function VerificationCheckButton({ profile, size, }: { profile: Shadow size: 'lg' | 'md' | 'sm' }) { const state = useFullVerificationState({ profile, }) if (shouldShowVerificationCheckButton(state)) { return } return null } export function Badge({ profile, verificationState: state, size, }: { profile: Shadow verificationState: FullVerificationState size: 'lg' | 'md' | 'sm' }) { const t = useTheme() const {_} = useLingui() const verificationsDialogControl = useDialogControl() const verifierDialogControl = useDialogControl() const {gtPhone} = useBreakpoints() let dimensions = 12 if (size === 'lg') { dimensions = gtPhone ? 20 : 18 } else if (size === 'md') { dimensions = 14 } const verifiedByHidden = !state.profile.showBadge && state.profile.isViewer return ( <> ) }