upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/src/client.rs
diff options
context:
space:
mode:
authorDanConwayDev <DanConwayDev@protonmail.com>2024-06-28 15:16:43 +0100
committerDanConwayDev <DanConwayDev@protonmail.com>2024-06-28 15:16:43 +0100
commita82546b70303000b4fc053a1ee21d3d8c7d6ad66 (patch)
treef8c4238a5ae27759b3c1a6adb5c865b07e339a66 /src/client.rs
parent6b06e874119ceca1a9dac1b94dcfe6e06aacd7b9 (diff)
feat(login): login with nip46 remote signer
and save details in git config
Diffstat (limited to 'src/client.rs')
-rw-r--r--src/client.rs31
1 files changed, 30 insertions, 1 deletions
diff --git a/src/client.rs b/src/client.rs
index 9dba528..44abb29 100644
--- a/src/client.rs
+++ b/src/client.rs
@@ -19,7 +19,7 @@ use indicatif::{MultiProgress, ProgressBar, ProgressState, ProgressStyle};
19#[cfg(test)] 19#[cfg(test)]
20use mockall::*; 20use mockall::*;
21use nostr::Event; 21use nostr::Event;
22use nostr_sdk::NostrSigner; 22use nostr_sdk::{EventBuilder, NostrSigner};
23 23
24#[allow(clippy::struct_field_names)] 24#[allow(clippy::struct_field_names)]
25pub struct Client { 25pub struct Client {
@@ -292,3 +292,32 @@ fn get_dedup_events(relay_results: Vec<Result<Vec<nostr::Event>>>) -> Vec<Event>
292 } 292 }
293 dedup_events 293 dedup_events
294} 294}
295
296pub async fn sign_event(event_builder: EventBuilder, signer: &NostrSigner) -> Result<nostr::Event> {
297 if signer.r#type().eq(&nostr_signer::NostrSignerType::NIP46) {
298 let term = console::Term::stderr();
299 term.write_line("signing event with remote signer...")?;
300 let event = signer
301 .sign_event_builder(event_builder)
302 .await
303 .context("failed to sign event")?;
304 term.clear_last_lines(1)?;
305 Ok(event)
306 } else {
307 signer
308 .sign_event_builder(event_builder)
309 .await
310 .context("failed to sign event")
311 }
312}
313
314pub async fn fetch_public_key(signer: &NostrSigner) -> Result<nostr::PublicKey> {
315 let term = console::Term::stderr();
316 term.write_line("fetching npub from remote signer...")?;
317 let public_key = signer
318 .public_key()
319 .await
320 .context("failed to get npub from remote signer")?;
321 term.clear_last_lines(1)?;
322 Ok(public_key)
323}