Skip to content

Commit a94d0b1

Browse files
refactor: extract admin keys validation into helper function
1 parent d8f1d66 commit a94d0b1

1 file changed

Lines changed: 24 additions & 15 deletions

File tree

src/cli/take_dispute.rs

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use anyhow::Result;
22
use mostro_core::prelude::*;
3+
use nostr_sdk::prelude::Keys;
34
use uuid::Uuid;
45

56
use 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+
1226
pub 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

Comments
 (0)