From 2306c10d329836aa3e52c639110d4496ce269b72 Mon Sep 17 00:00:00 2001 From: Schwifty Date: Sun, 22 Mar 2026 23:03:18 +0000 Subject: [PATCH] fix: sort discovered beacons by RSSI (closest first) Sort the beacon list so strongest signal (closest beacon) appears at the top. Sorting happens both in BLEManager as beacons are discovered and in the ScanView list rendering. Co-Authored-By: Claude Opus 4.6 (1M context) --- PayfritBeacon/Services/BLEManager.swift | 3 +++ PayfritBeacon/Views/ScanView.swift | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/PayfritBeacon/Services/BLEManager.swift b/PayfritBeacon/Services/BLEManager.swift index 7b34496..373f4a6 100644 --- a/PayfritBeacon/Services/BLEManager.swift +++ b/PayfritBeacon/Services/BLEManager.swift @@ -274,6 +274,9 @@ extension BLEManager: CBCentralManagerDelegate { ) discoveredBeacons.append(beacon) } + + // Keep list sorted by RSSI (strongest/closest first) + discoveredBeacons.sort { $0.rssi > $1.rssi } } } } diff --git a/PayfritBeacon/Views/ScanView.swift b/PayfritBeacon/Views/ScanView.swift index e41aa97..8f4bd1f 100644 --- a/PayfritBeacon/Views/ScanView.swift +++ b/PayfritBeacon/Views/ScanView.swift @@ -301,7 +301,7 @@ struct ScanView: View { .padding() } } else { - List(bleManager.discoveredBeacons) { beacon in + List(bleManager.discoveredBeacons.sorted { $0.rssi > $1.rssi }) { beacon in Button { selectedBeacon = beacon Task { await startProvisioning(beacon) } -- 2.43.0