Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions Strand/Liquid/LiquidTodayView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,11 @@ struct LiquidTodayView: View {

VStack(alignment: .leading, spacing: 12) {
scene
// #105: the live "workout in progress" card, dropped in the liquid Home rewrite. Restored
// here as the SAME leaf the classic TodayView renders (and Android's WorkoutInProgressCard),
// sitting right under the hero so an active manual workout is immediately visible and taps
// straight through to Live. Renders nothing when no workout is active.
ActiveWorkoutIndicatorSection()
heartRateSection
yourCardsSection
synthesisSection
Expand Down
7 changes: 6 additions & 1 deletion Strand/Screens/TodayView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,12 @@ private struct ActiveWorkoutIndicatorCard: View {
/// rewritten `activeWorkout`) re-renders ONLY this card, never the whole Today dashboard, the same
/// leaf-isolation pattern the file documents for the live status/sync rows. Renders nothing when no workout
/// is active, so the card auto-appears/clears purely off `AppModel.activeWorkout`.
private struct ActiveWorkoutIndicatorSection: View {
///
/// Non-private so the liquid Home (`LiquidTodayView`) renders the SAME leaf — the liquid rewrite dropped this
/// indicator (#105), and sharing one implementation keeps the two Today screens (and Android's
/// `WorkoutInProgressCard`) from drifting. It carries its own `app`/`router` environment objects, so a caller
/// only needs to place `ActiveWorkoutIndicatorSection()` in its body.
struct ActiveWorkoutIndicatorSection: View {
@EnvironmentObject var app: AppModel
@EnvironmentObject var router: NavRouter

Expand Down