diff options
author | Hailey <me@haileyok.com> | 2024-06-26 17:24:33 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-26 17:24:33 -0700 |
commit | 878b0476dd94e187504f503438ca8914a48ac630 (patch) | |
tree | a51386f8b6f3e1e11b5b5d668f7a4f3f77b91e69 /src/view/com/util/post-embeds | |
parent | da4dfeb9cf6506ade2a9619921de128458c4d0d2 (diff) | |
download | voidsky-878b0476dd94e187504f503438ca8914a48ac630.tar.zst |
Better starterpack embed (#4659)
Diffstat (limited to 'src/view/com/util/post-embeds')
-rw-r--r-- | src/view/com/util/post-embeds/ExternalLinkEmbed.tsx | 76 |
1 files changed, 47 insertions, 29 deletions
diff --git a/src/view/com/util/post-embeds/ExternalLinkEmbed.tsx b/src/view/com/util/post-embeds/ExternalLinkEmbed.tsx index 3b2a12c24..f5f220c62 100644 --- a/src/view/com/util/post-embeds/ExternalLinkEmbed.tsx +++ b/src/view/com/util/post-embeds/ExternalLinkEmbed.tsx @@ -2,11 +2,17 @@ import React, {useCallback} from 'react' import {StyleProp, View, ViewStyle} from 'react-native' import {Image} from 'expo-image' import {AppBskyEmbedExternal} from '@atproto/api' +import {msg} from '@lingui/macro' +import {useLingui} from '@lingui/react' import {usePalette} from 'lib/hooks/usePalette' import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' import {shareUrl} from 'lib/sharing' import {parseEmbedPlayerFromUrl} from 'lib/strings/embed-player' +import { + getStarterPackOgCard, + parseStarterPackUri, +} from 'lib/strings/starter-pack' import {toNiceDomain} from 'lib/strings/url-helpers' import {isNative} from 'platform/detection' import {useExternalEmbedsPrefs} from 'state/preferences' @@ -28,10 +34,16 @@ export const ExternalLinkEmbed = ({ style?: StyleProp<ViewStyle> hideAlt?: boolean }) => { + const {_} = useLingui() const pal = usePalette('default') const {isMobile} = useWebMediaQueries() const externalEmbedPrefs = useExternalEmbedsPrefs() + const starterPackParsed = parseStarterPackUri(link.uri) + const imageUri = starterPackParsed + ? getStarterPackOgCard(starterPackParsed.name, starterPackParsed.rkey) + : link.thumb + const embedPlayerParams = React.useMemo(() => { const params = parseEmbedPlayerFromUrl(link.uri) @@ -47,15 +59,19 @@ export const ExternalLinkEmbed = ({ return ( <View style={[a.flex_col, a.rounded_sm, a.overflow_hidden, a.mt_sm]}> <LinkWrapper link={link} onOpen={onOpen} style={style}> - {link.thumb && !embedPlayerParams ? ( + {imageUri && !embedPlayerParams ? ( <Image style={{ aspectRatio: 1.91, borderTopRightRadius: 6, borderTopLeftRadius: 6, }} - source={{uri: link.thumb}} + source={{uri: imageUri}} accessibilityIgnoresInvertColors + accessibilityLabel={starterPackParsed ? link.title : undefined} + accessibilityHint={ + starterPackParsed ? _(msg`Navigate to starter pack`) : undefined + } /> ) : undefined} {embedPlayerParams?.isGif ? ( @@ -63,35 +79,37 @@ export const ExternalLinkEmbed = ({ ) : embedPlayerParams ? ( <ExternalPlayer link={link} params={embedPlayerParams} /> ) : undefined} - <View - style={[ - a.flex_1, - a.py_sm, - { - paddingHorizontal: isMobile ? 10 : 14, - }, - ]}> - <Text - type="sm" - numberOfLines={1} - style={[pal.textLight, {marginVertical: 2}]}> - {toNiceDomain(link.uri)} - </Text> - - {!embedPlayerParams?.isGif && !embedPlayerParams?.dimensions && ( - <Text type="lg-bold" numberOfLines={3} style={[pal.text]}> - {link.title || link.uri} - </Text> - )} - {link.description ? ( + {!starterPackParsed ? ( + <View + style={[ + a.flex_1, + a.py_sm, + { + paddingHorizontal: isMobile ? 10 : 14, + }, + ]}> <Text - type="md" - numberOfLines={link.thumb ? 2 : 4} - style={[pal.text, a.mt_xs]}> - {link.description} + type="sm" + numberOfLines={1} + style={[pal.textLight, {marginVertical: 2}]}> + {toNiceDomain(link.uri)} </Text> - ) : undefined} - </View> + + {!embedPlayerParams?.isGif && !embedPlayerParams?.dimensions && ( + <Text type="lg-bold" numberOfLines={3} style={[pal.text]}> + {link.title || link.uri} + </Text> + )} + {link.description ? ( + <Text + type="md" + numberOfLines={link.thumb ? 2 : 4} + style={[pal.text, a.mt_xs]}> + {link.description} + </Text> + ) : undefined} + </View> + ) : null} </LinkWrapper> </View> ) |