Enhance contact handling and UI updates across multiple screens

add unfiltered contact access and improve last seen resolution
This commit is contained in:
Winston Lowe
2026-03-25 18:30:27 -07:00
parent 9dbf374ac6
commit 882abf3879
9 changed files with 142 additions and 16 deletions
+27 -5
View File
@@ -14,12 +14,13 @@ class ContactExport {
final double lon;
final String desc;
final double? ele;
final String url;
ContactExport({
required this.name,
required this.lat,
required this.lon,
required this.desc,
required this.url,
this.ele,
});
}
@@ -40,6 +41,7 @@ class GpxExport {
String name,
double lat,
double lon,
String url,
String desc, [
double? ele,
]) {
@@ -50,55 +52,72 @@ class GpxExport {
lon: lon,
desc: desc.trim(),
ele: ele,
url: url,
),
);
}
void addRepeaters() {
final contacts = _connector.contacts
final contacts = _connector.allContacts
.where((c) => c.type == advTypeRepeater || c.type == advTypeRoom)
.map((c) => _connector.getFromDiscovered(c))
.toList();
for (var contact in contacts) {
if (contact.latitude == null || contact.longitude == null) {
continue;
}
final url = contact.rawPacket != null
? "meshcore://${pubKeyToHex(contact.rawPacket!)}"
: "";
_addContact(
contact.name,
contact.latitude!,
contact.longitude!,
"Type: ${contact.typeLabel}\nPublic Key: ${contact.publicKeyHex}",
url,
);
}
}
void addContacts() {
final contacts = _connector.contacts
final contacts = _connector.allContacts
.where((c) => c.type == advTypeChat)
.map((c) => _connector.getFromDiscovered(c))
.toList();
for (var contact in contacts) {
if (contact.latitude == null || contact.longitude == null) {
continue;
}
final url = contact.rawPacket != null
? "meshcore://${pubKeyToHex(contact.rawPacket!)}"
: "";
_addContact(
contact.name,
contact.latitude!,
contact.longitude!,
"Type: ${contact.typeLabel}\nPublic Key: ${contact.publicKeyHex}",
url,
);
}
}
void addAll() {
final contacts = _connector.contacts;
for (var contact in contacts.toList()) {
final contacts = _connector.allContacts
.map((c) => _connector.getFromDiscovered(c))
.toList();
for (var contact in contacts) {
if (contact.latitude == null || contact.longitude == null) {
continue;
}
final url = contact.rawPacket != null
? "meshcore://${pubKeyToHex(contact.rawPacket!)}"
: "";
_addContact(
contact.name,
contact.latitude ?? 0.0,
contact.longitude ?? 0.0,
"Type: ${contact.typeLabel}\nPublic Key: ${contact.publicKeyHex}",
url,
);
}
}
@@ -138,6 +157,9 @@ class GpxExport {
ele: c.ele,
name: c.name,
desc: c.desc,
extensions: {
"meshcore": {"url": c.url},
},
),
)
.toList();