mirror of
https://github.com/permissionlesstech/bitchat.git
synced 2026-07-25 19:05:20 +00:00
Fix startup race in NostrTransport reachability cache
This commit is contained in:
@@ -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() {
|
||||||
|
|||||||
Reference in New Issue
Block a user