Refactor map legend and filtering logic for contacts with location, to show count of active markers. (#203)

This commit is contained in:
Winston Lowe 2026-02-20 22:09:11 -08:00 committed by GitHub
parent f4b18d97a1
commit 7acfe47fd7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -488,7 +488,8 @@ class _MapScreenState extends State<MapScreen> {
),
if (!_isBuildingPathTrace)
_buildLegend(
contactsWithLocation.length,
contactsWithLocation,
settings,
sharedMarkers.length,
),
if (_isBuildingPathTrace) _buildPathTraceOverlay(),
@ -524,13 +525,17 @@ class _MapScreenState extends State<MapScreen> {
if (!contact.hasLocation) continue;
// Apply node type filters
if (contact.type == advTypeRepeater && !settings.mapShowRepeaters) {
if (contact.type == advTypeRepeater &&
(!settings.mapShowRepeaters && !_isBuildingPathTrace)) {
continue;
}
if (contact.type == advTypeChat &&
!(settings.mapShowChatNodes && !_isBuildingPathTrace)) {
continue;
}
if (contact.type == advTypeChat && !settings.mapShowChatNodes) continue;
if (contact.type != advTypeChat &&
contact.type != advTypeRepeater &&
!settings.mapShowOtherNodes) {
(!settings.mapShowOtherNodes && !_isBuildingPathTrace)) {
continue;
}
@ -653,7 +658,26 @@ class _MapScreenState extends State<MapScreen> {
}
}
Widget _buildLegend(int nodeCount, int markerCount) {
Widget _buildLegend(
List<Contact> contactsWithLocation,
settings,
int markerCount,
) {
int nodeCount = 0;
for (final contact in contactsWithLocation) {
// Apply node type filters
if (contact.type == advTypeRepeater && !settings.mapShowRepeaters) {
continue;
}
if (contact.type == advTypeChat && !settings.mapShowChatNodes) continue;
if (contact.type != advTypeChat &&
contact.type != advTypeRepeater &&
!settings.mapShowOtherNodes) {
continue;
}
nodeCount++;
}
return Positioned(
top: 16,
right: 16,