feat: route all Live Activity island taps through Tap station action

Expanded leading/trailing, compact and minimal island views had
no Link, so tapping them just opened the app with no destination.
Every island region now links to the same tap destination as the
Lock Screen card (Maps vs in-app detail).

Tap hint captions follow the setting too: Tap for details vs
Tap for directions.
This commit is contained in:
FuelBoard Contributor
2026-09-16 16:30:27 +01:00
parent 20fe251b8e
commit 44cbd3b1e4
2 changed files with 21 additions and 9 deletions
@@ -32,24 +32,34 @@ struct FuelBoardLiveActivity: Widget {
} dynamicIsland: { context in
DynamicIsland {
DynamicIslandExpandedRegion(.leading) {
Link(destination: FuelBoardLiveActivityTap.tapDestination(for: context.state)) {
FuelBoardLiveActivityCompactView(context: context)
}
}
DynamicIslandExpandedRegion(.trailing) {
Link(destination: FuelBoardLiveActivityTap.tapDestination(for: context.state)) {
FuelBoardLiveActivityPriceView(context: context)
}
}
DynamicIslandExpandedRegion(.bottom) {
FuelBoardLiveActivityStationView(context: context)
}
} compactLeading: {
Link(destination: FuelBoardLiveActivityTap.tapDestination(for: context.state)) {
Image(systemName: "fuelpump.fill")
.foregroundStyle(context.state.fuel.tintColor)
}
} compactTrailing: {
Link(destination: FuelBoardLiveActivityTap.tapDestination(for: context.state)) {
FuelBoardLiveActivityPriceView(context: context)
}
} minimal: {
Link(destination: FuelBoardLiveActivityTap.tapDestination(for: context.state)) {
Text(context.state.priceText)
.font(.caption2.bold().monospacedDigit())
}
}
}
.supplementalActivityFamilies([.small])
// Why `.small` is kept: it lets the SHARED body render a compact form
// in genuinely small slots (CarPlay small / Apple Watch smart stack)
@@ -139,7 +149,8 @@ private struct FuelBoardLiveActivityView: View {
FuelStore.priceTextAttributed(context.state.pricePence,
style: context.state.priceDisplayStyle,
size: 22, weight: .bold)
Text("Tap for directions")
Text(FuelStore.loadStationTapAction() == .showDetails
? "Tap for details" : "Tap for directions")
.font(.caption2)
.foregroundStyle(.secondary)
}
+2 -1
View File
@@ -93,7 +93,8 @@ struct FuelPriceWidgetContent: View {
.font(.caption2)
.foregroundStyle(.secondary)
} else {
Text("Tap for directions")
Text(FuelStore.loadStationTapAction() == .showDetails
? "Tap for details" : "Tap for directions")
.font(.caption2)
.foregroundStyle(.secondary)
}