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:
Mateusz Matoszko
2025-08-17 21:29:15 +02:00
committed by GitHub
parent 4f1ac30f12
commit 7836daa6d3
10 changed files with 31 additions and 18 deletions
+8 -1
View File
@@ -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
+1 -1
View File
@@ -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,
+1
View File
@@ -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 }
+1 -1
View File
@@ -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
}
+1
View File
@@ -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
+1 -1
View File
@@ -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)