11use anyhow:: Result ;
22use mostro_core:: prelude:: * ;
3+ use nostr_sdk:: prelude:: Keys ;
34use uuid:: Uuid ;
45
56use crate :: {
@@ -9,6 +10,19 @@ use crate::{
910 util:: { admin_send_dm, send_dm, wait_for_dm} ,
1011} ;
1112
13+ /// Helper function to retrieve and validate admin keys from context
14+ fn get_admin_keys ( ctx : & Context ) -> Result < & Keys > {
15+ let admin_keys = ctx. context_keys . as_ref ( )
16+ . ok_or_else ( || anyhow:: anyhow!( "Admin keys not available. ADMIN_NSEC must be set for admin commands." ) ) ?;
17+
18+ // Only log admin public key in verbose mode
19+ if std:: env:: var ( "RUST_LOG" ) . is_ok ( ) {
20+ println ! ( "🔑 Admin Keys: {}" , admin_keys. public_key) ;
21+ }
22+
23+ Ok ( admin_keys)
24+ }
25+
1226pub async fn execute_admin_add_solver ( npubkey : & str , ctx : & Context ) -> Result < ( ) > {
1327 println ! ( "👑 Admin Add Solver" ) ;
1428 println ! ( "═══════════════════════════════════════" ) ;
@@ -23,9 +37,7 @@ pub async fn execute_admin_add_solver(npubkey: &str, ctx: &Context) -> Result<()
2337 println ! ( "{table}" ) ;
2438 println ! ( "💡 Adding new solver to Mostro...\n " ) ;
2539
26- let admin_keys = ctx. context_keys . as_ref ( )
27- . ok_or_else ( || anyhow:: anyhow!( "Admin keys not available. ADMIN_NSEC must be set for admin commands." ) ) ?;
28- println ! ( "🔑 Admin Keys: {}" , admin_keys. public_key) ;
40+ let _admin_keys = get_admin_keys ( ctx) ?;
2941
3042 // Create takebuy message
3143 let take_dispute_message = Message :: new_dispute (
@@ -62,16 +74,15 @@ pub async fn execute_admin_cancel_dispute(dispute_id: &Uuid, ctx: &Context) -> R
6274 ) ) ;
6375 println ! ( "{table}" ) ;
6476 println ! ( "💡 Canceling dispute...\n " ) ;
77+
78+ let _admin_keys = get_admin_keys ( ctx) ?;
79+
6580 // Create takebuy message
6681 let take_dispute_message =
6782 Message :: new_dispute ( Some ( * dispute_id) , None , None , Action :: AdminCancel , None )
6883 . as_json ( )
6984 . map_err ( |_| anyhow:: anyhow!( "Failed to serialize message" ) ) ?;
7085
71- let admin_keys = ctx. context_keys . as_ref ( )
72- . ok_or_else ( || anyhow:: anyhow!( "Admin keys not available. ADMIN_NSEC must be set for admin commands." ) ) ?;
73- println ! ( "🔑 Admin Keys: {}" , admin_keys. public_key) ;
74-
7586 admin_send_dm ( ctx, take_dispute_message) . await ?;
7687
7788 println ! ( "✅ Dispute canceled successfully!" ) ;
@@ -96,15 +107,14 @@ pub async fn execute_admin_settle_dispute(dispute_id: &Uuid, ctx: &Context) -> R
96107 ) ) ;
97108 println ! ( "{table}" ) ;
98109 println ! ( "💡 Settling dispute...\n " ) ;
110+
111+ let _admin_keys = get_admin_keys ( ctx) ?;
112+
99113 // Create takebuy message
100114 let take_dispute_message =
101115 Message :: new_dispute ( Some ( * dispute_id) , None , None , Action :: AdminSettle , None )
102116 . as_json ( )
103117 . map_err ( |_| anyhow:: anyhow!( "Failed to serialize message" ) ) ?;
104-
105- let admin_keys = ctx. context_keys . as_ref ( )
106- . ok_or_else ( || anyhow:: anyhow!( "Admin keys not available. ADMIN_NSEC must be set for admin commands." ) ) ?;
107- println ! ( "🔑 Admin Keys: {}" , admin_keys. public_key) ;
108118 admin_send_dm ( ctx, take_dispute_message) . await ?;
109119
110120 println ! ( "✅ Dispute settled successfully!" ) ;
@@ -128,6 +138,9 @@ pub async fn execute_take_dispute(dispute_id: &Uuid, ctx: &Context) -> Result<()
128138 ) ) ;
129139 println ! ( "{table}" ) ;
130140 println ! ( "💡 Taking dispute...\n " ) ;
141+
142+ let admin_keys = get_admin_keys ( ctx) ?;
143+
131144 // Create takebuy message
132145 let take_dispute_message = Message :: new_dispute (
133146 Some ( * dispute_id) ,
@@ -139,10 +152,6 @@ pub async fn execute_take_dispute(dispute_id: &Uuid, ctx: &Context) -> Result<()
139152 . as_json ( )
140153 . map_err ( |_| anyhow:: anyhow!( "Failed to serialize message" ) ) ?;
141154
142- let admin_keys = ctx. context_keys . as_ref ( )
143- . ok_or_else ( || anyhow:: anyhow!( "Admin keys not available. ADMIN_NSEC must be set for admin commands." ) ) ?;
144- println ! ( "🔑 Admin Keys: {}" , admin_keys. public_key) ;
145-
146155 // Send the dispute message and wait for response
147156 let sent_message = send_dm (
148157 & ctx. client ,
0 commit comments