mirror of
https://github.com/permissionlesstech/bitchat.git
synced 2026-07-25 01:05:19 +00:00
Fix peer discovery: include connected peripherals in peer list even before announce
This commit is contained in:
@@ -123,7 +123,16 @@ class BluetoothMeshService: NSObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private func getAllConnectedPeerIDs() -> [String] {
|
private func getAllConnectedPeerIDs() -> [String] {
|
||||||
return Array(activePeers)
|
var peers = Set<String>()
|
||||||
|
|
||||||
|
// Include connected peripherals (devices we connected to as central)
|
||||||
|
peers.formUnion(connectedPeripherals.keys)
|
||||||
|
|
||||||
|
// Include active peers (devices that have announced)
|
||||||
|
peers.formUnion(activePeers)
|
||||||
|
|
||||||
|
// Filter out invalid peers
|
||||||
|
return peers.filter { $0 != "unknown" && $0 != myPeerID }
|
||||||
}
|
}
|
||||||
|
|
||||||
private func broadcastPacket(_ packet: BitchatPacket) {
|
private func broadcastPacket(_ packet: BitchatPacket) {
|
||||||
@@ -217,23 +226,33 @@ class BluetoothMeshService: NSObject {
|
|||||||
if let nickname = String(data: packet.payload, encoding: .utf8) {
|
if let nickname = String(data: packet.payload, encoding: .utf8) {
|
||||||
print("[DEBUG] Received announce from \(peerID): \(nickname)")
|
print("[DEBUG] Received announce from \(peerID): \(nickname)")
|
||||||
|
|
||||||
|
// Check if this is the first time we're getting a nickname for this peer
|
||||||
|
let isNewNickname = peerNicknames[peerID] == nil
|
||||||
|
|
||||||
// Store the nickname
|
// Store the nickname
|
||||||
peerNicknames[peerID] = nickname
|
peerNicknames[peerID] = nickname
|
||||||
|
|
||||||
// Add to active peers if not already there
|
// Add to active peers if not already there
|
||||||
if peerID != "unknown" && peerID != myPeerID && !activePeers.contains(peerID) {
|
if peerID != "unknown" && peerID != myPeerID {
|
||||||
print("[DEBUG] Adding new peer \(peerID) to active peers")
|
if !activePeers.contains(peerID) {
|
||||||
activePeers.insert(peerID)
|
print("[DEBUG] Adding new peer \(peerID) to active peers")
|
||||||
DispatchQueue.main.async {
|
activePeers.insert(peerID)
|
||||||
self.delegate?.didConnectToPeer(nickname)
|
}
|
||||||
self.delegate?.didUpdatePeerList(self.getAllConnectedPeerIDs())
|
|
||||||
|
// Show join message if this is a new nickname
|
||||||
|
if isNewNickname {
|
||||||
|
DispatchQueue.main.async {
|
||||||
|
self.delegate?.didConnectToPeer(nickname)
|
||||||
|
self.delegate?.didUpdatePeerList(self.getAllConnectedPeerIDs())
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Just update the peer list
|
||||||
|
DispatchQueue.main.async {
|
||||||
|
self.delegate?.didUpdatePeerList(self.getAllConnectedPeerIDs())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
print("[DEBUG] Peer \(peerID) already active or invalid")
|
print("[DEBUG] Peer \(peerID) is invalid (unknown or self)")
|
||||||
// Just update the peer list to refresh nicknames
|
|
||||||
DispatchQueue.main.async {
|
|
||||||
self.delegate?.didUpdatePeerList(self.getAllConnectedPeerIDs())
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -149,6 +149,7 @@ extension ChatViewModel: BitchatDelegate {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func didUpdatePeerList(_ peers: [String]) {
|
func didUpdatePeerList(_ peers: [String]) {
|
||||||
|
print("[DEBUG] ChatViewModel: Peer list updated with \(peers.count) peers: \(peers)")
|
||||||
connectedPeers = peers
|
connectedPeers = peers
|
||||||
isConnected = !peers.isEmpty
|
isConnected = !peers.isEmpty
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user