upleb.uk

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

summaryrefslogtreecommitdiff
path: root/src/sync/self_subscriber.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/sync/self_subscriber.rs')
-rw-r--r--src/sync/self_subscriber.rs17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/sync/self_subscriber.rs b/src/sync/self_subscriber.rs
index 3cc408d..db16c62 100644
--- a/src/sync/self_subscriber.rs
+++ b/src/sync/self_subscriber.rs
@@ -16,7 +16,7 @@ use nostr_sdk::Timestamp;
16use tokio::sync::broadcast::error::RecvError; 16use tokio::sync::broadcast::error::RecvError;
17use tokio::sync::{broadcast, mpsc}; 17use tokio::sync::{broadcast, mpsc};
18 18
19use super::{AddFilters, RepoSyncIndex, RepoSyncNeeds}; 19use super::{AddFilters, RepoSyncIndex, RepoSyncNeeds, SyncLevel};
20 20
21// ============================================================================= 21// =============================================================================
22// LoopControl - Result of notification processing 22// LoopControl - Result of notification processing
@@ -58,6 +58,7 @@ impl PendingUpdates {
58 let entry = self.repos.entry(repo_id).or_insert_with(|| RepoSyncNeeds { 58 let entry = self.repos.entry(repo_id).or_insert_with(|| RepoSyncNeeds {
59 relays: HashSet::new(), 59 relays: HashSet::new(),
60 root_events: HashSet::new(), 60 root_events: HashSet::new(),
61 sync_level: SyncLevel::Full,
61 }); 62 });
62 entry.relays.extend(relays); 63 entry.relays.extend(relays);
63 entry.root_events.extend(root_events); 64 entry.root_events.extend(root_events);
@@ -475,6 +476,7 @@ impl SelfSubscriber {
475 .or_insert_with(|| RepoSyncNeeds { 476 .or_insert_with(|| RepoSyncNeeds {
476 relays: HashSet::new(), 477 relays: HashSet::new(),
477 root_events: HashSet::new(), 478 root_events: HashSet::new(),
479 sync_level: SyncLevel::Full,
478 }); 480 });
479 entry.relays.extend(needs.relays); 481 entry.relays.extend(needs.relays);
480 entry.root_events.extend(needs.root_events); 482 entry.root_events.extend(needs.root_events);
@@ -499,21 +501,26 @@ impl SelfSubscriber {
499 continue; 501 continue;
500 } 502 }
501 503
502 // Build filters for these repos 504 // Build filters for these repos (sync-level-aware)
503 let filters = crate::sync::filters::build_layer2_and_layer3_filters( 505 let filters = crate::sync::filters::build_sync_level_aware_filters(
504 &needs.repos, 506 &needs.repos,
507 &needs.state_only_repos,
505 &needs.root_events, 508 &needs.root_events,
506 None, 509 None,
507 ); 510 );
508 511
509 // Log before moving values 512 // Log before moving values
510 let repo_count = needs.repos.len(); 513 let repo_count = needs.repos.len() + needs.state_only_repos.len();
511 let event_count = needs.root_events.len(); 514 let event_count = needs.root_events.len();
512 515
516 // Combine all repos into pending items
517 let mut all_repos = needs.repos;
518 all_repos.extend(needs.state_only_repos);
519
513 let action = AddFilters { 520 let action = AddFilters {
514 relay_url: relay_url.clone(), 521 relay_url: relay_url.clone(),
515 items: crate::sync::PendingItems { 522 items: crate::sync::PendingItems {
516 repos: needs.repos, 523 repos: all_repos,
517 root_events: needs.root_events, 524 root_events: needs.root_events,
518 }, 525 },
519 filters, 526 filters,