From ab1214060a7a2d55068a7ccc9c7f6a04fd7d5aa2 Mon Sep 17 00:00:00 2001 From: DanConwayDev Date: Fri, 19 Jul 2024 20:38:00 +0100 Subject: feat: intergrate `fetch` into `send` reworking the tests and test suite as appropriate --- src/client.rs | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) (limited to 'src/client.rs') diff --git a/src/client.rs b/src/client.rs index ccd5cfb..3b18ad8 100644 --- a/src/client.rs +++ b/src/client.rs @@ -517,7 +517,13 @@ impl Connect for Client { fresh_profiles = HashSet::new(); let relay = self.client.relay(&relay_url).await?; - let events: Vec = get_events_of(&relay, filters, &None).await?; + let events: Vec = get_events_of(&relay, filters.clone(), &None) + .await? + .iter() + // don't process events that don't match filters + .filter(|e| filters.iter().any(|f| f.match_event(e))) + .cloned() + .collect(); // TODO: try reconcile process_fetched_events( @@ -1363,3 +1369,26 @@ pub struct FetchRequest { profiles_to_fetch_from_user_relays: HashMap, user_relays_for_profiles: HashSet, } + +pub async fn fetching_with_report( + git_repo_path: &Path, + #[cfg(test)] client: &crate::client::MockConnect, + #[cfg(not(test))] client: &Client, + repo_coordinates: &HashSet, +) -> Result { + let term = console::Term::stderr(); + term.write_line("fetching updates...")?; + let (relay_reports, progress_reporter) = client + .fetch_all(git_repo_path, repo_coordinates, &HashSet::new()) + .await?; + if !relay_reports.iter().any(std::result::Result::is_err) { + let _ = progress_reporter.clear(); + } + let report = consolidate_fetch_reports(relay_reports); + if report.to_string().is_empty() { + println!("no updates"); + } else { + println!("updates: {report}"); + } + Ok(report) +} -- cgit v1.2.3