From 0067804cc00e94ce2b7043e67f9ff50968525479 Mon Sep 17 00:00:00 2001 From: DanConwayDev Date: Sun, 21 May 2023 11:14:47 +0000 Subject: v0.0.1-alpha funcs --- src/funcs/find_select_recent_repos.rs | 52 +++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 src/funcs/find_select_recent_repos.rs (limited to 'src/funcs/find_select_recent_repos.rs') diff --git a/src/funcs/find_select_recent_repos.rs b/src/funcs/find_select_recent_repos.rs new file mode 100644 index 0000000..79054c0 --- /dev/null +++ b/src/funcs/find_select_recent_repos.rs @@ -0,0 +1,52 @@ +use dialoguer::Select; +use nostr::{Event, EventId, Filter}; +use nostr_sdk::blocking::Client; + +use crate::{kind::Kind, repos::repo::Repo}; + +pub fn find_select_recent_repos( + client: &Client, +) -> EventId { + + let mut repo_events: Vec = client.get_events_of( + vec![ + Filter::new() + .hashtag("ngit-format-0.0.1") + .kind( + Kind::InitializeRepo.into_sdk_custom_kind(), + ) + .limit(10), + ], + None, + ) + .expect("get_events_of to not return an error"); + + repo_events.sort(); + repo_events.dedup(); + + if repo_events.is_empty() { + panic!("could not find any repositories. Create one with ngit init?") + } + + let repos: Vec = repo_events.iter().map(|r| + Repo::new_from_event(r.clone()) + .expect("repo to be well formed event") + ).collect(); + let repo_names: Vec = repos.iter().map(|r| + match r.name.clone() { + None => "(untitled)".to_string(), + Some(name) => name, + } + ).collect(); + + // select pr to review + let i = Select::new() + .with_prompt("clone for a repository on selected relays") + .items(&repo_names) + .report(false) + .interact() + .unwrap(); + // display nevent + println!("selected repo: {} {}",repo_names[i], repos[i].nevent()); + repos[i].id +} \ No newline at end of file -- cgit v1.2.3