Add note provenance filter support to SubscriptionManager
Closes: https://github.com/damus-io/damus/issues/3222 Signed-off-by: Daniel D’Aquino <daniel@daquino.me>
This commit is contained in:
@@ -137,7 +137,13 @@ extension NostrNetworkManager {
|
||||
case .event(let noteKey):
|
||||
let lender = NdbNoteLender(ndb: self.ndb, noteKey: noteKey)
|
||||
try Task.checkCancellation()
|
||||
continuation.yield(.event(lender: lender))
|
||||
guard let desiredRelays else {
|
||||
continuation.yield(.event(lender: lender)) // If no desired relays are specified, return all notes we see.
|
||||
break
|
||||
}
|
||||
if try ndb.was(noteKey: noteKey, seenOnAnyOf: desiredRelays) {
|
||||
continuation.yield(.event(lender: lender)) // If desired relays were specified and this note was seen there, return it.
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -141,7 +141,7 @@ class RelayPool {
|
||||
case .string(let str) = msg
|
||||
else { return }
|
||||
|
||||
let _ = self.ndb.process_event(str)
|
||||
let _ = self.ndb.process_event(str, originRelayURL: relay_id)
|
||||
self.message_received_function?((str, desc))
|
||||
})
|
||||
let relay = Relay(descriptor: desc, connection: conn)
|
||||
|
||||
@@ -51,14 +51,10 @@ class SearchHomeModel: ObservableObject {
|
||||
var follow_list_filter = NostrFilter(kinds: [.follow_list])
|
||||
follow_list_filter.until = UInt32(Date.now.timeIntervalSince1970)
|
||||
|
||||
outerLoop: for await item in damus_state.nostrNetwork.reader.subscribe(filters: [get_base_filter(), follow_list_filter], to: to_relays) {
|
||||
switch item {
|
||||
case .event(let lender):
|
||||
await lender.justUseACopy({ await self.handleEvent($0) })
|
||||
case .eose:
|
||||
break outerLoop
|
||||
}
|
||||
for await noteLender in damus_state.nostrNetwork.reader.streamNotesUntilEndOfStoredEvents(filters: [get_base_filter(), follow_list_filter], to: to_relays) {
|
||||
await noteLender.justUseACopy({ await self.handleEvent($0) })
|
||||
}
|
||||
|
||||
DispatchQueue.main.async {
|
||||
self.loading = false
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user