feat: honour Tap station action in widgets
Small widgetURL and medium list Links route through StationTapAction via FuelStation.tapDestinationURL: Open map keeps the Maps URL, More info uses a fuelboard://station deep link (stationID plus coordinate/name fallback). Deep link carries fallback coords; ContentView presents the detail sheet when the station is cached, else the map sheet. Live Activity detailURL upgraded to the same rich link.
This commit is contained in:
@@ -243,9 +243,21 @@ struct ContentView: View {
|
||||
)
|
||||
}
|
||||
.onReceive(NotificationCenter.default.publisher(for: .fuelBoardShowStationDetail)) { note in
|
||||
guard let id = note.userInfo?["stationID"] as? String,
|
||||
let station = stations.first(where: { $0.id == id }) else { return }
|
||||
monitor.pendingDetailStation = station
|
||||
let info = note.userInfo ?? [:]
|
||||
if let id = info["stationID"] as? String,
|
||||
let station = stations.first(where: { $0.id == id }) {
|
||||
monitor.pendingDetailStation = station
|
||||
return
|
||||
}
|
||||
// Station left the cache — fall back to the map sheet so
|
||||
// the tap still shows something.
|
||||
if let lat = info["stationLat"] as? Double,
|
||||
let lng = info["stationLng"] as? Double {
|
||||
let name = info["stationName"] as? String ?? "Station"
|
||||
monitor.pendingStationMap = StationMapRequest(
|
||||
name: name, latitude: lat, longitude: lng
|
||||
)
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user