Rework the Apple Watch progress flow
Watch root lists every in-progress workout; picking an exercise runs a paged Ready -> work/rest -> Finish flow (One More + auto-firing Done), with a phase-dot row and brand-tinted count-up/down timers. Includes the configurable rest and auto-finish settings synced over WatchConnectivity and the wrist-down timer fix.
This commit is contained in:
@@ -17,13 +17,14 @@ struct SettingsView: View {
|
||||
@Query(sort: \Split.order) private var splits: [Split]
|
||||
|
||||
@AppStorage("restSeconds") private var restSeconds: Int = 45
|
||||
@AppStorage("doneCountdownSeconds") private var doneCountdownSeconds: Int = 5
|
||||
@State private var showingAddSplitSheet = false
|
||||
|
||||
var body: some View {
|
||||
NavigationStack {
|
||||
Form {
|
||||
// MARK: - Workout Section
|
||||
Section(header: Text("Workout")) {
|
||||
Section {
|
||||
Stepper(value: $restSeconds, in: 10...180, step: 5) {
|
||||
HStack {
|
||||
Text("Rest Between Sets")
|
||||
@@ -31,6 +32,18 @@ struct SettingsView: View {
|
||||
Text("\(restSeconds)s").foregroundColor(.secondary)
|
||||
}
|
||||
}
|
||||
|
||||
Stepper(value: $doneCountdownSeconds, in: 3...20, step: 1) {
|
||||
HStack {
|
||||
Text("Auto-Finish Countdown")
|
||||
Spacer()
|
||||
Text("\(doneCountdownSeconds)s").foregroundColor(.secondary)
|
||||
}
|
||||
}
|
||||
} header: {
|
||||
Text("Workout")
|
||||
} footer: {
|
||||
Text("How long the watch waits on the finish screen before completing an exercise automatically.")
|
||||
}
|
||||
|
||||
// MARK: - Splits Section
|
||||
@@ -97,8 +110,7 @@ struct SettingsView: View {
|
||||
IndieAbout(configuration: AppInfoConfiguration(
|
||||
documents: [
|
||||
.custom(title: "Changelog", filename: "CHANGELOG", extension: "md"),
|
||||
.license(),
|
||||
.acknowledgements()
|
||||
.license(extension: "md")
|
||||
]
|
||||
))
|
||||
}
|
||||
@@ -108,6 +120,7 @@ struct SettingsView: View {
|
||||
SplitAddEditView(split: nil)
|
||||
}
|
||||
.onChange(of: restSeconds) { _, _ in services.watchBridge.pushAll() }
|
||||
.onChange(of: doneCountdownSeconds) { _, _ in services.watchBridge.pushAll() }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user