Refactor message handling and enhance BLE connection management

- Cleaned up message formatting in MessagesTab for better readability.
- Improved SAR message parsing to include optional inline messages.
- Updated BLE connection manager to monitor RSSI values and added callback for RSSI updates.
- Adjusted drawing message parser to remove sender name from JSON and extract it from packet metadata.
- Enhanced drawing toolbar to reflect changes in message creation without sender name.
- Ensured consistent error handling and logging across BLE operations.
This commit is contained in:
Janez T
2025-10-16 13:32:58 +02:00
parent 5a096c048e
commit 23c439a92e
28 changed files with 957 additions and 4730 deletions

View File

@@ -12,8 +12,9 @@ class DrawingMessageParser {
}
/// Parse drawing message text into MapDrawing object
/// senderName should be extracted from packet metadata
/// Returns null if parsing fails
static MapDrawing? parseDrawingMessage(String text) {
static MapDrawing? parseDrawingMessage(String text, {String? senderName}) {
if (!isDrawingMessage(text)) {
return null;
}
@@ -25,17 +26,18 @@ class DrawingMessageParser {
// Parse JSON
final json = jsonDecode(jsonStr) as Map<String, dynamic>;
// Use compact network format parser
return MapDrawing.fromNetworkJson(json);
// Use ultra-compact network format parser
// Sender name comes from packet metadata, not JSON
return MapDrawing.fromNetworkJson(json, senderName: senderName);
} catch (e) {
return null;
}
}
/// Create drawing message text from MapDrawing object
/// Includes sender name in the message
static String createDrawingMessage(MapDrawing drawing, String senderName) {
final json = drawing.toNetworkJson(senderName);
/// Sender will be determined from packet metadata on receiving end
static String createDrawingMessage(MapDrawing drawing) {
final json = drawing.toNetworkJson();
final jsonStr = jsonEncode(json);
return '$prefix$jsonStr';
}