import {useCallback, useMemo} from 'react' import {View} from 'react-native' import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' import {useOpenLink} from '#/lib/hooks/useOpenLink' import {shareUrl} from '#/lib/sharing' import {isPossiblyAUrl, splitApexDomain} from '#/lib/strings/url-helpers' import {atoms as a, useBreakpoints, useTheme, web} from '#/alf' import {Button, ButtonText} from '#/components/Button' import * as Dialog from '#/components/Dialog' import {Text} from '#/components/Typography' import {useGlobalDialogsControlContext} from './Context' export function LinkWarningDialog() { const {linkWarningDialogControl} = useGlobalDialogsControlContext() return ( ) } function InAppBrowserConsentInner({ link, }: { link?: {href: string; displayText: string; share?: boolean} }) { const control = Dialog.useDialogContext() const {_} = useLingui() const t = useTheme() const openLink = useOpenLink() const {gtMobile} = useBreakpoints() const potentiallyMisleading = useMemo( () => link && isPossiblyAUrl(link.displayText), [link], ) const onPressVisit = useCallback(() => { control.close(() => { if (!link) return if (link.share) { shareUrl(link.href) } else { openLink(link.href, undefined, true) } }) }, [control, link, openLink]) const onCancel = useCallback(() => { control.close() }, [control]) return ( {potentiallyMisleading ? ( Potentially misleading link ) : ( Leaving Bluesky )} This link is taking you to the following website: {link && } {potentiallyMisleading && ( Make sure this is where you intend to go! )} ) } function LinkBox({href}: {href: string}) { const t = useTheme() const [scheme, hostname, rest] = useMemo(() => { try { const urlp = new URL(href) const [subdomain, apexdomain] = splitApexDomain(urlp.hostname) return [ urlp.protocol + '//' + subdomain, apexdomain, urlp.pathname.replace(/\/$/, '') + urlp.search + urlp.hash, ] } catch { return ['', href, ''] } }, [href]) return ( {scheme} {hostname} {rest} ) }