mostro_client/cli/
get_dm.rs1use anyhow::Result;
2use mostro_core::prelude::Message;
3use nostr_sdk::prelude::*;
4
5use crate::{
6 cli::Context,
7 parser::dms::print_direct_messages,
8 util::{fetch_events_list, Event, ListKind},
9};
10
11pub async fn execute_get_dm(
12 since: &i64,
13 admin: bool,
14 from_user: &bool,
15 ctx: &Context,
16) -> Result<()> {
17 let list_kind = match (admin, from_user) {
19 (true, true) => ListKind::PrivateDirectMessagesUser,
20 (true, false) => ListKind::DirectMessagesAdmin,
21 (false, true) => ListKind::PrivateDirectMessagesUser,
22 (false, false) => ListKind::DirectMessagesUser,
23 };
24
25 let all_fetched_events =
27 fetch_events_list(list_kind, None, None, None, ctx, Some(since)).await?;
28
29 let mut dm_events: Vec<(Message, u64, PublicKey)> = Vec::new();
31 for event in all_fetched_events {
32 if let Event::MessageTuple(tuple) = event {
33 dm_events.push(*tuple);
34 }
35 }
36
37 print_direct_messages(&dm_events, &ctx.pool).await?;
38 Ok(())
39}