mirror of
https://github.com/permissionlesstech/bitchat.git
synced 2026-07-25 18:25:19 +00:00
Adds O(1) method for peer nickname retrieval (#450)
* Adds O(1) method for peerNickname retrieval * Uses peerNickname method where possible
This commit is contained in:
@@ -336,7 +336,14 @@ final class BLEService: NSObject {
|
||||
}()
|
||||
return collectionsQueue.sync { peers[shortID]?.isConnected ?? false }
|
||||
}
|
||||
|
||||
|
||||
func peerNickname(peerID: String) -> String? {
|
||||
collectionsQueue.sync {
|
||||
guard let peer = peers[peerID], peer.isConnected else { return nil }
|
||||
return peer.nickname
|
||||
}
|
||||
}
|
||||
|
||||
func getPeerNicknames() -> [String: String] {
|
||||
return collectionsQueue.sync {
|
||||
Dictionary(uniqueKeysWithValues: peers.compactMap { (id, info) in
|
||||
|
||||
@@ -119,7 +119,7 @@ class CommandProcessor {
|
||||
|
||||
if chatViewModel?.selectedPrivateChatPeer != nil {
|
||||
// In private chat
|
||||
if let peerNickname = meshService?.getPeerNicknames()[targetPeerID] {
|
||||
if let peerNickname = meshService?.peerNickname(peerID: targetPeerID) {
|
||||
let personalMessage = "* \(emoji) \(myNickname) \(action) you\(suffix) *"
|
||||
meshService?.sendPrivateMessage(personalMessage, to: targetPeerID,
|
||||
recipientNickname: peerNickname,
|
||||
|
||||
@@ -31,6 +31,7 @@ final class NostrTransport: Transport {
|
||||
func emergencyDisconnectAll() { /* no-op */ }
|
||||
|
||||
func isPeerConnected(_ peerID: String) -> Bool { false }
|
||||
func peerNickname(peerID: String) -> String? { nil }
|
||||
func getPeerNicknames() -> [String : String] { [:] }
|
||||
|
||||
func getFingerprint(for peerID: String) -> String? { nil }
|
||||
|
||||
@@ -53,7 +53,7 @@ class PrivateChatManager: ObservableObject {
|
||||
/// Send a private message
|
||||
func sendMessage(_ content: String, to peerID: String) {
|
||||
guard let meshService = meshService,
|
||||
let peerNickname = meshService.getPeerNicknames()[peerID] else {
|
||||
let peerNickname = meshService.peerNickname(peerID: peerID) else {
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
@@ -29,6 +29,7 @@ protocol Transport: AnyObject {
|
||||
|
||||
// Connectivity and peers
|
||||
func isPeerConnected(_ peerID: String) -> Bool
|
||||
func peerNickname(peerID: String) -> String?
|
||||
func getPeerNicknames() -> [String: String]
|
||||
|
||||
// Protocol utilities
|
||||
|
||||
@@ -279,7 +279,7 @@ class UnifiedPeerService: ObservableObject, TransportPeerEventsDelegate {
|
||||
|
||||
if actualNickname.isEmpty {
|
||||
// Try to get from mesh service's current peer list
|
||||
if let meshPeerNickname = meshService.getPeerNicknames()[peerID] {
|
||||
if let meshPeerNickname = meshService.peerNickname(peerID: peerID) {
|
||||
actualNickname = meshPeerNickname
|
||||
SecureLogger.log("🔍 Got nickname from mesh service: '\(actualNickname)'",
|
||||
category: SecureLogger.session, level: .debug)
|
||||
|
||||
Reference in New Issue
Block a user