damus

nostr ios client
git clone git://jb55.com/damus
Log | Files | Refs | README | LICENSE

Ndb+.swift (1074B)


      1 //
      2 //  Ndb+.swift
      3 //  damus
      4 //
      5 //  Created by Daniel D’Aquino on 2025-04-04.
      6 //
      7 
      8 /// ## Implementation notes
      9 ///
     10 /// 1. This was created as a separate file because it contains dependencies to damus-specific structures such as `NostrFilter`, which is not yet available inside the NostrDB codebase.
     11 
     12 import Foundation
     13 
     14 extension Ndb {
     15     /// Subscribe to events matching the provided NostrFilters
     16     /// - Parameters:
     17     ///   - filters: Array of NostrFilter objects
     18     ///   - maxSimultaneousResults: Maximum number of initial results to return
     19     /// - Returns: AsyncStream of StreamItem events
     20     /// - Throws: NdbStreamError if subscription fails
     21     func subscribe(filters: [NostrFilter], maxSimultaneousResults: Int = 1000) throws(NdbStreamError) -> AsyncStream<StreamItem> {
     22         let ndbFilters: [NdbFilter]
     23         do {
     24             ndbFilters = try filters.toNdbFilters()
     25         } catch {
     26             throw .cannotConvertFilter(error)
     27         }
     28         return try self.subscribe(filters: ndbFilters, maxSimultaneousResults: maxSimultaneousResults)
     29     }
     30 }