Files
voice-to-notes/src-tauri/src/commands/export.rs

42 lines
1.0 KiB
Rust
Raw Normal View History

use serde_json::{json, Value};
use crate::sidecar::messages::IPCMessage;
use crate::sidecar::sidecar;
/// Export transcript to caption/text format via the Python sidecar.
#[tauri::command]
pub fn export_transcript(
segments: Value,
speakers: Value,
format: String,
output_path: String,
title: Option<String>,
) -> Result<Value, String> {
let manager = sidecar();
manager.ensure_running()?;
let request_id = uuid::Uuid::new_v4().to_string();
let msg = IPCMessage::new(
&request_id,
"export.start",
json!({
"segments": segments,
"speakers": speakers,
"format": format,
"output_path": output_path,
"title": title.unwrap_or_default(),
}),
);
let response = manager.send_and_receive(&msg)?;
if response.msg_type == "error" {
return Err(format!(
"Export error: {}",
response.payload.get("message").and_then(|v| v.as_str()).unwrap_or("unknown")
));
}
Ok(response.payload)
}