@atcute/bluesky
Version:
Bluesky (app.bsky.* and chat.bsky.*) schema definitions
96 lines • 2.87 kB
JavaScript
/**
* extracts raw media embed from a post record embed
* @param embed the embed interface to extract from
* @returns the extracted raw media embed, if any
*/
export const unwrapRawMediaEmbed = (embed) => {
switch (embed?.$type) {
case 'app.bsky.embed.recordWithMedia':
return embed.media;
case 'app.bsky.embed.record':
return;
}
return embed;
};
/**
* extracts raw record embed from a post record embed
* @param embed the embed interface to extract from
* @returns the extracted raw record embed, if any
*/
export const unwrapRawRecordEmbed = (embed) => {
switch (embed?.$type) {
case 'app.bsky.embed.recordWithMedia':
return embed.record;
case 'app.bsky.embed.record':
return embed;
}
};
/**
* extracts raw media and record embeds from a post record embed
* @param embed the embed interface to extract from
* @returns the extracted raw media and record embeds, if any
*/
export const unwrapRawEmbed = (embed) => {
return {
media: unwrapRawMediaEmbed(embed),
record: unwrapRawRecordEmbed(embed),
};
};
/**
* extracts media embed from a post embed
* @param embed the embed interface to extract from
* @returns the extracted media embed, if any
*/
export const unwrapMediaEmbed = (embed) => {
switch (embed?.$type) {
case 'app.bsky.embed.recordWithMedia#view':
return embed.media;
case 'app.bsky.embed.record#view':
return;
}
return embed;
};
/**
* extracts record embed from a post embed
* @param embed the embed interface to extract from
* @returns the extracted record embed, if any
*/
export const unwrapRecordEmbed = (embed) => {
switch (embed?.$type) {
case 'app.bsky.embed.recordWithMedia#view':
return embed.record.record;
case 'app.bsky.embed.record#view':
return embed.record;
}
};
/**
* extracts media and record embeds from a post embed
* @param embed the embed interface to extract from
* @returns the extracted media and record embeds, if any
*/
export const unwrapEmbed = (embed) => {
return {
media: unwrapMediaEmbed(embed),
record: unwrapRecordEmbed(embed),
};
};
/**
* get quote embed from a record embed
* @param embed the record embed to extract from
* @returns the extracted quote embed, if any
*/
export const unwrapQuoteEmbed = (embed) => {
switch (embed?.$type) {
case 'app.bsky.embed.record#viewRecord': {
return embed;
}
case 'app.bsky.embed.record#viewBlocked':
case 'app.bsky.embed.record#viewDetached':
case 'app.bsky.embed.record#viewNotFound': {
if (embed.uri.includes('/app.bsky.feed.post/')) {
return embed;
}
}
}
};
//# sourceMappingURL=embeds.js.map