mostro_client/cli/
dm_to_user.rs1use crate::{db::Order, util::send_gift_wrap_dm};
2use anyhow::Result;
3use nostr_sdk::prelude::*;
4use uuid::Uuid;
5
6pub async fn execute_dm_to_user(
7 receiver: PublicKey,
8 client: &Client,
9 order_id: &Uuid,
10 message: &str,
11) -> Result<()> {
12 let pool = crate::db::connect().await?;
13
14 let order = Order::get_by_id(&pool, &order_id.to_string())
15 .await
16 .map_err(|_| anyhow::anyhow!("order {} not found", order_id))?;
17 let trade_keys = match order.trade_keys.as_ref() {
18 Some(trade_keys) => Keys::parse(trade_keys)?,
19 None => anyhow::bail!("No trade_keys found for this order"),
20 };
21
22 println!("SENDING DM with trade keys: {}", trade_keys.public_key().to_hex());
23
24 send_gift_wrap_dm(client, &trade_keys, &receiver, message).await?;
25
26 Ok(())
27}