prepareMessage

suspend fun prepareMessage(commandId: CommandId, conversationId: ConversationId, content: MessageContent, sources: List<MediaPreparation>, replyTo: MessageId? = null, draftToConsume: ConversationDraft? = null): PendingMediaMessage

Persist an attachment-dependent message before Android starts any file or HTTP effect.

Android should privately stage each source first and pass only its stable fingerprint. Pass the exact portable composer snapshot as draftToConsume, persisting it with AccountConversations.saveDraft first when local edits are ahead of debounce. Rust clears it in this transaction only while the stored semantic content still matches. A newer autosave and every replay of the same commandId are preserved.

Guide