feat: Share contact as meshcore:// URL via clipboard

This commit is contained in:
Janez T
2026-03-17 10:07:02 +01:00
parent e4c8709ee2
commit 372224a62c
2 changed files with 48 additions and 3 deletions

View File

@@ -1,6 +1,5 @@
import 'dart:typed_data';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:provider/provider.dart';
import 'package:geolocator/geolocator.dart';
import 'package:latlong2/latlong.dart';
@@ -371,6 +370,35 @@ class ContactTile extends StatelessWidget {
}
},
),
if (!contact.isChannel)
ListTile(
leading: const Icon(Icons.share_outlined),
title: const Text('Share Contact'),
onTap: () async {
Navigator.pop(sheetContext);
final connectionProvider =
context.read<ConnectionProvider>();
final url = await connectionProvider.exportContactUrl(
contact.publicKey,
);
if (url != null && context.mounted) {
await Clipboard.setData(ClipboardData(text: url));
if (context.mounted) {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('Contact link copied to clipboard'),
),
);
}
} else if (context.mounted) {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('Failed to export contact'),
),
);
}
},
),
ListTile(
leading: const Icon(Icons.message_outlined),
title: Text(l10n.messages),