Allow saving quote post drafts

This commit is contained in:
Eric Bailey
2026-01-29 15:56:38 -06:00
parent 9ff5b2da50
commit 4cd8c02b96
+20 -10
View File
@@ -1,13 +1,15 @@
/** /**
* Type converters for Draft API - convert between ComposerState and server Draft types. * Type converters for Draft API - convert between ComposerState and server Draft types.
*/ */
import {type AppBskyDraftDefs, RichText} from '@atproto/api' import {type AppBskyDraftDefs, AtUri, RichText} from '@atproto/api'
import {nanoid} from 'nanoid/non-secure' import {nanoid} from 'nanoid/non-secure'
import {resolveLink} from '#/lib/api/resolve'
import {getImageDim} from '#/lib/media/manip' import {getImageDim} from '#/lib/media/manip'
import {mimeToExt} from '#/lib/media/video/util' import {mimeToExt} from '#/lib/media/video/util'
import {type ComposerImage} from '#/state/gallery' import {type ComposerImage} from '#/state/gallery'
import {type Gif} from '#/state/queries/tenor' import {type Gif} from '#/state/queries/tenor'
import {createPublicAgent} from '#/state/session/agent'
import { import {
type ComposerState, type ComposerState,
type EmbedDraft, type EmbedDraft,
@@ -140,15 +142,21 @@ async function postDraftToServerPost(
// Add quote record embed // Add quote record embed
if (post.embed.quote) { if (post.embed.quote) {
draftPost.embedRecords = [ const resolved = await resolveLink(
{ createPublicAgent(),
$type: 'app.bsky.draft.defs#draftEmbedRecord', post.embed.quote.uri,
record: { )
uri: post.embed.quote.uri, if (resolved && resolved.type === 'record') {
cid: '', // We don't have the CID at draft time draftPost.embedRecords = [
{
$type: 'app.bsky.draft.defs#draftEmbedRecord',
record: {
uri: resolved.record.uri,
cid: resolved.record.cid,
},
}, },
}, ]
] }
} }
// Add external link embed (only if no media, otherwise it's ignored) // Add external link embed (only if no media, otherwise it's ignored)
@@ -536,7 +544,9 @@ export async function draftToComposerPosts(
// Restore quote embed // Restore quote embed
if (post.embedRecords && post.embedRecords.length > 0) { if (post.embedRecords && post.embedRecords.length > 0) {
const record = post.embedRecords[0] const record = post.embedRecords[0]
embed.quote = {type: 'link', uri: record.record.uri} const urip = new AtUri(record.record.uri)
const url = `https://bsky.app/profile/${urip.host}/post/${urip.rkey}`
embed.quote = {type: 'link', uri: url}
} }
// Restore link embed (only if not a GIF) // Restore link embed (only if not a GIF)