Fix startup race in NostrTransport reachability cache

This commit is contained in:
jack
2025-11-26 18:48:08 -10:00
parent 090c4cd919
commit 832e1f006c
+11 -1
View File
@@ -22,12 +22,22 @@ final class NostrTransport: Transport, @unchecked Sendable {
private var reachablePeers: Set<PeerID> = [] private var reachablePeers: Set<PeerID> = []
private let queue = DispatchQueue(label: "nostr.transport.state", attributes: .concurrent) private let queue = DispatchQueue(label: "nostr.transport.state", attributes: .concurrent)
@MainActor
init(keychain: KeychainManagerProtocol, idBridge: NostrIdentityBridge) { init(keychain: KeychainManagerProtocol, idBridge: NostrIdentityBridge) {
self.keychain = keychain self.keychain = keychain
self.idBridge = idBridge self.idBridge = idBridge
setupObservers() setupObservers()
refreshReachablePeers()
// Synchronously warm the cache to avoid startup race
let favorites = FavoritesPersistenceService.shared.favorites
let reachable = favorites.values
.filter { $0.peerNostrPublicKey != nil }
.map { PeerID(publicKey: $0.peerNoisePublicKey) }
queue.sync(flags: .barrier) {
self.reachablePeers = Set(reachable)
}
} }
private func setupObservers() { private func setupObservers() {