import React from 'react' import {Image} from 'expo-image' import {Text} from '../text/Text' import {StyleSheet, View} from 'react-native' import {usePalette} from 'lib/hooks/usePalette' import {AppBskyEmbedExternal} from '@atproto/api' import {isDesktopWeb} from 'platform/detection' import {toNiceDomain} from 'lib/strings/url-helpers' export const ExternalLinkEmbed = ({ link, imageChild, }: { link: AppBskyEmbedExternal.ViewExternal imageChild?: React.ReactNode }) => { const pal = usePalette('default') return ( {link.thumb ? ( {imageChild} ) : undefined} {toNiceDomain(link.uri)} {link.title || link.uri} {link.description ? ( {link.description} ) : undefined} ) } const styles = StyleSheet.create({ extContainer: { flexDirection: isDesktopWeb ? 'row' : 'column', }, extInner: { paddingHorizontal: isDesktopWeb ? 14 : 10, paddingTop: 8, paddingBottom: 10, flex: isDesktopWeb ? 1 : undefined, }, extImageContainer: isDesktopWeb ? { borderTopLeftRadius: 6, borderBottomLeftRadius: 6, width: 120, aspectRatio: 1, overflow: 'hidden', } : { borderTopLeftRadius: 6, borderTopRightRadius: 6, width: '100%', height: 200, overflow: 'hidden', }, extImage: { width: '100%', height: 200, }, extUri: { marginTop: 2, }, extDescription: { marginTop: 4, }, })