diff --git a/src/state/models/cache/posts.ts b/src/state/models/cache/posts.ts
index 48621226a0..d3632f4363 100644
--- a/src/state/models/cache/posts.ts
+++ b/src/state/models/cache/posts.ts
@@ -1,6 +1,11 @@
import {LRUMap} from 'lru_map'
import {RootStoreModel} from '../root-store'
-import {AppBskyFeedDefs} from '@atproto/api'
+import {
+ AppBskyFeedDefs,
+ AppBskyEmbedRecord,
+ AppBskyEmbedRecordWithMedia,
+ AppBskyFeedPost,
+} from '@atproto/api'
type PostView = AppBskyFeedDefs.PostView
@@ -27,5 +32,39 @@ export class PostsCache {
) {
this.set(feedItem.reply.parent.uri, feedItem.reply.parent)
}
+ const embed = feedItem.post.embed
+ if (
+ AppBskyEmbedRecord.isView(embed) &&
+ AppBskyEmbedRecord.isViewRecord(embed.record) &&
+ AppBskyFeedPost.isRecord(embed.record.value) &&
+ AppBskyFeedPost.validateRecord(embed.record.value).success
+ ) {
+ this.set(embed.record.uri, embedViewToPostView(embed.record))
+ }
+ if (
+ AppBskyEmbedRecordWithMedia.isView(embed) &&
+ AppBskyEmbedRecord.isViewRecord(embed.record?.record) &&
+ AppBskyFeedPost.isRecord(embed.record.record.value) &&
+ AppBskyFeedPost.validateRecord(embed.record.record.value).success
+ ) {
+ this.set(
+ embed.record.record.uri,
+ embedViewToPostView(embed.record.record),
+ )
+ }
+ }
+}
+
+function embedViewToPostView(
+ embedView: AppBskyEmbedRecord.ViewRecord,
+): PostView {
+ return {
+ $type: 'app.bsky.feed.post#view',
+ uri: embedView.uri,
+ cid: embedView.cid,
+ author: embedView.author,
+ record: embedView.value,
+ indexedAt: embedView.indexedAt,
+ labels: embedView.labels,
}
}
diff --git a/src/view/com/notifications/FeedItem.tsx b/src/view/com/notifications/FeedItem.tsx
index ce9f5bc0d9..7b07bb30fb 100644
--- a/src/view/com/notifications/FeedItem.tsx
+++ b/src/view/com/notifications/FeedItem.tsx
@@ -171,7 +171,7 @@ export const FeedItem = observer(function ({
action = `liked your custom feed '${new AtUri(item.subjectUri).rkey}'`
icon = 'HeartIconSolid'
iconStyle = [
- s.red3 as FontAwesomeIconStyle,
+ s.likeColor as FontAwesomeIconStyle,
{position: 'relative', top: -4},
]
} else {
diff --git a/src/view/com/post-thread/PostThreadItem.tsx b/src/view/com/post-thread/PostThreadItem.tsx
index b5469c6fbf..c00e7a9c6d 100644
--- a/src/view/com/post-thread/PostThreadItem.tsx
+++ b/src/view/com/post-thread/PostThreadItem.tsx
@@ -252,7 +252,7 @@ export const PostThreadItem = observer(function PostThreadItem({
) : undefined}
{item.post.embed && (
-
+
)}
@@ -386,7 +386,7 @@ export const PostThreadItem = observer(function PostThreadItem({
) : undefined}
{item.post.embed && (
-
+
)}
{needsTranslation && (
diff --git a/src/view/com/post/Post.tsx b/src/view/com/post/Post.tsx
index 4b03d4667f..f6873b0a05 100644
--- a/src/view/com/post/Post.tsx
+++ b/src/view/com/post/Post.tsx
@@ -265,9 +265,11 @@ const PostLoaded = observer(
/>
) : undefined}
-
-
-
+ {item.post.embed ? (
+
+
+
+ ) : null}
{needsTranslation && (
diff --git a/src/view/com/posts/FeedItem.tsx b/src/view/com/posts/FeedItem.tsx
index 9750ee50d8..eecb4c5335 100644
--- a/src/view/com/posts/FeedItem.tsx
+++ b/src/view/com/posts/FeedItem.tsx
@@ -289,11 +289,13 @@ export const FeedItem = observer(function ({
/>
) : undefined}
-
-
-
+ {item.post.embed ? (
+
+
+
+ ) : null}
{needsTranslation && (
diff --git a/src/view/com/util/post-embeds/ExternalLinkEmbed.tsx b/src/view/com/util/post-embeds/ExternalLinkEmbed.tsx
index a4cbb3e291..d371cbfc8c 100644
--- a/src/view/com/util/post-embeds/ExternalLinkEmbed.tsx
+++ b/src/view/com/util/post-embeds/ExternalLinkEmbed.tsx
@@ -1,6 +1,6 @@
import React from 'react'
+import {Image} from 'expo-image'
import {Text} from '../text/Text'
-import {AutoSizedImage} from '../images/AutoSizedImage'
import {StyleSheet, View} from 'react-native'
import {usePalette} from 'lib/hooks/usePalette'
import {AppBskyEmbedExternal} from '@atproto/api'
@@ -16,9 +16,14 @@ export const ExternalLinkEmbed = ({
return (
<>
{link.thumb ? (
-
+
+
{imageChild}
-
+
) : undefined}
@@ -47,11 +52,16 @@ const styles = StyleSheet.create({
extInner: {
padding: 10,
},
- extImage: {
+ extImageContainer: {
borderTopLeftRadius: 6,
borderTopRightRadius: 6,
width: '100%',
- maxHeight: 200,
+ height: 200,
+ overflow: 'hidden',
+ },
+ extImage: {
+ width: '100%',
+ height: 200,
},
extUri: {
marginTop: 2,