diff --git a/lib/screens/channel_chat_screen.dart b/lib/screens/channel_chat_screen.dart index 155aef4..4c64b7d 100644 --- a/lib/screens/channel_chat_screen.dart +++ b/lib/screens/channel_chat_screen.dart @@ -855,7 +855,7 @@ class _ChannelChatScreenState extends State { ); } - void _shareLocation() { + Future _shareLocation() async { final connector = context.read(); final lat = connector.selfLatitude; final lon = connector.selfLongitude; @@ -866,8 +866,34 @@ class _ChannelChatScreenState extends State { return; } - final label = + final defaultLabel = '${connector.deviceDisplayName} ${DateTime.now().toUtc().toIso8601String()}'; + final controller = TextEditingController(text: defaultLabel); + + final label = await showDialog( + context: context, + builder: (context) => AlertDialog( + title: Text(context.l10n.chat_shareLocation), + content: TextField( + controller: controller, + decoration: InputDecoration(labelText: context.l10n.chat_location), + autofocus: true, + ), + actions: [ + TextButton( + onPressed: () => Navigator.pop(context), + child: Text(context.l10n.common_cancel), + ), + TextButton( + onPressed: () => Navigator.pop(context, controller.text.trim()), + child: Text(context.l10n.common_save), + ), + ], + ), + ); + + if (label == null || label.isEmpty) return; + final markerText = 'm:${lat.toStringAsFixed(6)},${lon.toStringAsFixed(6)}|$label|loc'; connector.sendChannelMessage(widget.channel, markerText); diff --git a/lib/screens/chat_screen.dart b/lib/screens/chat_screen.dart index 5440f57..cddeadf 100644 --- a/lib/screens/chat_screen.dart +++ b/lib/screens/chat_screen.dart @@ -505,7 +505,7 @@ class _ChatScreenState extends State { ); } - void _shareLocation(MeshCoreConnector connector) async { + Future _shareLocation(MeshCoreConnector connector) async { final lat = connector.selfLatitude; final lon = connector.selfLongitude; if (lat == null || lon == null) { @@ -515,10 +515,34 @@ class _ChatScreenState extends State { return; } - // Use the contact name + ISO timestamp as the marker label so the recipient - // can see when the location was shared. - final label = - '${widget.contact.name}: ${DateTime.now().toUtc().toIso8601String()}'; + final defaultLabel = + '${connector.deviceDisplayName} ${DateTime.now().toUtc().toIso8601String()}'; + final controller = TextEditingController(text: defaultLabel); + + final label = await showDialog( + context: context, + builder: (context) => AlertDialog( + title: Text(context.l10n.chat_shareLocation), + content: TextField( + controller: controller, + decoration: InputDecoration(labelText: context.l10n.chat_location), + autofocus: true, + ), + actions: [ + TextButton( + onPressed: () => Navigator.pop(context), + child: Text(context.l10n.common_cancel), + ), + TextButton( + onPressed: () => Navigator.pop(context, controller.text.trim()), + child: Text(context.l10n.common_save), + ), + ], + ), + ); + + if (label == null || label.isEmpty) return; + final markerText = 'm:${lat.toStringAsFixed(6)},${lon.toStringAsFixed(6)}|$label|loc'; connector.sendMessage(widget.contact, markerText);