11use crate :: cli:: Context ;
22use crate :: db:: Order ;
3+ use crate :: parser:: common:: {
4+ print_info_line, print_key_value, print_no_data_message, print_section_header,
5+ } ;
6+ use crate :: parser:: dms:: print_direct_messages;
37use crate :: util:: { fetch_events_list, Event , ListKind } ;
48use anyhow:: Result ;
5- use comfy_table:: modifiers:: UTF8_ROUND_CORNERS ;
6- use comfy_table:: presets:: UTF8_FULL ;
7- use comfy_table:: Table ;
89use mostro_core:: prelude:: * ;
910use nostr_sdk:: prelude:: * ;
1011
@@ -23,15 +24,19 @@ pub async fn execute_get_dm_user(since: &i64, ctx: &Context) -> Result<()> {
2324
2425 // Check if the trade keys are empty
2526 if trade_keys_hex. is_empty ( ) {
26- println ! ( "No trade keys found in orders" ) ;
27+ print_no_data_message ( "No trade keys found in orders" ) ;
2728 return Ok ( ( ) ) ;
2829 }
2930
30- // Print the number of trade keys
31- println ! (
32- "Searching for DMs in {} trade keys..." ,
33- trade_keys_hex. len( )
31+ print_section_header ( "📨 Fetch User Direct Messages" ) ;
32+ print_key_value (
33+ "🔍" ,
34+ "Searching for DMs in trade keys" ,
35+ & format ! ( "{}" , trade_keys_hex. len( ) ) ,
3436 ) ;
37+ print_key_value ( "⏰" , "Since" , & format ! ( "{} minutes ago" , since) ) ;
38+ print_info_line ( "💡" , "Fetching direct messages..." ) ;
39+ println ! ( ) ;
3540
3641 let direct_messages = fetch_events_list (
3742 ListKind :: DirectMessagesUser ,
@@ -47,7 +52,7 @@ pub async fn execute_get_dm_user(since: &i64, ctx: &Context) -> Result<()> {
4752 let mut dm_events: Vec < ( Message , u64 , PublicKey ) > = Vec :: new ( ) ;
4853 // Check if the direct messages are empty
4954 if direct_messages. is_empty ( ) {
50- println ! ( "You don't have any direct messages in your trade keys" ) ;
55+ print_no_data_message ( "You don't have any direct messages in your trade keys" ) ;
5156 return Ok ( ( ) ) ;
5257 }
5358 // Extract the direct messages
@@ -57,32 +62,6 @@ pub async fn execute_get_dm_user(since: &i64, ctx: &Context) -> Result<()> {
5762 }
5863 }
5964
60- let mut table = Table :: new ( ) ;
61- table
62- . load_preset ( UTF8_FULL )
63- . apply_modifier ( UTF8_ROUND_CORNERS )
64- . set_content_arrangement ( comfy_table:: ContentArrangement :: Dynamic )
65- . set_header ( vec ! [ "Time" , "From" , "Message" ] ) ;
66-
67- for ( message, created_at, sender_pubkey) in dm_events. iter ( ) {
68- let datetime = chrono:: DateTime :: from_timestamp ( * created_at as i64 , 0 ) ;
69- let formatted_date = match datetime {
70- Some ( dt) => dt. format ( "%Y-%m-%d %H:%M:%S" ) . to_string ( ) ,
71- None => "Invalid timestamp" . to_string ( ) ,
72- } ;
73-
74- let inner = message. get_inner_message_kind ( ) ;
75- let message_str = match & inner. payload {
76- Some ( Payload :: TextMessage ( text) ) => text. clone ( ) ,
77- _ => format ! ( "{:?}" , message) ,
78- } ;
79-
80- let sender_hex = sender_pubkey. to_hex ( ) ;
81-
82- table. add_row ( vec ! [ & formatted_date, & sender_hex, & message_str] ) ;
83- }
84-
85- println ! ( "{table}" ) ;
86- println ! ( ) ;
65+ print_direct_messages ( & dm_events, Some ( ctx. mostro_pubkey ) ) . await ?;
8766 Ok ( ( ) )
8867}
0 commit comments