mirror of
https://github.com/permissionlesstech/bitchat.git
synced 2026-07-25 19:25:20 +00:00
Revert "Fix compilation errors in ChatViewModel"
This reverts commit e2d50e3684.
This commit is contained in:
@@ -194,66 +194,55 @@ class ChatViewModel: ObservableObject, BitchatDelegate {
|
|||||||
MessageRetryService.shared.meshService = meshService
|
MessageRetryService.shared.meshService = meshService
|
||||||
|
|
||||||
// Initialize Nostr services
|
// Initialize Nostr services
|
||||||
Task { [weak self] in
|
Task { @MainActor in
|
||||||
await MainActor.run {
|
nostrRelayManager = NostrRelayManager.shared
|
||||||
self?.nostrRelayManager = NostrRelayManager.shared
|
nostrRelayManager?.connect()
|
||||||
self?.nostrRelayManager?.connect()
|
|
||||||
|
messageRouter = MessageRouter(
|
||||||
if let meshService = self?.meshService,
|
meshService: meshService,
|
||||||
let nostrRelayManager = self?.nostrRelayManager {
|
nostrRelay: nostrRelayManager!
|
||||||
self?.messageRouter = MessageRouter(
|
)
|
||||||
meshService: meshService,
|
|
||||||
nostrRelay: nostrRelayManager
|
// Initialize peer manager
|
||||||
)
|
peerManager = PeerManager(meshService: meshService)
|
||||||
}
|
peerManager?.updatePeers()
|
||||||
|
|
||||||
// Initialize peer manager
|
// Bind peer manager's peer list to our published property
|
||||||
if let meshService = self?.meshService {
|
peerManager?.$peers
|
||||||
self?.peerManager = PeerManager(meshService: meshService)
|
.receive(on: DispatchQueue.main)
|
||||||
self?.peerManager?.updatePeers()
|
.sink { [weak self] peers in
|
||||||
|
SecureLogger.log("📱 UI: Received \(peers.count) peers from PeerManager",
|
||||||
|
category: SecureLogger.session, level: .info)
|
||||||
|
for peer in peers {
|
||||||
|
SecureLogger.log(" - \(peer.displayName): connected=\(peer.isConnected), state=\(peer.connectionState)",
|
||||||
|
category: SecureLogger.session, level: .debug)
|
||||||
|
}
|
||||||
|
// Update peers directly
|
||||||
|
self?.allPeers = peers
|
||||||
|
// Update peer index for O(1) lookups
|
||||||
|
// Deduplicate peers by ID to prevent crash from duplicate keys
|
||||||
|
var uniquePeers: [String: PeerData] = [:]
|
||||||
|
for peer in peers {
|
||||||
|
// Keep the first occurrence of each peer ID
|
||||||
|
if uniquePeers[peer.id] == nil {
|
||||||
|
uniquePeers[peer.id] = peer
|
||||||
|
} else {
|
||||||
|
SecureLogger.log("⚠️ Duplicate peer ID detected: \(peer.id) (\(peer.displayName))",
|
||||||
|
category: SecureLogger.session, level: .warning)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
self?.peerIndex = uniquePeers
|
||||||
|
// Schedule UI update if peers changed
|
||||||
|
if peers.count > 0 || self?.allPeers.count ?? 0 > 0 {
|
||||||
|
// UI will update automatically
|
||||||
|
}
|
||||||
|
|
||||||
// Bind peer manager's peer list to our published property
|
// Update private chat peer ID if needed when peers change
|
||||||
if let peerManager = self?.peerManager,
|
if self?.selectedPrivateChatFingerprint != nil {
|
||||||
var cancellables = self?.cancellables {
|
self?.updatePrivateChatPeerIfNeeded()
|
||||||
peerManager.$peers
|
|
||||||
.receive(on: DispatchQueue.main)
|
|
||||||
.sink { [weak self] peers in
|
|
||||||
SecureLogger.log("📱 UI: Received \(peers.count) peers from PeerManager",
|
|
||||||
category: SecureLogger.session, level: .info)
|
|
||||||
for peer in peers {
|
|
||||||
SecureLogger.log(" - \(peer.displayName): connected=\(peer.isConnected), state=\(peer.connectionState)",
|
|
||||||
category: SecureLogger.session, level: .debug)
|
|
||||||
}
|
|
||||||
// Update peers directly
|
|
||||||
self?.allPeers = peers
|
|
||||||
// Update peer index for O(1) lookups
|
|
||||||
// Deduplicate peers by ID to prevent crash from duplicate keys
|
|
||||||
var uniquePeers: [String: BitchatPeer] = [:]
|
|
||||||
for peer in peers {
|
|
||||||
// Keep the first occurrence of each peer ID
|
|
||||||
if uniquePeers[peer.id] == nil {
|
|
||||||
uniquePeers[peer.id] = peer
|
|
||||||
} else {
|
|
||||||
SecureLogger.log("⚠️ Duplicate peer ID detected: \(peer.id) (\(peer.displayName))",
|
|
||||||
category: SecureLogger.session, level: .warning)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
self?.peerIndex = uniquePeers
|
|
||||||
// Schedule UI update if peers changed
|
|
||||||
if peers.count > 0 || self?.allPeers.count ?? 0 > 0 {
|
|
||||||
// UI will update automatically
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update private chat peer ID if needed when peers change
|
|
||||||
if self?.selectedPrivateChatFingerprint != nil {
|
|
||||||
self?.updatePrivateChatPeerIfNeeded()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.store(in: &cancellables)
|
|
||||||
self?.cancellables = cancellables
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
.store(in: &cancellables)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set up Noise encryption callbacks
|
// Set up Noise encryption callbacks
|
||||||
|
|||||||
Reference in New Issue
Block a user