diff options
Diffstat (limited to 'src/state/cache')
-rw-r--r-- | src/state/cache/post-shadow.ts | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/state/cache/post-shadow.ts b/src/state/cache/post-shadow.ts index b37e9bd42..65300a8ef 100644 --- a/src/state/cache/post-shadow.ts +++ b/src/state/cache/post-shadow.ts @@ -1,5 +1,9 @@ import {useEffect, useMemo, useState} from 'react' -import {AppBskyFeedDefs} from '@atproto/api' +import { + AppBskyEmbedRecord, + AppBskyEmbedRecordWithMedia, + AppBskyFeedDefs, +} from '@atproto/api' import {QueryClient} from '@tanstack/react-query' import EventEmitter from 'eventemitter3' @@ -16,6 +20,7 @@ export interface PostShadow { likeUri: string | undefined repostUri: string | undefined isDeleted: boolean + embed: AppBskyEmbedRecord.View | AppBskyEmbedRecordWithMedia.View | undefined } export const POST_TOMBSTONE = Symbol('PostTombstone') @@ -87,8 +92,21 @@ function mergeShadow( repostCount = Math.max(0, repostCount) } + let embed: typeof post.embed + if ('embed' in shadow) { + if ( + (AppBskyEmbedRecord.isView(post.embed) && + AppBskyEmbedRecord.isView(shadow.embed)) || + (AppBskyEmbedRecordWithMedia.isView(post.embed) && + AppBskyEmbedRecordWithMedia.isView(shadow.embed)) + ) { + embed = shadow.embed + } + } + return castAsShadow({ ...post, + embed: embed || post.embed, likeCount: likeCount, repostCount: repostCount, viewer: { |