From d4967ae9c3e4ebeb4101d25c91c91e137a3d55b4 Mon Sep 17 00:00:00 2001 From: Islam <2553451+qalandarov@users.noreply.github.com> Date: Sun, 19 Oct 2025 13:36:06 +0100 Subject: [PATCH] PeerID 26/n: `FingerprintView` (#833) --- bitchat/Views/ContentView.swift | 2 +- bitchat/Views/FingerprintView.swift | 17 ++++++++--------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/bitchat/Views/ContentView.swift b/bitchat/Views/ContentView.swift index 4be6cd54..05b70da4 100644 --- a/bitchat/Views/ContentView.swift +++ b/bitchat/Views/ContentView.swift @@ -199,7 +199,7 @@ struct ContentView: View { set: { _ in viewModel.showingFingerprintFor = nil } )) { if let peerID = viewModel.showingFingerprintFor { - FingerprintView(viewModel: viewModel, peerID: peerID.id) + FingerprintView(viewModel: viewModel, peerID: peerID) } } #if os(iOS) diff --git a/bitchat/Views/FingerprintView.swift b/bitchat/Views/FingerprintView.swift index 5b198cef..51555d77 100644 --- a/bitchat/Views/FingerprintView.swift +++ b/bitchat/Views/FingerprintView.swift @@ -10,7 +10,7 @@ import SwiftUI struct FingerprintView: View { @ObservedObject var viewModel: ChatViewModel - let peerID: String + let peerID: PeerID @Environment(\.dismiss) var dismiss @Environment(\.colorScheme) var colorScheme @@ -65,15 +65,15 @@ struct FingerprintView: View { VStack(alignment: .leading, spacing: 16) { // Prefer short mesh ID for session/encryption status - let statusPeerID: String = { - if peerID.count == 64, let short = viewModel.getShortIDForNoiseKey(peerID) { return short.id } + let statusPeerID: PeerID = { + if peerID.id.count == 64, let short = viewModel.getShortIDForNoiseKey(peerID.id) { return short } return peerID }() // Resolve a friendly name let peerNickname: String = { - if let p = viewModel.getPeer(byID: PeerID(str: statusPeerID)) { return p.displayName } - if let name = viewModel.meshService.peerNickname(peerID: PeerID(str: statusPeerID)) { return name } - if peerID.count == 64, let data = Data(hexString: peerID) { + if let p = viewModel.getPeer(byID: statusPeerID) { return p.displayName } + if let name = viewModel.meshService.peerNickname(peerID: statusPeerID) { return name } + if let data = peerID.noiseKey { if let fav = FavoritesPersistenceService.shared.getFavoriteStatus(for: data), !fav.peerNickname.isEmpty { return fav.peerNickname } let fp = data.sha256Fingerprint() if let social = viewModel.identityManager.getSocialIdentity(for: fp) { @@ -84,7 +84,7 @@ struct FingerprintView: View { return Strings.unknownPeer() }() // Accurate encryption state based on short ID session - let encryptionStatus = viewModel.getEncryptionStatus(for: PeerID(str: statusPeerID)) + let encryptionStatus = viewModel.getEncryptionStatus(for: statusPeerID) HStack { if let icon = encryptionStatus.icon { @@ -115,7 +115,7 @@ struct FingerprintView: View { .font(.bitchatSystem(size: 12, weight: .bold, design: .monospaced)) .foregroundColor(textColor.opacity(0.7)) - if let fingerprint = viewModel.getFingerprint(for: PeerID(str: statusPeerID)) { + if let fingerprint = viewModel.getFingerprint(for: statusPeerID) { Text(formatFingerprint(fingerprint)) .font(.bitchatSystem(size: 14, design: .monospaced)) .foregroundColor(textColor) @@ -176,7 +176,6 @@ struct FingerprintView: View { // Verification status if encryptionStatus == .noiseSecured || encryptionStatus == .noiseVerified { let isVerified = encryptionStatus == .noiseVerified - let peerID = PeerID(str: peerID) VStack(spacing: 12) { Text(isVerified ? Strings.verifiedBadge : Strings.notVerifiedBadge)