From fa4da979af2c7ad4cead7b06d7b8d32528e838b6 Mon Sep 17 00:00:00 2001 From: zjs81 Date: Sat, 14 Mar 2026 09:54:50 -0700 Subject: [PATCH] feat: enhance location update feedback and improve message retry error handling --- lib/screens/map_screen.dart | 5 +++-- lib/services/message_retry_service.dart | 11 ++++++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/screens/map_screen.dart b/lib/screens/map_screen.dart index 402a4ee..1dd3a5f 100644 --- a/lib/screens/map_screen.dart +++ b/lib/screens/map_screen.dart @@ -1514,15 +1514,16 @@ class _MapScreenState extends State { title: Text(context.l10n.map_setAsMyLocation), onTap: () async { final messenger = ScaffoldMessenger.of(context); - final message = context.l10n.settings_locationUpdated; + final successMsg = context.l10n.settings_locationUpdated; Navigator.pop(sheetContext); + if (!connector.isConnected) return; await connector.setNodeLocation( lat: position.latitude, lon: position.longitude, ); await connector.refreshDeviceInfo(); if (!mounted) return; - messenger.showSnackBar(SnackBar(content: Text(message))); + messenger.showSnackBar(SnackBar(content: Text(successMsg))); }, ), ListTile( diff --git a/lib/services/message_retry_service.dart b/lib/services/message_retry_service.dart index 56d7b82..db4475f 100644 --- a/lib/services/message_retry_service.dart +++ b/lib/services/message_retry_service.dart @@ -184,7 +184,16 @@ class MessageRetryService extends ChangeNotifier { final messageId = queue.removeAt(0); if (_pendingMessages.containsKey(messageId)) { _activeMessages.add(messageId); - _attemptSend(messageId); + _attemptSend(messageId).catchError((e) { + debugPrint('_attemptSend threw for $messageId: $e'); + final msg = _pendingMessages[messageId]; + if (msg != null) { + final failed = msg.copyWith(status: MessageStatus.failed); + _pendingMessages[messageId] = failed; + _updateMessageCallback?.call(failed); + } + _onMessageResolved(messageId, contactKey); + }); return; } // Message was cancelled/cleaned up while queued — try next