diff --git a/src-tauri/src/commands/conversations.rs b/src-tauri/src/commands/conversations.rs
index 23ba28b1c..7db410a87 100644
--- a/src-tauri/src/commands/conversations.rs
+++ b/src-tauri/src/commands/conversations.rs
@@ -3,7 +3,10 @@ use std::collections::{HashMap, HashSet};
use crate::app_error::AppCommandError;
use crate::db::entities::conversation;
use crate::db::entities::folder::FolderKind;
-use crate::db::service::{conversation_service, folder_service, import_service, tab_service};
+use crate::db::service::{
+ conversation_composer_draft_service, conversation_service, folder_service, import_service,
+ tab_service,
+};
#[cfg(feature = "tauri-runtime")]
use crate::db::AppDatabase;
use crate::models::*;
@@ -26,9 +29,10 @@ use crate::parsers::{
ParseError,
};
use crate::web::event_bridge::{
- emit_event, ConversationChange, ConversationsBulkChanged, EventEmitter, ImportScanProgress,
- TabsChanged, CONVERSATIONS_BULK_CHANGED_EVENT, CONVERSATION_CHANGED_EVENT,
- IMPORT_SCAN_PROGRESS_EVENT, TABS_CHANGED_EVENT,
+ emit_event, ComposerDraftChanged, ConversationChange, ConversationsBulkChanged, EventEmitter,
+ ImportScanProgress, TabsChanged, COMPOSER_DRAFT_CHANGED_EVENT,
+ CONVERSATIONS_BULK_CHANGED_EVENT, CONVERSATION_CHANGED_EVENT, IMPORT_SCAN_PROGRESS_EVENT,
+ TABS_CHANGED_EVENT,
};
pub async fn list_all_conversations_core(
@@ -2000,6 +2004,70 @@ pub async fn update_conversation_pinned(
Ok(())
}
+/// Fetch the unsent composer text for a persisted conversation. `None` when
+/// no client has saved a draft yet. The body is only returned here — the
+/// WS notify never carries it.
+pub async fn get_composer_draft_core(
+ conn: &sea_orm::DatabaseConnection,
+ conversation_id: i32,
+) -> Result