diff options
Diffstat (limited to 'src/sync/self_subscriber.rs')
| -rw-r--r-- | src/sync/self_subscriber.rs | 17 |
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; | |||
| 16 | use tokio::sync::broadcast::error::RecvError; | 16 | use tokio::sync::broadcast::error::RecvError; |
| 17 | use tokio::sync::{broadcast, mpsc}; | 17 | use tokio::sync::{broadcast, mpsc}; |
| 18 | 18 | ||
| 19 | use super::{AddFilters, RepoSyncIndex, RepoSyncNeeds}; | 19 | use 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, |