From f58955f194d6a3852f07a847e9b05f8e96dca62b Mon Sep 17 00:00:00 2001 From: islam <2553451+qalandarov@users.noreply.github.com> Date: Wed, 15 Oct 2025 03:26:17 +0100 Subject: [PATCH] Explicitly list all Enum cases to get compile-time errors --- bitchat/Noise/NoiseProtocol.swift | 2 +- bitchat/Services/BLEService.swift | 8 ++++---- bitchat/Services/LocationChannelManager.swift | 4 +++- bitchat/ViewModels/ChatViewModel.swift | 12 ++++++------ bitchat/Views/ContentView.swift | 2 +- bitchat/Views/LocationChannelsSheet.swift | 2 +- 6 files changed, 16 insertions(+), 14 deletions(-) diff --git a/bitchat/Noise/NoiseProtocol.swift b/bitchat/Noise/NoiseProtocol.swift index ded7fcfb..f16b4afe 100644 --- a/bitchat/Noise/NoiseProtocol.swift +++ b/bitchat/Noise/NoiseProtocol.swift @@ -767,7 +767,7 @@ final class NoiseHandshakeState { let shared = try localStatic.sharedSecretFromKeyAgreement(with: remoteStatic) symmetricState.mixKey(shared.withUnsafeBytes { Data($0) }) - default: + case .e, .s: break } } diff --git a/bitchat/Services/BLEService.swift b/bitchat/Services/BLEService.swift index c1b4b50c..2dc279c8 100644 --- a/bitchat/Services/BLEService.swift +++ b/bitchat/Services/BLEService.swift @@ -728,7 +728,7 @@ final class BLEService: NSObject { switch MessageType(rawValue: type) { case .noiseEncrypted, .noiseHandshake: return true - default: + case .none, .announce, .message, .leave, .requestSync, .fragment, .fileTransfer: return false } } @@ -1271,7 +1271,7 @@ final class BLEService: NSObject { case .leave: handleLeave(packet, from: PeerID(str: senderID)) - default: + case .none: SecureLogger.warning("⚠️ Unknown message type: \(packet.type)", category: .session) break } @@ -3536,7 +3536,7 @@ extension BLEService { case .leave: handleLeave(packet, from: senderID) - default: + case .none: SecureLogger.warning("⚠️ Unknown message type: \(packet.type)", category: .session) break } @@ -3962,7 +3962,7 @@ extension BLEService { notifyUI { [weak self] in self?.delegate?.didReceiveNoisePayload(from: peerID, type: .verifyResponse, payload: Data(payloadData), timestamp: ts) } - default: + case .none: SecureLogger.warning("⚠️ Unknown noise payload type: \(payloadType)") } } catch NoiseEncryptionError.sessionNotEstablished { diff --git a/bitchat/Services/LocationChannelManager.swift b/bitchat/Services/LocationChannelManager.swift index eda49a47..ed503dc8 100644 --- a/bitchat/Services/LocationChannelManager.swift +++ b/bitchat/Services/LocationChannelManager.swift @@ -64,7 +64,9 @@ final class LocationChannelManager: NSObject, CLLocationManagerDelegate, Observa switch status { case .authorizedAlways, .authorizedWhenInUse, .authorized: break // will compute from location - default: + case .notDetermined, .restricted, .denied: + fallthrough + @unknown default: if case .location(let ch) = selectedChannel { teleported = teleportedSet.contains(ch.geohash) } diff --git a/bitchat/ViewModels/ChatViewModel.swift b/bitchat/ViewModels/ChatViewModel.swift index 82dd524d..ffffb3cc 100644 --- a/bitchat/ViewModels/ChatViewModel.swift +++ b/bitchat/ViewModels/ChatViewModel.swift @@ -1996,7 +1996,7 @@ final class ChatViewModel: ObservableObject, BitchatDelegate { } return false } - default: + case .mesh: break } } @@ -3095,7 +3095,7 @@ final class ChatViewModel: ObservableObject, BitchatDelegate { switch sessionState { case .none, .failed: meshService.triggerHandshake(with: peerID) - default: + case .handshakeQueued, .handshaking, .established: break } } else { @@ -3115,7 +3115,7 @@ final class ChatViewModel: ObservableObject, BitchatDelegate { case .read, .delivered: sentReadReceipts.insert(message.id) privateChatManager.sentReadReceipts.insert(message.id) - default: + case .failed, .partiallyDelivered, .sending, .sent: break } } @@ -3345,7 +3345,7 @@ final class ChatViewModel: ObservableObject, BitchatDelegate { case .established: // Send the message directly without going through sendPrivateMessage to avoid local echo messageRouter.sendPrivate(screenshotMessage, to: peerID, recipientNickname: peerNickname, messageID: UUID().uuidString) - default: + case .none, .failed, .handshakeQueued, .handshaking: // Don't send screenshot notification if no session exists SecureLogger.debug("Skipping screenshot notification to \(peerID) - no established session", category: .security) } @@ -3608,7 +3608,7 @@ final class ChatViewModel: ObservableObject, BitchatDelegate { nostrKeyMapping[convKey] = pub return convKey } - default: + case .mesh: break } // Fallback to mesh nickname resolution @@ -6710,7 +6710,7 @@ private func checkForMentions(_ message: BitchatMessage) { let d = String(id.publicKeyHex.suffix(4)) tokens.append(nickname + "#" + d) } - default: + case .mesh: break } #endif diff --git a/bitchat/Views/ContentView.swift b/bitchat/Views/ContentView.swift index 260df51e..184d7f2c 100644 --- a/bitchat/Views/ContentView.swift +++ b/bitchat/Views/ContentView.swift @@ -1593,7 +1593,7 @@ private extension ContentView { isSending = true progress = Double(reached) / Double(total) } - default: + case .sent, .read, .delivered, .failed: break } } diff --git a/bitchat/Views/LocationChannelsSheet.swift b/bitchat/Views/LocationChannelsSheet.swift index fa282b72..bf6b4bc9 100644 --- a/bitchat/Views/LocationChannelsSheet.swift +++ b/bitchat/Views/LocationChannelsSheet.swift @@ -599,7 +599,7 @@ extension LocationChannelsSheet { switch level { case .region: return "" - default: + case .building, .block, .neighborhood, .city, .province: return "~" } }