Fix runtime crashes and reduce excessive logging

- Fix Dictionary crash in ChatViewModel by adding deduplication logic for peer IDs
- Fix compilation errors: PeerData -> BitchatPeer type correction
- Fix Task async context issue with cancellables
- Remove excessive debug logging for handshake coordination
- Remove repetitive keep-alive timer logs
- Remove version cache logging spam
This commit is contained in:
jack
2025-08-01 21:39:09 +02:00
parent 172b06721b
commit 8ec39f566d
3 changed files with 6 additions and 20 deletions
+6 -3
View File
@@ -208,7 +208,7 @@ class ChatViewModel: ObservableObject, BitchatDelegate {
peerManager?.updatePeers()
// Bind peer manager's peer list to our published property
peerManager?.$peers
let cancellable = peerManager?.$peers
.receive(on: DispatchQueue.main)
.sink { [weak self] peers in
SecureLogger.log("📱 UI: Received \(peers.count) peers from PeerManager",
@@ -221,7 +221,7 @@ class ChatViewModel: ObservableObject, BitchatDelegate {
self?.allPeers = peers
// Update peer index for O(1) lookups
// Deduplicate peers by ID to prevent crash from duplicate keys
var uniquePeers: [String: PeerData] = [:]
var uniquePeers: [String: BitchatPeer] = [:]
for peer in peers {
// Keep the first occurrence of each peer ID
if uniquePeers[peer.id] == nil {
@@ -242,7 +242,10 @@ class ChatViewModel: ObservableObject, BitchatDelegate {
self?.updatePrivateChatPeerIfNeeded()
}
}
.store(in: &cancellables)
if let cancellable = cancellable {
self.cancellables.insert(cancellable)
}
}
// Set up Noise encryption callbacks