diff options
| author | DanConwayDev <DanConwayDev@protonmail.com> | 2024-07-19 20:38:00 +0100 |
|---|---|---|
| committer | DanConwayDev <DanConwayDev@protonmail.com> | 2024-07-19 20:38:00 +0100 |
| commit | ab1214060a7a2d55068a7ccc9c7f6a04fd7d5aa2 (patch) | |
| tree | e561bcc093d393c2d7056a6d6c5f52e886eead27 /src/client.rs | |
| parent | 2e54dd09a1a3b42903eee00adf4472d8b679dcb1 (diff) | |
feat: intergrate `fetch` into `send`
reworking the tests and test suite as appropriate
Diffstat (limited to 'src/client.rs')
| -rw-r--r-- | src/client.rs | 31 |
1 files changed, 30 insertions, 1 deletions
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 { | |||
| 517 | fresh_profiles = HashSet::new(); | 517 | fresh_profiles = HashSet::new(); |
| 518 | 518 | ||
| 519 | let relay = self.client.relay(&relay_url).await?; | 519 | let relay = self.client.relay(&relay_url).await?; |
| 520 | let events: Vec<nostr::Event> = get_events_of(&relay, filters, &None).await?; | 520 | let events: Vec<nostr::Event> = get_events_of(&relay, filters.clone(), &None) |
| 521 | .await? | ||
| 522 | .iter() | ||
| 523 | // don't process events that don't match filters | ||
| 524 | .filter(|e| filters.iter().any(|f| f.match_event(e))) | ||
| 525 | .cloned() | ||
| 526 | .collect(); | ||
| 521 | // TODO: try reconcile | 527 | // TODO: try reconcile |
| 522 | 528 | ||
| 523 | process_fetched_events( | 529 | process_fetched_events( |
| @@ -1363,3 +1369,26 @@ pub struct FetchRequest { | |||
| 1363 | profiles_to_fetch_from_user_relays: HashMap<PublicKey, (Timestamp, Timestamp)>, | 1369 | profiles_to_fetch_from_user_relays: HashMap<PublicKey, (Timestamp, Timestamp)>, |
| 1364 | user_relays_for_profiles: HashSet<Url>, | 1370 | user_relays_for_profiles: HashSet<Url>, |
| 1365 | } | 1371 | } |
| 1372 | |||
| 1373 | pub async fn fetching_with_report( | ||
| 1374 | git_repo_path: &Path, | ||
| 1375 | #[cfg(test)] client: &crate::client::MockConnect, | ||
| 1376 | #[cfg(not(test))] client: &Client, | ||
| 1377 | repo_coordinates: &HashSet<Coordinate>, | ||
| 1378 | ) -> Result<FetchReport> { | ||
| 1379 | let term = console::Term::stderr(); | ||
| 1380 | term.write_line("fetching updates...")?; | ||
| 1381 | let (relay_reports, progress_reporter) = client | ||
| 1382 | .fetch_all(git_repo_path, repo_coordinates, &HashSet::new()) | ||
| 1383 | .await?; | ||
| 1384 | if !relay_reports.iter().any(std::result::Result::is_err) { | ||
| 1385 | let _ = progress_reporter.clear(); | ||
| 1386 | } | ||
| 1387 | let report = consolidate_fetch_reports(relay_reports); | ||
| 1388 | if report.to_string().is_empty() { | ||
| 1389 | println!("no updates"); | ||
| 1390 | } else { | ||
| 1391 | println!("updates: {report}"); | ||
| 1392 | } | ||
| 1393 | Ok(report) | ||
| 1394 | } | ||