Tighten up parseEmbed, dogfood
This commit is contained in:
@@ -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,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user