From cd7d6dd7975eff18b49665f6ebcabee78b204f76 Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 27 May 2026 16:59:08 +0530 Subject: Fix compile errors: enable nip04/nip46 features, fix API mismatches - Cargo.toml: enable nip04 + nip46 features on nostr crate - nip46.rs: secret_key() returns &SecretKey not Result, remove ? operator - nip46.rs: EventBuilder::new takes 2 args, use .tags() for tags - nip46.rs: fix async block in timeout map_err - git_mirror.rs: relay_url is a field not a method --- Cargo.toml | 2 +- src/git_mirror.rs | 2 +- src/nip46.rs | 32 ++++++++++++++------------------ 3 files changed, 16 insertions(+), 20 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 2c6be46..78130f3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,7 +7,7 @@ license = "MIT" [dependencies] nostr-sdk = "0.39" -nostr = "0.39" +nostr = { version = "0.39", features = ["nip04", "nip46"] } tokio = { version = "1", features = ["full"] } sqlx = { version = "0.8", features = ["runtime-tokio", "sqlite"] } toml = "0.8" diff --git a/src/git_mirror.rs b/src/git_mirror.rs index cdf853e..47b0efb 100644 --- a/src/git_mirror.rs +++ b/src/git_mirror.rs @@ -78,7 +78,7 @@ impl GitMirror { ); if let Some(ref event) = state_event { - let relay_url = server.relay_url(); + let relay_url = server.relay_url.clone(); if let Ok(url) = RelayUrl::parse(&relay_url) { let urls = vec![url]; if let Err(e) = nostr_client.send_event_to(urls, event.clone()).await { diff --git a/src/nip46.rs b/src/nip46.rs index c3b1e86..e115df6 100644 --- a/src/nip46.rs +++ b/src/nip46.rs @@ -95,7 +95,7 @@ impl Nip46Client { let pairing_uri = Self::build_pairing_uri(&client_keys, &self.relays); self.db - .upsert_nip46_session(&pk_hex, &client_keys.secret_key()?.to_hex(), None, false) + .upsert_nip46_session(&pk_hex, &client_keys.secret_key().to_hex(), None, false) .await?; Session { @@ -190,7 +190,7 @@ impl Nip46Client { }; let decrypted = nip04::decrypt( - session.client_keys.secret_key()?, + session.client_keys.secret_key(), &event.pubkey, &event.content, ) @@ -232,7 +232,7 @@ impl Nip46Client { let _ = db .upsert_nip46_session( &pk_hex, - &session.client_keys.secret_key()?.to_hex(), + &session.client_keys.secret_key().to_hex(), Some(&signer_hex), true, ) @@ -307,13 +307,10 @@ impl Nip46Client { let message_json = message.as_json(); let encrypted = - nip04::encrypt(session.client_keys.secret_key()?, &signer_pubkey, &message_json)?; + nip04::encrypt(session.client_keys.secret_key(), &signer_pubkey, &message_json)?; - let event_builder = EventBuilder::new( - Kind::Custom(24133), - &encrypted, - [Tag::public_key(signer_pubkey)], - ); + let event_builder = EventBuilder::new(Kind::Custom(24133), &encrypted) + .tags([Tag::public_key(signer_pubkey)]); let event = event_builder.sign_with_keys(&session.client_keys)?; let request_id = message.id().to_string(); @@ -340,15 +337,14 @@ impl Nip46Client { Err(_) => Err(anyhow::anyhow!("signing request channel dropped")), } }) - .await - .map_err(|_| { - { - let pending_id = request_id.clone(); - async move { - let mut pending = self.pending.write().await; - pending.remove(&pending_id); - } - } + .await; + + if result.is_err() { + let mut pending = self.pending.write().await; + pending.remove(&request_id); + } + + result.map_err(|_| { anyhow::anyhow!( "NIP-46 signing request timed out after {}s", timeout.as_secs() -- cgit v1.2.3