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 (
<>
>
)
}