diff options
Diffstat (limited to 'src/lib/api/index.ts')
-rw-r--r-- | src/lib/api/index.ts | 38 |
1 files changed, 27 insertions, 11 deletions
diff --git a/src/lib/api/index.ts b/src/lib/api/index.ts index 94c8869a1..fa2e4ba6c 100644 --- a/src/lib/api/index.ts +++ b/src/lib/api/index.ts @@ -3,12 +3,14 @@ import { AppBskyEmbedImages, AppBskyEmbedRecord, AppBskyEmbedRecordWithMedia, + AppBskyEmbedVideo, AppBskyFeedPostgate, + AtUri, + BlobRef, BskyAgent, ComAtprotoLabelDefs, RichText, } from '@atproto/api' -import {AtUri} from '@atproto/api' import {logger} from '#/logger' import {writePostgateRecord} from '#/state/queries/postgate' @@ -43,10 +45,7 @@ interface PostOpts { uri: string cid: string } - video?: { - uri: string - cid: string - } + video?: BlobRef extLink?: ExternalEmbedDraft images?: ImageModel[] labels?: string[] @@ -61,18 +60,16 @@ export async function post(agent: BskyAgent, opts: PostOpts) { | AppBskyEmbedImages.Main | AppBskyEmbedExternal.Main | AppBskyEmbedRecord.Main + | AppBskyEmbedVideo.Main | AppBskyEmbedRecordWithMedia.Main | undefined let reply - let rt = new RichText( - {text: opts.rawText.trimEnd()}, - { - cleanNewlines: true, - }, - ) + let rt = new RichText({text: opts.rawText.trimEnd()}, {cleanNewlines: true}) opts.onStateChange?.('Processing...') + await rt.detectFacets(agent) + rt = shortenLinks(rt) rt = stripInvalidMentions(rt) @@ -129,6 +126,25 @@ export async function post(agent: BskyAgent, opts: PostOpts) { } } + // add video embed if present + if (opts.video) { + if (opts.quote) { + embed = { + $type: 'app.bsky.embed.recordWithMedia', + record: embed, + media: { + $type: 'app.bsky.embed.video', + video: opts.video, + } as AppBskyEmbedVideo.Main, + } as AppBskyEmbedRecordWithMedia.Main + } else { + embed = { + $type: 'app.bsky.embed.video', + video: opts.video, + } as AppBskyEmbedVideo.Main + } + } + // add external embed if present if (opts.extLink && !opts.images?.length) { if (opts.extLink.embed) { |