11use crate :: cli:: Context ;
2- use crate :: { db:: Order , util:: get_direct_messages_from_trade_keys} ;
2+ use crate :: db:: Order ;
3+ use crate :: util:: { fetch_events_list, Event , ListKind } ;
34use anyhow:: Result ;
45use comfy_table:: modifiers:: UTF8_ROUND_CORNERS ;
56use comfy_table:: presets:: UTF8_FULL ;
67use comfy_table:: Table ;
78use mostro_core:: prelude:: * ;
9+ use nostr_sdk:: prelude:: * ;
810
911pub async fn execute_get_dm_user ( since : & i64 , ctx : & Context ) -> Result < ( ) > {
1012 // Get all trade keys from orders
@@ -19,28 +21,41 @@ pub async fn execute_get_dm_user(since: &i64, ctx: &Context) -> Result<()> {
1921 trade_keys_hex. sort ( ) ;
2022 trade_keys_hex. dedup ( ) ;
2123
24+ // Check if the trade keys are empty
2225 if trade_keys_hex. is_empty ( ) {
2326 println ! ( "No trade keys found in orders" ) ;
2427 return Ok ( ( ) ) ;
2528 }
2629
30+ // Print the number of trade keys
2731 println ! (
2832 "Searching for DMs in {} trade keys..." ,
2933 trade_keys_hex. len( )
3034 ) ;
3135
32- let direct_messages = get_direct_messages_from_trade_keys (
33- & ctx. client ,
34- trade_keys_hex,
35- * since,
36- & ctx. mostro_pubkey ,
36+ let direct_messages = fetch_events_list (
37+ ListKind :: DirectMessagesUser ,
38+ None ,
39+ None ,
40+ None ,
41+ ctx,
42+ Some ( since) ,
3743 )
3844 . await ?;
3945
46+ // Extract (Message, u64) tuples from Event::MessageTuple variants
47+ let mut dm_events: Vec < ( Message , u64 , PublicKey ) > = Vec :: new ( ) ;
48+ // Check if the direct messages are empty
4049 if direct_messages. is_empty ( ) {
4150 println ! ( "You don't have any direct messages in your trade keys" ) ;
4251 return Ok ( ( ) ) ;
4352 }
53+ // Extract the direct messages
54+ for event in direct_messages {
55+ if let Event :: MessageTuple ( tuple) = event {
56+ dm_events. push ( * tuple) ;
57+ }
58+ }
4459
4560 let mut table = Table :: new ( ) ;
4661 table
@@ -49,7 +64,7 @@ pub async fn execute_get_dm_user(since: &i64, ctx: &Context) -> Result<()> {
4964 . set_content_arrangement ( comfy_table:: ContentArrangement :: Dynamic )
5065 . set_header ( vec ! [ "Time" , "From" , "Message" ] ) ;
5166
52- for ( message, created_at, sender_pubkey) in direct_messages . iter ( ) {
67+ for ( message, created_at, sender_pubkey) in dm_events . iter ( ) {
5368 let datetime = chrono:: DateTime :: from_timestamp ( * created_at as i64 , 0 ) ;
5469 let formatted_date = match datetime {
5570 Some ( dt) => dt. format ( "%Y-%m-%d %H:%M:%S" ) . to_string ( ) ,
0 commit comments