diff options
Diffstat (limited to 'src/view/com')
-rw-r--r-- | src/view/com/notifications/FeedItem.tsx | 49 | ||||
-rw-r--r-- | src/view/com/util/images/ImageHorzList.tsx | 61 |
2 files changed, 5 insertions, 105 deletions
diff --git a/src/view/com/notifications/FeedItem.tsx b/src/view/com/notifications/FeedItem.tsx index 3e8f8d86d..b1cf3b485 100644 --- a/src/view/com/notifications/FeedItem.tsx +++ b/src/view/com/notifications/FeedItem.tsx @@ -8,9 +8,6 @@ import { } from 'react-native' import { AppBskyActorDefs, - AppBskyEmbedExternal, - AppBskyEmbedImages, - AppBskyEmbedRecordWithMedia, AppBskyFeedDefs, AppBskyFeedPost, AppBskyGraphFollow, @@ -25,7 +22,6 @@ import {useLingui} from '@lingui/react' import {useNavigation} from '@react-navigation/native' import {useQueryClient} from '@tanstack/react-query' -import {parseTenorGif} from '#/lib/strings/embed-player' import {logger} from '#/logger' import {FeedNotification} from '#/state/queries/notifications/feed' import {useAnimatedValue} from 'lib/hooks/useAnimatedValue' @@ -52,11 +48,11 @@ import {PersonPlus_Filled_Stroke2_Corner0_Rounded as PersonPlusIcon} from '#/com import {Repost_Stroke2_Corner2_Rounded as RepostIcon} from '#/components/icons/Repost' import {StarterPack} from '#/components/icons/StarterPack' import {Link as NewLink} from '#/components/Link' +import * as MediaPreview from '#/components/MediaPreview' import {ProfileHoverCard} from '#/components/ProfileHoverCard' import {Notification as StarterPackCard} from '#/components/StarterPack/StarterPackCard' import {FeedSourceCard} from '../feeds/FeedSourceCard' import {Post} from '../post/Post' -import {ImageHorzList} from '../util/images/ImageHorzList' import {Link, TextLink} from '../util/Link' import {formatCount} from '../util/numeric/format' import {Text} from '../util/text/Text' @@ -593,49 +589,14 @@ function AdditionalPostText({post}: {post?: AppBskyFeedDefs.PostView}) { const pal = usePalette('default') if (post && AppBskyFeedPost.isRecord(post?.record)) { const text = post.record.text - let images - let isGif = false - - if (AppBskyEmbedImages.isView(post.embed)) { - images = post.embed.images - } else if ( - AppBskyEmbedRecordWithMedia.isView(post.embed) && - AppBskyEmbedImages.isView(post.embed.media) - ) { - images = post.embed.media.images - } else if ( - AppBskyEmbedExternal.isView(post.embed) && - post.embed.external.thumb - ) { - let url: URL | undefined - try { - url = new URL(post.embed.external.uri) - } catch {} - if (url) { - const {success} = parseTenorGif(url) - if (success) { - isGif = true - images = [ - { - thumb: post.embed.external.thumb, - alt: post.embed.external.title, - fullsize: post.embed.external.thumb, - }, - ] - } - } - } return ( <> {text?.length > 0 && <Text style={pal.textLight}>{text}</Text>} - {images && images.length > 0 && ( - <ImageHorzList - images={images} - style={styles.additionalPostImages} - gif={isGif} - /> - )} + <MediaPreview.Embed + embed={post.embed} + style={styles.additionalPostImages} + /> </> ) } diff --git a/src/view/com/util/images/ImageHorzList.tsx b/src/view/com/util/images/ImageHorzList.tsx deleted file mode 100644 index bade2a444..000000000 --- a/src/view/com/util/images/ImageHorzList.tsx +++ /dev/null @@ -1,61 +0,0 @@ -import React from 'react' -import {StyleProp, StyleSheet, View, ViewStyle} from 'react-native' -import {Image} from 'expo-image' -import {AppBskyEmbedImages} from '@atproto/api' -import {Trans} from '@lingui/macro' - -import {atoms as a} from '#/alf' -import {Text} from '#/components/Typography' - -interface Props { - images: AppBskyEmbedImages.ViewImage[] - style?: StyleProp<ViewStyle> - gif?: boolean -} - -export function ImageHorzList({images, style, gif}: Props) { - return ( - <View style={[a.flex_row, a.gap_xs, style]}> - {images.map(({thumb, alt}) => ( - <View - key={thumb} - style={[a.relative, a.flex_1, {aspectRatio: 1, maxWidth: 100}]}> - <Image - key={thumb} - source={{uri: thumb}} - style={[a.flex_1, a.rounded_xs]} - accessible={true} - accessibilityIgnoresInvertColors - accessibilityHint={alt} - accessibilityLabel="" - /> - {gif && ( - <View style={styles.altContainer}> - <Text style={styles.alt}> - <Trans>GIF</Trans> - </Text> - </View> - )} - </View> - ))} - </View> - ) -} - -const styles = StyleSheet.create({ - altContainer: { - backgroundColor: 'rgba(0, 0, 0, 0.75)', - borderRadius: 6, - paddingHorizontal: 6, - paddingVertical: 3, - position: 'absolute', - right: 5, - bottom: 5, - zIndex: 2, - }, - alt: { - color: 'white', - fontSize: 7, - fontWeight: 'bold', - }, -}) |