From a68e1dd4282492d2ee35938f9d965203ba954be5 Mon Sep 17 00:00:00 2001 From: Winston Lowe Date: Sun, 15 Feb 2026 21:09:30 -0800 Subject: [PATCH] Sort direct repeaters by last updated time and SNR; limit to top three for improved path management dialog --- lib/widgets/path_management_dialog.dart | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/lib/widgets/path_management_dialog.dart b/lib/widgets/path_management_dialog.dart index 495c2a8..f2201b9 100644 --- a/lib/widgets/path_management_dialog.dart +++ b/lib/widgets/path_management_dialog.dart @@ -133,17 +133,24 @@ class _PathManagementDialog extends StatelessWidget { builder: (context, connector, pathService, _) { final currentContact = _resolveContact(connector); final paths = pathService.getRecentPaths(currentContact.publicKeyHex); - final directRepeaters = List.of(connector.directRepeaters) - ..sort((a, b) => (b.snr).compareTo(a.snr)); - final directRepeater = directRepeaters.isEmpty + + final RepeatersList = List.of(connector.directRepeaters) + ..sort((a, b) => b.lastUpdated.compareTo(a.lastUpdated)); + + final topSNRRepeaters = List.of(RepeatersList) + ..sort((a, b) => b.snr.compareTo(a.snr)); + + final topThreeRepeaters = topSNRRepeaters.take(3).toList(); + + final directRepeater = topThreeRepeaters.isEmpty ? null - : directRepeaters.first; - final secondDirectRepeater = directRepeaters.length < 2 + : topThreeRepeaters.first; + final secondDirectRepeater = topThreeRepeaters.length < 2 ? null - : directRepeaters.elementAt(1); - final thirdDirectRepeater = directRepeaters.length < 3 + : topThreeRepeaters.elementAt(1); + final thirdDirectRepeater = topThreeRepeaters.length < 3 ? null - : directRepeaters.elementAt(2); + : topThreeRepeaters.elementAt(2); return AlertDialog( title: Text(l10n.chat_pathManagement),