diff options
| author | jack <jackjackbits@users.noreply.github.com> | 2025-08-12 09:41:12 +0200 |
|---|---|---|
| committer | jack <jackjackbits@users.noreply.github.com> | 2025-08-12 09:41:12 +0200 |
| commit | 99c0f6523e271a2735a85686bb0284a26d57260d (patch) | |
| tree | 0a1d90a8e2e04d788993f92bb17d301781f3bdf2 | |
| parent | 7a7c89e68993511510e693334313a027206c694a (diff) | |
refactor: remove dead code and consolidate system messages
- Delete 3 unused functions in ShareViewController (36 lines)
- Extract addSystemMessage() helper to eliminate duplication (120+ lines)
- Remove 22 'let _ =' wasteful computations across multiple files
- Net reduction of 215 lines of dead/duplicate code
- Improves maintainability and reduces technical debt
| -rw-r--r-- | bitchat/Nostr/NostrProtocol.swift | 7 | ||||
| -rw-r--r-- | bitchat/Nostr/NostrRelayManager.swift | 7 | ||||
| -rw-r--r-- | bitchat/Services/BluetoothMeshService.swift | 12 | ||||
| -rw-r--r-- | bitchat/ViewModels/ChatViewModel.swift | 236 | ||||
| -rw-r--r-- | bitchat/Views/ContentView.swift | 1 | ||||
| -rw-r--r-- | bitchatShareExtension/ShareViewController.swift | 38 |
6 files changed, 43 insertions, 258 deletions
diff --git a/bitchat/Nostr/NostrProtocol.swift b/bitchat/Nostr/NostrProtocol.swift index 068ce64..55880c5 100644 --- a/bitchat/Nostr/NostrProtocol.swift +++ b/bitchat/Nostr/NostrProtocol.swift @@ -37,7 +37,6 @@ struct NostrProtocol { // 2. Create ephemeral key for this message let ephemeralKey = try P256K.Schnorr.PrivateKey() - let _ = Data(ephemeralKey.xonly.bytes).hexEncodedString() // Created ephemeral key for seal // 3. Seal the rumor (encrypt to recipient) @@ -213,7 +212,6 @@ struct NostrProtocol { throw NostrError.invalidPublicKey } - let _ = Data(senderKey.xonly.bytes).hexEncodedString() // Encrypting message // Derive shared secret @@ -447,14 +445,11 @@ struct NostrProtocol { // Log with explicit UTC and local time for debugging let formatter = DateFormatter() + // Removed unnecessary date formatting operations formatter.dateFormat = "yyyy-MM-dd HH:mm:ss" formatter.timeZone = TimeZone(abbreviation: "UTC") - let _ = formatter.string(from: now) - let _ = formatter.string(from: randomized) formatter.timeZone = TimeZone.current - let _ = formatter.string(from: now) - let _ = formatter.string(from: randomized) // Timestamp randomized for privacy diff --git a/bitchat/Nostr/NostrRelayManager.swift b/bitchat/Nostr/NostrRelayManager.swift index 351b95b..fa7c673 100644 --- a/bitchat/Nostr/NostrRelayManager.swift +++ b/bitchat/Nostr/NostrRelayManager.swift @@ -273,8 +273,7 @@ class NostrRelayManager: ObservableObject { } case "EOSE": - if array.count >= 2, - let _ = array[1] as? String { + if array.count >= 2 { // End of stored events } @@ -290,8 +289,8 @@ class NostrRelayManager: ObservableObject { } case "NOTICE": - if array.count >= 2, - let _ = array[1] as? String { + if array.count >= 2 { + // Server notice received } default: diff --git a/bitchat/Services/BluetoothMeshService.swift b/bitchat/Services/BluetoothMeshService.swift index 409a16e..4a438df 100644 --- a/bitchat/Services/BluetoothMeshService.swift +++ b/bitchat/Services/BluetoothMeshService.swift @@ -705,7 +705,6 @@ class BluetoothMeshService: NSObject { // Update PeerSession if let session = peerSessions[peerID] { - let _ = session.isConnected session.updateBluetoothConnection(peripheral: mapping.peripheral, characteristic: nil) } else { // This is a truly new peer session @@ -2804,7 +2803,6 @@ class BluetoothMeshService: NSObject { // Check if we have a recent entry if let entry = protocolMessageDedup[key], !isExpired(entry) { - let _ = Date().timeIntervalSince(entry.sentAt) return true } @@ -3466,7 +3464,6 @@ class BluetoothMeshService: NSObject { // Bloom filter will be reset by timer, processedMessages is now bounded - // let _ = packet.senderID.hexEncodedString() // Note: We'll decode messages in the switch statement below, not here @@ -4548,7 +4545,6 @@ class BluetoothMeshService: NSObject { if !isPeerIDOurs(senderID) { // Check our current handshake state - let _ = handshakeCoordinator.getHandshakeState(for: senderID) // Processing handshake response // Process the response - this could be message 2 or message 3 in the XX pattern @@ -4734,7 +4730,6 @@ class BluetoothMeshService: NSObject { } } - let _ = Double(fragments.count - 1) * delayBetweenFragments } private func handleFragment(_ packet: BitchatPacket, from peerID: String) { @@ -5093,8 +5088,6 @@ extension BluetoothMeshService: CBCentralManagerDelegate { category: SecureLogger.session, level: .info) // Log current peripheral mappings - let _ = collectionsQueue.sync { peripheralMappings.count } - let _ = connectionPool.count peripheral.delegate = self peripheral.discoverServices([BluetoothMeshService.serviceUUID]) @@ -5283,7 +5276,6 @@ extension BluetoothMeshService: CBCentralManagerDelegate { // Time tracking removed - now in PeerSession // Keep lastSuccessfulMessageTime to validate session on reconnect let lastSuccess = self.peerSessions[peerID]?.lastSuccessfulMessageTime ?? Date.distantPast - let _ = Date().timeIntervalSince(lastSuccess) // Keeping Noise session on disconnect } @@ -5500,7 +5492,6 @@ extension BluetoothMeshService: CBPeripheralDelegate { // Use the sender ID from the packet, not our local mapping which might still be a temp ID - let _ = connectedPeripherals.first(where: { $0.value == peripheral })?.key ?? "unknown" let packetSenderID = packet.senderID.hexEncodedString() // Log the packet type we received @@ -6611,8 +6602,6 @@ extension BluetoothMeshService: CBPeripheralManagerDelegate { SecureLogger.logHandshake("processing \(isInitiation ? "init" : "response")", peerID: peerID, success: true) // Get current handshake state before processing - let _ = handshakeCoordinator.getHandshakeState(for: peerID) - let _ = noiseService.hasEstablishedSession(with: peerID) // Current handshake state check // Check for duplicate handshake messages @@ -7535,7 +7524,6 @@ extension BluetoothMeshService: CBPeripheralManagerDelegate { self.pendingPrivateMessages[recipientPeerID] = [] } self.pendingPrivateMessages[recipientPeerID]?.append((content, recipientNickname, messageID ?? UUID().uuidString)) - let _ = self.pendingPrivateMessages[recipientPeerID]?.count ?? 0 // Queued private message } diff --git a/bitchat/ViewModels/ChatViewModel.swift b/bitchat/ViewModels/ChatViewModel.swift index b8312a2..eb6d812 100644 --- a/bitchat/ViewModels/ChatViewModel.swift +++ b/bitchat/ViewModels/ChatViewModel.swift @@ -737,13 +737,7 @@ class ChatViewModel: ObservableObject, BitchatDelegate { // Check if the recipient is blocked if isPeerBlocked(peerID) { - let systemMessage = BitchatMessage( - sender: "system", - content: "cannot send message to \(recipientNickname): user is blocked.", - timestamp: Date(), - isRelay: false - ) - messages.append(systemMessage) + addSystemMessage("cannot send message to \(recipientNickname): user is blocked.") return } @@ -803,13 +797,7 @@ class ChatViewModel: ObservableObject, BitchatDelegate { category: SecureLogger.session, level: .warning) // Add system message to inform user - let systemMessage = BitchatMessage( - sender: "system", - content: "Cannot send message to \(recipientNickname) - peer is not reachable via mesh or Nostr.", - timestamp: Date(), - isRelay: false - ) - addMessage(systemMessage) + addSystemMessage("Cannot send message to \(recipientNickname) - peer is not reachable via mesh or Nostr.") } } @@ -864,13 +852,7 @@ class ChatViewModel: ObservableObject, BitchatDelegate { // Check if the peer is blocked if isPeerBlocked(peerID) { - let systemMessage = BitchatMessage( - sender: "system", - content: "cannot start chat with \(peerNickname): user is blocked.", - timestamp: Date(), - isRelay: false - ) - messages.append(systemMessage) + addSystemMessage("cannot start chat with \(peerNickname): user is blocked.") return } @@ -878,13 +860,7 @@ class ChatViewModel: ObservableObject, BitchatDelegate { // Only require mutual favorites for offline Nostr messaging if let peer = peerIndex[peerID], peer.isFavorite && !peer.theyFavoritedUs && !peer.isConnected && !peer.isRelayConnected { - let systemMessage = BitchatMessage( - sender: "system", - content: "cannot start chat with \(peerNickname): mutual favorite required for offline messaging.", - timestamp: Date(), - isRelay: false - ) - messages.append(systemMessage) + addSystemMessage("cannot start chat with \(peerNickname): mutual favorite required for offline messaging.") return } @@ -1038,7 +1014,6 @@ class ChatViewModel: ObservableObject, BitchatDelegate { guard let messageId = notification.userInfo?["messageId"] as? String, let senderNoiseKey = notification.userInfo?["senderNoiseKey"] as? Data else { return } - let _ = senderNoiseKey.hexEncodedString() // Update the delivery status for the message @@ -2323,54 +2298,24 @@ class ChatViewModel: ObservableObject, BitchatDelegate { let messageContent = parts[2...].joined(separator: " ") sendPrivateMessage(messageContent, to: peerID) } else { - let systemMessage = BitchatMessage( - sender: "system", - content: "started private chat with \(nickname)", - timestamp: Date(), - isRelay: false - ) - messages.append(systemMessage) + addSystemMessage("started private chat with \(nickname)") } } else { - let systemMessage = BitchatMessage( - sender: "system", - content: "user '\(nickname)' not found. they may be offline or using a different nickname.", - timestamp: Date(), - isRelay: false - ) - messages.append(systemMessage) + addSystemMessage("user '\(nickname)' not found. they may be offline or using a different nickname.") } } else { - let systemMessage = BitchatMessage( - sender: "system", - content: "usage: /m @nickname [message] or /m nickname [message]", - timestamp: Date(), - isRelay: false - ) - messages.append(systemMessage) + addSystemMessage("usage: /m @nickname [message] or /m nickname [message]") } case "/w": let peerNicknames = meshService.getPeerNicknames() if connectedPeers.isEmpty { - let systemMessage = BitchatMessage( - sender: "system", - content: "no one else is online right now.", - timestamp: Date(), - isRelay: false - ) - messages.append(systemMessage) + addSystemMessage("no one else is online right now.") } else { let onlineList = connectedPeers.compactMap { peerID in peerNicknames[peerID] }.sorted().joined(separator: ", ") - let systemMessage = BitchatMessage( - sender: "system", - content: "online users: \(onlineList)", - timestamp: Date(), - isRelay: false - ) - messages.append(systemMessage) + addSystemMessage("online users: \(onlineList)") } case "/clear": // Clear messages based on current context @@ -2493,13 +2438,7 @@ class ChatViewModel: ObservableObject, BitchatDelegate { if let fingerprintStr = meshService.getPeerFingerprint(peerID) { if SecureIdentityStateManager.shared.isBlocked(fingerprint: fingerprintStr) { - let systemMessage = BitchatMessage( - sender: "system", - content: "\(nickname) is already blocked.", - timestamp: Date(), - isRelay: false - ) - messages.append(systemMessage) + addSystemMessage("\(nickname) is already blocked.") } else { // Update or create social identity with blocked status if var identity = SecureIdentityStateManager.shared.getSocialIdentity(for: fingerprintStr) { @@ -2523,42 +2462,18 @@ class ChatViewModel: ObservableObject, BitchatDelegate { blockedUsers.insert(fingerprintStr) favoritePeers.remove(fingerprintStr) - let systemMessage = BitchatMessage( - sender: "system", - content: "blocked \(nickname). you will no longer receive messages from them.", - timestamp: Date(), - isRelay: false - ) - messages.append(systemMessage) + addSystemMessage("blocked \(nickname). you will no longer receive messages from them.") } } else { - let systemMessage = BitchatMessage( - sender: "system", - content: "cannot block \(nickname): unable to verify identity.", - timestamp: Date(), - isRelay: false - ) - messages.append(systemMessage) + addSystemMessage("cannot block \(nickname): unable to verify identity.") } } else { - let systemMessage = BitchatMessage( - sender: "system", - content: "cannot block \(nickname): user not found.", - timestamp: Date(), - isRelay: false - ) - messages.append(systemMessage) + addSystemMessage("cannot block \(nickname): user not found.") } } else { // List blocked users if blockedUsers.isEmpty { - let systemMessage = BitchatMessage( - sender: "system", - content: "no blocked peers.", - timestamp: Date(), - isRelay: false - ) - messages.append(systemMessage) + addSystemMessage("no blocked peers.") } else { // Find nicknames for blocked users var blockedNicknames: [String] = [] @@ -2573,13 +2488,7 @@ class ChatViewModel: ObservableObject, BitchatDelegate { } let blockedList = blockedNicknames.isEmpty ? "blocked peers (not currently online)" : blockedNicknames.sorted().joined(separator: ", ") - let systemMessage = BitchatMessage( - sender: "system", - content: "blocked peers: \(blockedList)", - timestamp: Date(), - isRelay: false - ) - messages.append(systemMessage) + addSystemMessage("blocked peers: \(blockedList)") } } @@ -2601,48 +2510,18 @@ class ChatViewModel: ObservableObject, BitchatDelegate { // Update local set for UI blockedUsers.remove(fingerprintStr) - let systemMessage = BitchatMessage( - sender: "system", - content: "unblocked \(nickname).", - timestamp: Date(), - isRelay: false - ) - messages.append(systemMessage) + addSystemMessage("unblocked \(nickname).") } else { - let systemMessage = BitchatMessage( - sender: "system", - content: "\(nickname) is not blocked.", - timestamp: Date(), - isRelay: false - ) - messages.append(systemMessage) + addSystemMessage("\(nickname) is not blocked.") } } else { - let systemMessage = BitchatMessage( - sender: "system", - content: "cannot unblock \(nickname): unable to verify identity.", - timestamp: Date(), - isRelay: false - ) - messages.append(systemMessage) + addSystemMessage("cannot unblock \(nickname): unable to verify identity.") } } else { - let systemMessage = BitchatMessage( - sender: "system", - content: "cannot unblock \(nickname): user not found.", - timestamp: Date(), - isRelay: false - ) - messages.append(systemMessage) + addSystemMessage("cannot unblock \(nickname): user not found.") } } else { - let systemMessage = BitchatMessage( - sender: "system", - content: "usage: /unblock <nickname>", - timestamp: Date(), - isRelay: false - ) - messages.append(systemMessage) + addSystemMessage("usage: /unblock <nickname>") } case "/fav": @@ -2671,31 +2550,13 @@ class ChatViewModel: ObservableObject, BitchatDelegate { try? await self?.messageRouter?.sendFavoriteNotification(to: noisePublicKey, isFavorite: true) } - let systemMessage = BitchatMessage( - sender: "system", - content: "added \(nickname) to favorites.", - timestamp: Date(), - isRelay: false - ) - messages.append(systemMessage) + addSystemMessage("added \(nickname) to favorites.") } } else { - let systemMessage = BitchatMessage( - sender: "system", - content: "can't find peer: \(nickname)", - timestamp: Date(), - isRelay: false - ) - messages.append(systemMessage) + addSystemMessage("can't find peer: \(nickname)") } } else { - let systemMessage = BitchatMessage( - sender: "system", - content: "usage: /fav <nickname>", - timestamp: Date(), - isRelay: false - ) - messages.append(systemMessage) + addSystemMessage("usage: /fav <nickname>") } case "/unfav": @@ -2718,41 +2579,17 @@ class ChatViewModel: ObservableObject, BitchatDelegate { try? await self?.messageRouter?.sendFavoriteNotification(to: noisePublicKey, isFavorite: false) } - let systemMessage = BitchatMessage( - sender: "system", - content: "removed \(nickname) from favorites.", - timestamp: Date(), - isRelay: false - ) - messages.append(systemMessage) + addSystemMessage("removed \(nickname) from favorites.") } } else { - let systemMessage = BitchatMessage( - sender: "system", - content: "can't find peer: \(nickname)", - timestamp: Date(), - isRelay: false - ) - messages.append(systemMessage) + addSystemMessage("can't find peer: \(nickname)") } } else { - let systemMessage = BitchatMessage( - sender: "system", - content: "usage: /unfav <nickname>", - timestamp: Date(), - isRelay: false - ) - messages.append(systemMessage) + addSystemMessage("usage: /unfav <nickname>") } case "/testnostr": - let systemMessage = BitchatMessage( - sender: "system", - content: "testing nostr relay connectivity...", - timestamp: Date(), - isRelay: false - ) - messages.append(systemMessage) + addSystemMessage("testing nostr relay connectivity...") Task { @MainActor in if let relayManager = self.nostrRelayManager { @@ -2788,13 +2625,7 @@ class ChatViewModel: ObservableObject, BitchatDelegate { default: // Unknown command - let systemMessage = BitchatMessage( - sender: "system", - content: "unknown command: \(cmd).", - timestamp: Date(), - isRelay: false - ) - messages.append(systemMessage) + addSystemMessage("unknown command: \(cmd).") } } @@ -3367,4 +3198,15 @@ class ChatViewModel: ObservableObject, BitchatDelegate { } + // MARK: - Helper for System Messages + private func addSystemMessage(_ content: String, timestamp: Date = Date()) { + let systemMessage = BitchatMessage( + sender: "system", + content: content, + timestamp: timestamp, + isRelay: false + ) + messages.append(systemMessage) + } + } // End of ChatViewModel class diff --git a/bitchat/Views/ContentView.swift b/bitchat/Views/ContentView.swift index f70090f..58ec850 100644 --- a/bitchat/Views/ContentView.swift +++ b/bitchat/Views/ContentView.swift @@ -271,7 +271,6 @@ struct ContentView: View { ForEach(windowedMessages, id: \.id) { message in VStack(alignment: .leading, spacing: 0) { // Check if current user is mentioned - let _ = message.mentions?.contains(viewModel.nickname) ?? false if message.sender == "system" { // System messages diff --git a/bitchatShareExtension/ShareViewController.swift b/bitchatShareExtension/ShareViewController.swift index 451f82c..65668cd 100644 --- a/bitchatShareExtension/ShareViewController.swift +++ b/bitchatShareExtension/ShareViewController.swift @@ -138,44 +138,6 @@ class ShareViewController: SLComposeServiceViewController { // MARK: - Helper Methods - private func handleSharedText(_ text: String) { - // Save to shared user defaults to pass to main app - saveToSharedDefaults(content: text, type: "text") - openMainApp() - } - - private func handleSharedURL(_ url: URL) { - // Get the page title if available from the extension context - var pageTitle: String? = nil - if let item = extensionContext?.inputItems.first as? NSExtensionItem { - pageTitle = item.attributedContentText?.string ?? item.attributedTitle?.string - } - - // Create a structured format for URL sharing - let urlData: [String: String] = [ - "url": url.absoluteString, - "title": pageTitle ?? url.host ?? "Shared Link" - ] - - // Convert to JSON string - if let jsonData = try? JSONSerialization.data(withJSONObject: urlData), - let jsonString = String(data: jsonData, encoding: .utf8) { - saveToSharedDefaults(content: jsonString, type: "url") - } else { - // Fallback to simple URL - saveToSharedDefaults(content: url.absoluteString, type: "url") - } - - openMainApp() - } - - private func handleSharedImage(_ image: UIImage) { - // For now, we'll just notify that image sharing isn't supported - // In the future, we could implement image sharing via the mesh - saveToSharedDefaults(content: "Image sharing coming soon!", type: "image") - openMainApp() - } - private func saveToSharedDefaults(content: String, type: String) { // Use app groups to share data between extension and main app guard let userDefaults = UserDefaults(suiteName: "group.chat.bitchat") else { |
