Stabilize iOS/watchOS/tvOS apps and add cross-platform audit remediation
This commit is contained in:
@@ -11,6 +11,11 @@ struct CreateWorkoutMainView: View {
|
||||
@StateObject var viewModel = WorkoutViewModel()
|
||||
@State var selectedCreateWorkoutSuperSet: CreateWorkoutSuperSet?
|
||||
@State private var showAddExercise = false
|
||||
|
||||
private var canSubmit: Bool {
|
||||
viewModel.title.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty == false &&
|
||||
viewModel.isUploading == false
|
||||
}
|
||||
|
||||
var body: some View {
|
||||
VStack {
|
||||
@@ -28,7 +33,7 @@ struct CreateWorkoutMainView: View {
|
||||
|
||||
ScrollViewReader { proxy in
|
||||
List() {
|
||||
ForEach($viewModel.superSets, id: \.id) { superset in
|
||||
ForEach(viewModel.superSets) { superset in
|
||||
CreateWorkoutSupersetView(
|
||||
selectedCreateWorkoutSuperSet: $selectedCreateWorkoutSuperSet,
|
||||
showAddExercise: $showAddExercise,
|
||||
@@ -38,7 +43,9 @@ struct CreateWorkoutMainView: View {
|
||||
// after adding new exercise we have to scroll to the bottom
|
||||
// where the new exercise is sooo keep this so we can scroll
|
||||
// to id 999
|
||||
Text("this is the bottom 🤷♂️")
|
||||
Color.clear
|
||||
.frame(height: 1)
|
||||
.accessibilityHidden(true)
|
||||
.id(999)
|
||||
.listRowSeparator(.hidden)
|
||||
}
|
||||
@@ -57,7 +64,7 @@ struct CreateWorkoutMainView: View {
|
||||
// if left or right auto add the other side
|
||||
// with a recover in between b/c its
|
||||
// eaiser to delete a recover than add one
|
||||
if exercise.side != nil && exercise.side!.count > 0 {
|
||||
if exercise.side?.isEmpty == false {
|
||||
let exercises = DataStore.shared.allExercise?.filter({
|
||||
$0.name == exercise.name
|
||||
})
|
||||
@@ -79,7 +86,6 @@ struct CreateWorkoutMainView: View {
|
||||
}
|
||||
|
||||
viewModel.increaseRandomNumberForUpdating()
|
||||
viewModel.objectWillChange.send()
|
||||
selectedCreateWorkoutSuperSet = nil
|
||||
})
|
||||
}
|
||||
@@ -95,11 +101,21 @@ struct CreateWorkoutMainView: View {
|
||||
.cornerRadius(Constants.buttonRadius)
|
||||
.padding()
|
||||
.frame(maxWidth: .infinity)
|
||||
.accessibilityLabel("Add superset")
|
||||
.accessibilityHint("Adds a new superset section to this workout")
|
||||
|
||||
Divider()
|
||||
|
||||
Button("Done", action: {
|
||||
Button(action: {
|
||||
viewModel.uploadWorkout()
|
||||
}, label: {
|
||||
if viewModel.isUploading {
|
||||
ProgressView()
|
||||
.progressViewStyle(.circular)
|
||||
.tint(.white)
|
||||
} else {
|
||||
Text("Done")
|
||||
}
|
||||
})
|
||||
.frame(maxWidth: .infinity, alignment: .center)
|
||||
.frame(height: 44)
|
||||
@@ -108,13 +124,23 @@ struct CreateWorkoutMainView: View {
|
||||
.cornerRadius(Constants.buttonRadius)
|
||||
.padding()
|
||||
.frame(maxWidth: .infinity)
|
||||
.disabled(viewModel.title.isEmpty)
|
||||
.disabled(canSubmit == false)
|
||||
.accessibilityLabel("Upload workout")
|
||||
.accessibilityHint("Uploads this workout to your account")
|
||||
}
|
||||
.frame(height: 44)
|
||||
|
||||
Divider()
|
||||
}
|
||||
.background(Color(uiColor: .systemGray5))
|
||||
.alert("Create Workout", isPresented: Binding<Bool>(
|
||||
get: { viewModel.validationError != nil },
|
||||
set: { _ in viewModel.validationError = nil }
|
||||
)) {
|
||||
Button("OK", role: .cancel) {}
|
||||
} message: {
|
||||
Text(viewModel.validationError ?? "")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user