import {View} from 'react-native' import {type AppBskyActorDefs} from '@atproto/api' import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {isInvalidHandle, sanitizeHandle} from '#/lib/strings/handles' import {sanitizePronouns} from '#/lib/strings/pronouns' import {type Shadow} from '#/state/cache/types' import {useShowLinkInHandle} from '#/state/preferences/show-link-in-handle.tsx' import {atoms as a, useTheme, web} from '#/alf' import {InlineLinkText} from '#/components/Link.tsx' import {NewskieDialog} from '#/components/NewskieDialog' import {Text} from '#/components/Typography' import {IS_IOS, IS_NATIVE} from '#/env' export function ProfileHeaderHandle({ profile, disableTaps, }: { profile: Shadow disableTaps?: boolean }) { const t = useTheme() const {_} = useLingui() const invalidHandle = isInvalidHandle(profile.handle) const pronouns = profile.pronouns const isBskySocialHandle = profile.handle.endsWith('.bsky.social') const showProfileInHandle = useShowLinkInHandle() const sanitized = sanitizeHandle( profile.handle, '@', // forceLTR handled by CSS above on web IS_NATIVE, ) return ( {invalidHandle ? ( _(msg`⚠Invalid Handle`) ) : showProfileInHandle && !isBskySocialHandle ? ( {sanitized} ) : ( sanitized )} {pronouns && ( {sanitizePronouns(pronouns, IS_NATIVE)} )} ) }