diff --git a/src/types/atproto/post.ts b/src/types/atproto/post.ts index 085a2a96e0..225726f41c 100644 --- a/src/types/atproto/post.ts +++ b/src/types/atproto/post.ts @@ -9,7 +9,7 @@ import { AppBskyLabelerDefs, } from '@atproto/api' -export type View = +export type Embed = | { type: 'post' view: AppBskyEmbedRecord.ViewRecord @@ -56,13 +56,17 @@ export type View = } | { type: 'post_with_media' - view: View | undefined - media: View | undefined + view: Embed + media: Embed + } + | { + type: 'unknown' + view: null } -export function parseEmbedRecordView({ - record, -}: AppBskyEmbedRecord.View): View | undefined { +export type EmbedType = Extract + +export function parseEmbedRecordView({record}: AppBskyEmbedRecord.View): Embed { if (AppBskyEmbedRecord.isViewRecord(record)) { return { type: 'post', @@ -103,12 +107,15 @@ export function parseEmbedRecordView({ type: 'starter_pack', view: record, } + } else { + return { + type: 'unknown', + view: null, + } } } -export function parseEmbed( - embed: AppBskyFeedDefs.PostView['embed'], -): View | undefined { +export function parseEmbed(embed: AppBskyFeedDefs.PostView['embed']): Embed { if (AppBskyEmbedImages.isView(embed)) { return { type: 'images', @@ -132,5 +139,10 @@ export function parseEmbed( view: parseEmbedRecordView(embed.record), media: parseEmbed(embed.media), } + } else { + return { + type: 'unknown', + view: null, + } } }