11use anyhow:: Result ;
2- use chrono:: DateTime ;
32use mostro_core:: prelude:: * ;
43use nostr_sdk:: prelude:: * ;
54
65use crate :: {
7- db:: { connect, Order , User } ,
8- parser:: dms:: parse_dm_events,
6+ db:: { connect, User } ,
7+ parser:: dms:: { parse_dm_events, print_direct_messages } ,
98 util:: { create_filter, ListKind } ,
109} ;
1110
@@ -14,11 +13,9 @@ pub async fn execute_get_dm(
1413 trade_index : i64 ,
1514 mostro_keys : & Keys ,
1615 client : & Client ,
17- _from_user : bool ,
1816 admin : bool ,
19- _mostro_pubkey : & PublicKey ,
2017) -> Result < ( ) > {
21- let mut dm: Vec < ( Message , u64 ) > = Vec :: new ( ) ;
18+ let mut dm: Vec < ( Message , u64 , PublicKey ) > = Vec :: new ( ) ;
2219 let pool = connect ( ) . await ?;
2320 if !admin {
2421 for index in 1 ..=trade_index {
@@ -39,79 +36,6 @@ pub async fn execute_get_dm(
3936 dm. extend ( dm_temp) ;
4037 }
4138
42- if dm. is_empty ( ) {
43- println ! ( ) ;
44- println ! ( "No new messages" ) ;
45- println ! ( ) ;
46- } else {
47- for m in dm. iter ( ) {
48- let message = m. 0 . get_inner_message_kind ( ) ;
49- let date = DateTime :: from_timestamp ( m. 1 as i64 , 0 ) . unwrap ( ) ;
50- if message. id . is_some ( ) {
51- println ! (
52- "Mostro sent you this message for order id: {} at {}" ,
53- m. 0 . get_inner_message_kind( ) . id. unwrap( ) ,
54- date
55- ) ;
56- }
57- if let Some ( payload) = & message. payload {
58- match payload {
59- Payload :: PaymentRequest ( _, inv, _) => {
60- println ! ( ) ;
61- println ! ( "Pay this invoice to continue --> {}" , inv) ;
62- println ! ( ) ;
63- }
64- Payload :: TextMessage ( text) => {
65- println ! ( ) ;
66- println ! ( "{text}" ) ;
67- println ! ( ) ;
68- }
69- Payload :: Dispute ( id, info) => {
70- println ! ( "Action: {}" , message. action) ;
71- println ! ( "Dispute id: {}" , id) ;
72- if let Some ( info) = info {
73- println ! ( ) ;
74- println ! ( "Dispute info: {:#?}" , info) ;
75- println ! ( ) ;
76- }
77- }
78- Payload :: CantDo ( Some ( cant_do_reason) ) => {
79- println ! ( ) ;
80- println ! ( "Error: {:?}" , cant_do_reason) ;
81- println ! ( ) ;
82- }
83- Payload :: Order ( new_order) if message. action == Action :: NewOrder => {
84- if new_order. id . is_some ( ) {
85- let db_order =
86- Order :: get_by_id ( & pool, & new_order. id . unwrap ( ) . to_string ( ) ) . await ;
87- if db_order. is_err ( ) {
88- let trade_index = message. trade_index . unwrap ( ) ;
89- let trade_keys = User :: get_trade_keys ( & pool, trade_index) . await ?;
90- let _ = Order :: new ( & pool, new_order. clone ( ) , & trade_keys, None )
91- . await
92- . map_err ( |e| {
93- anyhow:: anyhow!( "Failed to create DB order: {:?}" , e)
94- } ) ?;
95- }
96- }
97- println ! ( ) ;
98- println ! ( "Order: {:#?}" , new_order) ;
99- println ! ( ) ;
100- }
101- _ => {
102- println ! ( ) ;
103- println ! ( "Action: {}" , message. action) ;
104- println ! ( "Payload: {:#?}" , message. payload) ;
105- println ! ( ) ;
106- }
107- }
108- } else {
109- println ! ( ) ;
110- println ! ( "Action: {}" , message. action) ;
111- println ! ( "Payload: {:#?}" , message. payload) ;
112- println ! ( ) ;
113- }
114- }
115- }
39+ print_direct_messages ( & dm, & pool) . await ?;
11640 Ok ( ( ) )
11741}
0 commit comments