import {View} from 'react-native' import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import { usePdsLabelEnabled, usePdsLabelHideBskyPds, } from '#/state/preferences/pds-label' import {usePdsFaviconQuery, usePdsLabelQuery} from '#/state/queries/pds-label' import {atoms as a, useBreakpoints} from '#/alf' import {Button} from '#/components/Button' import * as Dialog from '#/components/Dialog' import {PdsBadgeIcon, PdsDialog} from '#/components/PdsDialog' import {IS_WEB} from '#/env' export function PdsBadge({ did, handle, size, interactive = true, }: { did: string handle?: string size: 'lg' | 'md' | 'sm' interactive?: boolean }) { const enabled = usePdsLabelEnabled() const hideBskyPds = usePdsLabelHideBskyPds() const {data, isLoading} = usePdsLabelQuery(enabled ? did : undefined) const {data: faviconUrl} = usePdsFaviconQuery( data && !data.isBsky && !data.isBridged ? data.pdsUrl : undefined, ) const isBskyHandle = !!handle && (handle.endsWith('.bsky.social') || handle === 'bsky.social') if (!enabled) return null if (isLoading) return if (!data) return null if (hideBskyPds && data.isBsky) return null return ( ) } function PdsBadgeLoading({ size, isBsky = false, }: { size: 'lg' | 'md' | 'sm' isBsky?: boolean }) { const {gtPhone} = useBreakpoints() let dimensions = 12 if (size === 'lg') { dimensions = gtPhone ? 20 : 18 } else if (size === 'md') { dimensions = 14 } return ( ) } function PdsBadgeInner({ pdsUrl, faviconUrl, isBsky, isBridged, size, interactive, }: { pdsUrl: string faviconUrl: string | undefined isBsky: boolean isBridged: boolean size: 'lg' | 'md' | 'sm' interactive: boolean }) { const {_} = useLingui() const {gtPhone} = useBreakpoints() const dialogControl = Dialog.useDialogControl() let dimensions = 12 if (size === 'lg') { dimensions = gtPhone ? 20 : 18 } else if (size === 'md') { dimensions = 14 } const icon = ( ) if (!interactive) { return ( {icon} ) } return ( <> ) }