Widget Favourites filter: pinned stations cheapest-first, no radius
- New Sort by value 'Favourites' in Edit Widget (per-widget config). - ParameterSummary hides the Distance picker when Favourites is selected (favourites are not radius-bound). - Favourites mode reads keychain favourites (shared access group works on SideStore free even without App Groups), filters to the widget's fuel, refreshes prices from a focused relay fetch when in range, and ranks cheapest-first with distance tiebreak. Not radius-filtered. - App now re-saves refreshed favourites to keychain after every fetch so the widget shows current prices instead of star-time snapshots. - Empty state + headings adapt to favourites mode. 35 tests pass.
This commit is contained in:
@@ -285,6 +285,11 @@ struct ContentView: View {
|
||||
stations = fetched
|
||||
FuelStore.saveStations(fetched)
|
||||
FuelStore.saveLastRefresh()
|
||||
// Keep the keychain favourites fresh with the new prices — the
|
||||
// widget's Favourites mode reads them from keychain (the only
|
||||
// channel shared on SideStore free), so stale star-time snapshots
|
||||
// would otherwise show old prices.
|
||||
FuelStore.saveFavourites(refreshedFavourites)
|
||||
WidgetCenter.shared.reloadAllTimelines()
|
||||
statusMessage = "Loaded \(fetched.count) stations · \(Date().formatted(date: .omitted, time: .shortened))"
|
||||
} catch {
|
||||
|
||||
Reference in New Issue
Block a user