Tighten up parseEmbed, dogfood

This commit is contained in:
Eric Bailey
2025-01-08 19:20:21 -06:00
parent c488e92bcc
commit 27fe2606af
+21 -9
View File
@@ -9,7 +9,7 @@ import {
AppBskyLabelerDefs, AppBskyLabelerDefs,
} from '@atproto/api' } from '@atproto/api'
export type View = export type Embed =
| { | {
type: 'post' type: 'post'
view: AppBskyEmbedRecord.ViewRecord view: AppBskyEmbedRecord.ViewRecord
@@ -56,13 +56,17 @@ export type View =
} }
| { | {
type: 'post_with_media' type: 'post_with_media'
view: View | undefined view: Embed
media: View | undefined media: Embed
}
| {
type: 'unknown'
view: null
} }
export function parseEmbedRecordView({ export type EmbedType<T extends Embed['type']> = Extract<Embed, {type: T}>
record,
}: AppBskyEmbedRecord.View): View | undefined { export function parseEmbedRecordView({record}: AppBskyEmbedRecord.View): Embed {
if (AppBskyEmbedRecord.isViewRecord(record)) { if (AppBskyEmbedRecord.isViewRecord(record)) {
return { return {
type: 'post', type: 'post',
@@ -103,12 +107,15 @@ export function parseEmbedRecordView({
type: 'starter_pack', type: 'starter_pack',
view: record, view: record,
} }
} else {
return {
type: 'unknown',
view: null,
}
} }
} }
export function parseEmbed( export function parseEmbed(embed: AppBskyFeedDefs.PostView['embed']): Embed {
embed: AppBskyFeedDefs.PostView['embed'],
): View | undefined {
if (AppBskyEmbedImages.isView(embed)) { if (AppBskyEmbedImages.isView(embed)) {
return { return {
type: 'images', type: 'images',
@@ -132,5 +139,10 @@ export function parseEmbed(
view: parseEmbedRecordView(embed.record), view: parseEmbedRecordView(embed.record),
media: parseEmbed(embed.media), media: parseEmbed(embed.media),
} }
} else {
return {
type: 'unknown',
view: null,
}
} }
} }