mirror of
https://github.com/permissionlesstech/bitchat.git
synced 2026-07-25 12:45:20 +00:00
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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user