From c4c262a5e9bfeb30bc0106d9ea51dfce7e4fa1f3 Mon Sep 17 00:00:00 2001 From: DanConwayDev Date: Wed, 4 Sep 2024 16:44:43 +0100 Subject: refactor(remote): split into modules to make it easier to read --- src/lib/client.rs | 12 ++++++++++++ src/lib/git_events.rs | 15 ++++++++++++++- src/lib/login/mod.rs | 14 ++++++++++++++ 3 files changed, 40 insertions(+), 1 deletion(-) (limited to 'src/lib') diff --git a/src/lib/client.rs b/src/lib/client.rs index ace880b..c29d4b9 100644 --- a/src/lib/client.rs +++ b/src/lib/client.rs @@ -38,6 +38,7 @@ use nostr_sqlite::SQLiteDatabase; use crate::{ get_dirs, + git::{Repo, RepoActions}, git_events::{ event_is_cover_letter, event_is_patch_set_root, event_is_revision_root, status_kinds, }, @@ -1572,6 +1573,17 @@ pub async fn get_all_proposal_patch_events_from_cache( .collect()) } +pub async fn get_event_from_cache_by_id(git_repo: &Repo, event_id: &EventId) -> Result { + Ok(get_events_from_cache( + git_repo.get_path()?, + vec![nostr::Filter::default().id(*event_id)], + ) + .await? + .first() + .context("cannot find event in cache")? + .clone()) +} + #[allow(clippy::module_name_repetitions)] #[allow(clippy::too_many_lines)] pub async fn send_events( diff --git a/src/lib/git_events.rs b/src/lib/git_events.rs index 8689b33..2e9f797 100644 --- a/src/lib/git_events.rs +++ b/src/lib/git_events.rs @@ -3,7 +3,7 @@ use std::str::FromStr; use anyhow::{bail, Context, Result}; use nostr::nips::{nip01::Coordinate, nip10::Marker, nip19::Nip19}; use nostr_sdk::{ - hashes::sha1::Hash as Sha1Hash, Event, EventBuilder, FromBech32, Kind, Tag, TagKind, + hashes::sha1::Hash as Sha1Hash, Event, EventBuilder, EventId, FromBech32, Kind, Tag, TagKind, TagStandard, UncheckedUrl, }; use nostr_signer::NostrSigner; @@ -37,6 +37,19 @@ pub fn get_commit_id_from_patch(event: &Event) -> Result { } } +pub fn get_event_root(event: &nostr::Event) -> Result { + Ok(EventId::parse( + event + .tags() + .iter() + .find(|t| t.is_root()) + .context("no thread root in event")? + .as_vec() + .get(1) + .unwrap(), + )?) +} + pub fn status_kinds() -> Vec { vec![ Kind::GitStatusOpen, diff --git a/src/lib/login/mod.rs b/src/lib/login/mod.rs index 7364edf..938a6f1 100644 --- a/src/lib/login/mod.rs +++ b/src/lib/login/mod.rs @@ -696,3 +696,17 @@ pub async fn get_user_ref_from_cache( relays: extract_user_relays(public_key, &events), }) } + +pub fn get_curent_user(git_repo: &Repo) -> Result> { + Ok( + if let Some(npub) = git_repo.get_git_config_item("nostr.npub", None)? { + if let Ok(public_key) = PublicKey::parse(npub) { + Some(public_key) + } else { + None + } + } else { + None + }, + ) +} -- cgit v1.2.3