Update MeshCoreBleService calls

This commit is contained in:
Janez T
2026-03-02 10:33:49 +01:00
parent a8c4bee976
commit e85e290265
2 changed files with 42 additions and 3 deletions

View File

@@ -173,7 +173,15 @@ class _ImageMessageBubbleState extends State<ImageMessageBubble> {
Future<void> _requestAndFetch(ImageEnvelope envelope) async {
if (_isRequesting) return;
final sender = _resolveSender(envelope);
var sender = _resolveSender(envelope);
if (sender == null) {
final conn = context.read<ConnectionProvider>();
// Retry once after refreshing contacts; resumable sessions may outlive
// the in-memory contact cache.
await conn.getContacts();
if (!mounted) return;
sender = _resolveSender(envelope);
}
if (sender == null) {
setState(() => _errorText = 'Sender not reachable');
return;
@@ -223,7 +231,21 @@ class _ImageMessageBubbleState extends State<ImageMessageBubble> {
);
if (c != null) return c;
}
return contactsProvider.findContactByPrefixHex(envelope.senderKey6);
final contact = contactsProvider.findContactByPrefixHex(
envelope.senderKey6,
);
if (contact != null) return contact;
final senderName = widget.message.senderName?.trim();
if (senderName != null && senderName.isNotEmpty) {
for (final c in contactsProvider.contacts) {
if (c.advName.trim().toLowerCase() == senderName.toLowerCase()) {
return c;
}
}
}
return null;
}
static String _statusText({

View File

@@ -176,7 +176,15 @@ class _VoiceMessageBubbleState extends State<VoiceMessageBubble> {
Future<void> _requestAndPlayVoice(String sessionId) async {
if (_isRequesting) return;
final sender = _resolveSenderContact();
var sender = _resolveSenderContact();
if (sender == null) {
final connectionProvider = context.read<ConnectionProvider>();
// Retry once after refreshing contacts; resumable sessions may outlive
// the in-memory contact cache.
await connectionProvider.getContacts();
if (!mounted) return;
sender = _resolveSenderContact();
}
if (sender == null) {
_setUnavailable();
return;
@@ -243,6 +251,15 @@ class _VoiceMessageBubbleState extends State<VoiceMessageBubble> {
if (contact != null) return contact;
}
final senderName = widget.message.senderName?.trim();
if (senderName != null && senderName.isNotEmpty) {
for (final contact in contactsProvider.contacts) {
if (contact.advName.trim().toLowerCase() == senderName.toLowerCase()) {
return contact;
}
}
}
return null;
}