From 832e1f006c36d35be9dfc52ce215332bceb034d8 Mon Sep 17 00:00:00 2001 From: jack Date: Wed, 26 Nov 2025 18:47:59 -1000 Subject: [PATCH] Fix startup race in NostrTransport reachability cache --- bitchat/Services/NostrTransport.swift | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/bitchat/Services/NostrTransport.swift b/bitchat/Services/NostrTransport.swift index 81208455..294274bc 100644 --- a/bitchat/Services/NostrTransport.swift +++ b/bitchat/Services/NostrTransport.swift @@ -22,12 +22,22 @@ final class NostrTransport: Transport, @unchecked Sendable { private var reachablePeers: Set = [] private let queue = DispatchQueue(label: "nostr.transport.state", attributes: .concurrent) + @MainActor init(keychain: KeychainManagerProtocol, idBridge: NostrIdentityBridge) { self.keychain = keychain self.idBridge = idBridge 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() {