Fix automated test issues
Closes: https://github.com/damus-io/damus/issues/3275 Signed-off-by: Daniel D’Aquino <daniel@daquino.me>
This commit is contained in:
@@ -35,9 +35,9 @@ class NostrNetworkManager {
|
||||
let reader: SubscriptionManager
|
||||
let profilesManager: ProfilesManager
|
||||
|
||||
init(delegate: Delegate) {
|
||||
init(delegate: Delegate, addNdbToRelayPool: Bool = true) {
|
||||
self.delegate = delegate
|
||||
let pool = RelayPool(ndb: delegate.ndb, keypair: delegate.keypair)
|
||||
let pool = RelayPool(ndb: addNdbToRelayPool ? delegate.ndb : nil, keypair: delegate.keypair)
|
||||
self.pool = pool
|
||||
let reader = SubscriptionManager(pool: pool, ndb: delegate.ndb, experimentalLocalRelayModelSupport: self.delegate.experimentalLocalRelayModelSupport)
|
||||
let userRelayList = UserRelayListManager(delegate: delegate, pool: pool, reader: reader)
|
||||
|
||||
@@ -25,8 +25,6 @@ extension NostrNetworkManager {
|
||||
category: "subscription_manager"
|
||||
)
|
||||
|
||||
let EXTRA_VERBOSE_LOGGING: Bool = false
|
||||
|
||||
init(pool: RelayPool, ndb: Ndb, experimentalLocalRelayModelSupport: Bool) {
|
||||
self.pool = pool
|
||||
self.ndb = ndb
|
||||
@@ -127,7 +125,7 @@ extension NostrNetworkManager {
|
||||
// In normal mode: Issuing EOSE requires EOSE from both NDB and the network, since they are all considered separate relays
|
||||
// In experimental local relay model mode: Issuing EOSE requires only EOSE from NDB, since that is the only relay that "matters"
|
||||
let canIssueEOSE = switch streamMode {
|
||||
case .ndbFirst: (ndbEOSEIssued)
|
||||
case .ndbFirst, .ndbOnly: (ndbEOSEIssued)
|
||||
case .ndbAndNetworkParallel: (ndbEOSEIssued && (networkEOSEIssued || !connectedToNetwork))
|
||||
}
|
||||
|
||||
@@ -142,6 +140,7 @@ extension NostrNetworkManager {
|
||||
var latestNoteTimestampSeen: UInt32? = nil
|
||||
|
||||
let startNetworkStreamTask = {
|
||||
guard streamMode.shouldStreamFromNetwork else { return }
|
||||
networkStreamTask = Task {
|
||||
while !Task.isCancelled {
|
||||
let optimizedFilters = filters.map {
|
||||
@@ -171,7 +170,7 @@ extension NostrNetworkManager {
|
||||
}
|
||||
}
|
||||
|
||||
if streamMode.optimizeNetworkFilter == false {
|
||||
if streamMode.optimizeNetworkFilter == false && streamMode.shouldStreamFromNetwork {
|
||||
// Start streaming from the network straight away
|
||||
startNetworkStreamTask()
|
||||
}
|
||||
@@ -199,7 +198,7 @@ extension NostrNetworkManager {
|
||||
logStreamPipelineStats("SubscriptionManager_Advanced_Stream_\(id)", "Consumer_\(id)")
|
||||
continuation.yield(item)
|
||||
ndbEOSEIssued = true
|
||||
if streamMode.optimizeNetworkFilter {
|
||||
if streamMode.optimizeNetworkFilter && streamMode.shouldStreamFromNetwork {
|
||||
startNetworkStreamTask()
|
||||
}
|
||||
yieldEOSEIfReady()
|
||||
@@ -237,11 +236,8 @@ extension NostrNetworkManager {
|
||||
logStreamPipelineStats("RelayPool_Handler_\(id)", "SubscriptionManager_Network_Stream_\(id)")
|
||||
switch item {
|
||||
case .event(let event):
|
||||
if EXTRA_VERBOSE_LOGGING {
|
||||
Self.logger.debug("Session subscription \(id.uuidString, privacy: .public): Received kind \(event.kind, privacy: .public) event with id \(event.id.hex(), privacy: .private) from the network")
|
||||
}
|
||||
switch streamMode {
|
||||
case .ndbFirst:
|
||||
case .ndbFirst, .ndbOnly:
|
||||
break // NO-OP
|
||||
case .ndbAndNetworkParallel:
|
||||
continuation.yield(.event(lender: NdbNoteLender(ownedNdbNote: event)))
|
||||
@@ -534,6 +530,8 @@ extension NostrNetworkManager {
|
||||
/// Returns notes from both NostrDB and the network, in parallel, treating it with similar importance against the network relays. Generic EOSE is fired when EOSE is received from both the network and NostrDB
|
||||
/// `optimizeNetworkFilter`: Returns notes from ndb, then streams from the network with an added "since" filter set to the latest note stored on ndb.
|
||||
case ndbAndNetworkParallel(optimizeNetworkFilter: Bool)
|
||||
/// Ignores the network. Used for testing purposes
|
||||
case ndbOnly
|
||||
|
||||
var optimizeNetworkFilter: Bool {
|
||||
switch self {
|
||||
@@ -541,6 +539,19 @@ extension NostrNetworkManager {
|
||||
return optimizeNetworkFilter
|
||||
case .ndbAndNetworkParallel(optimizeNetworkFilter: let optimizeNetworkFilter):
|
||||
return optimizeNetworkFilter
|
||||
case .ndbOnly:
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
var shouldStreamFromNetwork: Bool {
|
||||
switch self {
|
||||
case .ndbFirst:
|
||||
return true
|
||||
case .ndbAndNetworkParallel:
|
||||
return true
|
||||
case .ndbOnly:
|
||||
return false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ actor RelayPool {
|
||||
var request_queue: [QueuedRequest] = []
|
||||
var seen: [NoteId: Set<RelayURL>] = [:]
|
||||
var counts: [RelayURL: UInt64] = [:]
|
||||
var ndb: Ndb
|
||||
var ndb: Ndb?
|
||||
/// The keypair used to authenticate with relays
|
||||
var keypair: Keypair?
|
||||
var message_received_function: (((String, RelayDescriptor)) -> Void)?
|
||||
@@ -71,7 +71,7 @@ actor RelayPool {
|
||||
seen.removeAll()
|
||||
}
|
||||
|
||||
init(ndb: Ndb, keypair: Keypair? = nil) {
|
||||
init(ndb: Ndb?, keypair: Keypair? = nil) {
|
||||
self.ndb = ndb
|
||||
self.keypair = keypair
|
||||
|
||||
@@ -179,7 +179,7 @@ actor RelayPool {
|
||||
case .string(let str) = msg
|
||||
else { return }
|
||||
|
||||
let _ = self.ndb.processEvent(str, originRelayURL: relay_id)
|
||||
let _ = self.ndb?.processEvent(str, originRelayURL: relay_id)
|
||||
self.message_received_function?((str, desc))
|
||||
})
|
||||
let relay = Relay(descriptor: desc, connection: conn)
|
||||
@@ -400,10 +400,10 @@ actor RelayPool {
|
||||
switch req {
|
||||
case .typical(let r):
|
||||
if case .event = r, let rstr = make_nostr_req(r) {
|
||||
let _ = ndb.process_client_event(rstr)
|
||||
let _ = ndb?.process_client_event(rstr)
|
||||
}
|
||||
case .custom(let string):
|
||||
let _ = ndb.process_client_event(string)
|
||||
let _ = ndb?.process_client_event(string)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ class DamusState: HeadlessDamusState, ObservableObject {
|
||||
let favicon_cache: FaviconCache
|
||||
private(set) var nostrNetwork: NostrNetworkManager
|
||||
|
||||
init(keypair: Keypair, likes: EventCounter, boosts: EventCounter, contacts: Contacts, mutelist_manager: MutelistManager, profiles: Profiles, dms: DirectMessagesModel, previews: PreviewCache, zaps: Zaps, lnurls: LNUrls, settings: UserSettingsStore, relay_filters: RelayFilters, relay_model_cache: RelayModelCache, drafts: Drafts, events: EventCache, bookmarks: BookmarksManager, replies: ReplyCounter, wallet: WalletModel, nav: NavigationCoordinator, music: MusicController?, video: DamusVideoCoordinator, ndb: Ndb, purple: DamusPurple? = nil, quote_reposts: EventCounter, emoji_provider: EmojiProvider, favicon_cache: FaviconCache) {
|
||||
init(keypair: Keypair, likes: EventCounter, boosts: EventCounter, contacts: Contacts, mutelist_manager: MutelistManager, profiles: Profiles, dms: DirectMessagesModel, previews: PreviewCache, zaps: Zaps, lnurls: LNUrls, settings: UserSettingsStore, relay_filters: RelayFilters, relay_model_cache: RelayModelCache, drafts: Drafts, events: EventCache, bookmarks: BookmarksManager, replies: ReplyCounter, wallet: WalletModel, nav: NavigationCoordinator, music: MusicController?, video: DamusVideoCoordinator, ndb: Ndb, purple: DamusPurple? = nil, quote_reposts: EventCounter, emoji_provider: EmojiProvider, favicon_cache: FaviconCache, addNdbToRelayPool: Bool = true) {
|
||||
self.keypair = keypair
|
||||
self.likes = likes
|
||||
self.boosts = boosts
|
||||
@@ -72,7 +72,7 @@ class DamusState: HeadlessDamusState, ObservableObject {
|
||||
self.favicon_cache = FaviconCache()
|
||||
|
||||
let networkManagerDelegate = NostrNetworkManagerDelegate(settings: settings, contacts: contacts, ndb: ndb, keypair: keypair, relayModelCache: relay_model_cache, relayFilters: relay_filters)
|
||||
let nostrNetwork = NostrNetworkManager(delegate: networkManagerDelegate)
|
||||
let nostrNetwork = NostrNetworkManager(delegate: networkManagerDelegate, addNdbToRelayPool: addNdbToRelayPool)
|
||||
self.nostrNetwork = nostrNetwork
|
||||
self.wallet.nostrNetwork = nostrNetwork
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user