Fix blank message row and API misuse warnings

- Fix blank row appearing when peer disconnects by ensuring display names are never empty
- Add validation to prevent system messages with empty content from being displayed
- Fix API MISUSE warnings by adding connection state checks before writing to peripherals
- Improve write queue processing with additional safety checks
- Update activity tracking when processing queued writes

These fixes address UI glitches and improve Bluetooth reliability.
This commit is contained in:
jack
2025-07-23 21:02:51 +02:00
parent a33ba1678b
commit 391c80ef14
2 changed files with 38 additions and 14 deletions
+13 -5
View File
@@ -1953,9 +1953,11 @@ extension ChatViewModel: BitchatDelegate {
}
}
} else {
// System message - always add
messages.append(finalMessage)
messages.sort { $0.timestamp < $1.timestamp }
// System message - check for empty content before adding
if !finalMessage.content.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty {
messages.append(finalMessage)
messages.sort { $0.timestamp < $1.timestamp }
}
}
}
@@ -2067,9 +2069,12 @@ extension ChatViewModel: BitchatDelegate {
// Resolve nickname using helper
let displayName = resolveNickname(for: peerID)
// Ensure we have a valid display name
let finalDisplayName = displayName.isEmpty ? "peer" : displayName
let systemMessage = BitchatMessage(
sender: "system",
content: "\(displayName) connected",
content: "\(finalDisplayName) connected",
timestamp: Date(),
isRelay: false,
originalSender: nil
@@ -2098,9 +2103,12 @@ extension ChatViewModel: BitchatDelegate {
// Resolve nickname using helper
let displayName = resolveNickname(for: peerID)
// Ensure we have a valid display name
let finalDisplayName = displayName.isEmpty ? "peer" : displayName
let systemMessage = BitchatMessage(
sender: "system",
content: "\(displayName) disconnected",
content: "\(finalDisplayName) disconnected",
timestamp: Date(),
isRelay: false,
originalSender: nil