fix video being out of sync

This commit is contained in:
Trey t
2024-06-13 19:35:25 -05:00
parent 460bd16347
commit 117ebd25a0
4 changed files with 55 additions and 96 deletions

View File

@@ -9,7 +9,7 @@ import Foundation
class CurrentWorkoutInfo { class CurrentWorkoutInfo {
var supersetIndex: Int = 0 var supersetIndex: Int = 0
var exerciseIndex: Int = 0 var exerciseIndex: Int = -1
var workout: Workout? var workout: Workout?
var complete: (() -> Void)? var complete: (() -> Void)?
@@ -38,34 +38,18 @@ class CurrentWorkoutInfo {
return obj return obj
} }
// this is setting nothing so we can half ass it
var nextExerciseInfo: SupersetExercise? { var nextExerciseInfo: SupersetExercise? {
guard let workout = workout else { return nil } guard let workout = workout else { return nil }
guard let supersets = workout.supersets else { return nil }
var _exerciseIndex = exerciseIndex + 1 let _exerciseIndex = allSupersetExecerciseIndex + 1
var _supersetIndex = supersetIndex if _exerciseIndex >= workout.allSupersetExecercise?.count ?? -1 {
let currentSuperSet = supersets[_supersetIndex] return nil
if _exerciseIndex >= currentSuperSet.exercises.count {
var _currentRound = currentRound + 1
if currentRound > currentSuperSet.rounds {
_supersetIndex = _supersetIndex + 1
_currentRound = 1
if supersetIndex >= supersets.count {
return nil
}
}
_exerciseIndex = 0
} }
return workout.allSupersetExecercise?[_exerciseIndex]
let superset = supersets[_supersetIndex]
let exercise = superset.exercises[_exerciseIndex]
return exercise
} }
// this needs to set stuff for iphone
var nextExercise: SupersetExercise? { var nextExercise: SupersetExercise? {
guard let workout = workout else { return nil } guard let workout = workout else { return nil }
guard let supersets = workout.supersets else { return nil } guard let supersets = workout.supersets else { return nil }

View File

@@ -74,55 +74,11 @@ struct ExternalWorkoutDetailView: View {
.scaledToFill() .scaledToFill()
} }
} }
.onChange(of: bridgeModule.isInWorkout, perform: { newValue in .onChange(of: bridgeModule.isInWorkout, perform: { _ in
if let currentExtercise = bridgeModule.currentExerciseInfo.currentExercise { playVideos()
if let videoURL = VideoURLCreator.videoURL(
thotStyle: extThotStyle,
gender: thotGenderOption,
defaultVideoURLStr: currentExtercise.exercise.videoURL,
exerciseName: currentExtercise.exercise.name,
workout: bridgeModule.currentExerciseInfo.workout) {
avPlayer = AVPlayer(url: videoURL)
avPlayer.play()
if extShowNextVideo {
if let smallVideoURL = VideoURLCreator.videoURL(
thotStyle: VideoURLCreator.otherVideoType(forVideoURL: videoURL),
gender: thotGenderOption,
defaultVideoURLStr: currentExtercise.exercise.videoURL,
exerciseName: currentExtercise.exercise.name,
workout: bridgeModule.currentExerciseInfo.workout) {
smallAVPlayer = AVPlayer(url: smallVideoURL)
smallAVPlayer.play()
}
}
}
}
}) })
.onChange(of: bridgeModule.currentExerciseInfo.exerciseIndex, perform: { newValue in .onChange(of: bridgeModule.currentExerciseInfo.allSupersetExecerciseIndex, perform: { _ in
if let currentExtercise = bridgeModule.currentExerciseInfo.currentExercise { playVideos()
if let videoURL = VideoURLCreator.videoURL(
thotStyle: extThotStyle,
gender: thotGenderOption,
defaultVideoURLStr: currentExtercise.exercise.videoURL,
exerciseName: currentExtercise.exercise.name,
workout: bridgeModule.currentExerciseInfo.workout) {
avPlayer = AVPlayer(url: videoURL)
avPlayer.play()
if extShowNextVideo {
if let smallVideoURL = VideoURLCreator.videoURL(
thotStyle: .never,
gender: thotGenderOption,
defaultVideoURLStr: BridgeModule.shared.currentExerciseInfo.nextExerciseInfo?.exercise.videoURL,
exerciseName: BridgeModule.shared.currentExerciseInfo.nextExerciseInfo?.exercise.name,
workout: bridgeModule.currentExerciseInfo.workout) {
smallAVPlayer = AVPlayer(url: smallVideoURL)
smallAVPlayer.play()
}
}
}
}
}) })
.frame(maxWidth: .infinity, maxHeight: .infinity) .frame(maxWidth: .infinity, maxHeight: .infinity)
.background(bridgeModule.currentExerciseInfo.workout == nil ? Color(red: 157/255, green: 138/255, blue: 255/255) : Color(uiColor: .systemBackground)) .background(bridgeModule.currentExerciseInfo.workout == nil ? Color(red: 157/255, green: 138/255, blue: 255/255) : Color(uiColor: .systemBackground))
@@ -132,6 +88,31 @@ struct ExternalWorkoutDetailView: View {
smallAVPlayer.play() smallAVPlayer.play()
} }
} }
func playVideos() {
if let currentExtercise = bridgeModule.currentExerciseInfo.currentExercise {
if let videoURL = VideoURLCreator.videoURL(
thotStyle: extThotStyle,
gender: thotGenderOption,
defaultVideoURLStr: currentExtercise.exercise.videoURL,
exerciseName: currentExtercise.exercise.name,
workout: bridgeModule.currentExerciseInfo.workout) {
avPlayer = AVPlayer(url: videoURL)
avPlayer.play()
}
if let smallVideoURL = VideoURLCreator.videoURL(
thotStyle: .never,
gender: thotGenderOption,
defaultVideoURLStr: BridgeModule.shared.currentExerciseInfo.nextExerciseInfo?.exercise.videoURL,
exerciseName: BridgeModule.shared.currentExerciseInfo.nextExerciseInfo?.exercise.name,
workout: bridgeModule.currentExerciseInfo.workout),
extShowNextVideo {
smallAVPlayer = AVPlayer(url: smallVideoURL)
smallAVPlayer.play()
}
}
}
} }
struct TitleView: View { struct TitleView: View {

View File

@@ -125,7 +125,7 @@ struct ExerciseListView: View {
}) })
} }
} }
.onChange(of: bridgeModule.currentExerciseInfo.exerciseIndex, perform: { newValue in .onChange(of: bridgeModule.currentExerciseInfo.allSupersetExecerciseIndex, perform: { newValue in
if let newCurrentExercise = bridgeModule.currentExerciseInfo.currentExercise { if let newCurrentExercise = bridgeModule.currentExerciseInfo.currentExercise {
withAnimation { withAnimation {
proxy.scrollTo(newCurrentExercise.id, anchor: .top) proxy.scrollTo(newCurrentExercise.id, anchor: .top)

View File

@@ -120,31 +120,11 @@ struct WorkoutDetailView: View {
} }
} }
} }
.onChange(of: bridgeModule.currentExerciseInfo.exerciseIndex, perform: { newValue in .onChange(of: bridgeModule.currentExerciseInfo.allSupersetExecerciseIndex, perform: { _ in
if let currentExtercise = bridgeModule.currentExerciseInfo.currentExercise { playVideos()
if let videoURL = VideoURLCreator.videoURL(
thotStyle: phoneThotStyle,
gender: thotGenderOption,
defaultVideoURLStr: currentExtercise.exercise.videoURL,
exerciseName: currentExtercise.exercise.name,
workout: bridgeModule.currentExerciseInfo.workout) {
avPlayer = AVPlayer(url: videoURL)
avPlayer.play()
}
}
}) })
.onChange(of: bridgeModule.isInWorkout, perform: { newValue in .onChange(of: bridgeModule.isInWorkout, perform: { _ in
if let currentExtercise = bridgeModule.currentExerciseInfo.currentExercise { playVideos()
if let videoURL = VideoURLCreator.videoURL(
thotStyle: phoneThotStyle,
gender: thotGenderOption,
defaultVideoURLStr: currentExtercise.exercise.videoURL,
exerciseName: currentExtercise.exercise.name,
workout: bridgeModule.currentExerciseInfo.workout) {
avPlayer = AVPlayer(url: videoURL)
avPlayer.play()
}
}
}) })
.onAppear{ .onAppear{
if let currentExtercise = bridgeModule.currentExerciseInfo.currentExercise { if let currentExtercise = bridgeModule.currentExerciseInfo.currentExercise {
@@ -165,6 +145,20 @@ struct WorkoutDetailView: View {
} }
} }
func playVideos() {
if let currentExtercise = bridgeModule.currentExerciseInfo.currentExercise {
if let videoURL = VideoURLCreator.videoURL(
thotStyle: phoneThotStyle,
gender: thotGenderOption,
defaultVideoURLStr: currentExtercise.exercise.videoURL,
exerciseName: currentExtercise.exercise.name,
workout: bridgeModule.currentExerciseInfo.workout) {
avPlayer = AVPlayer(url: videoURL)
avPlayer.play()
}
}
}
func startWorkout(workout: Workout) { func startWorkout(workout: Workout) {
bridgeModule.completedWorkout = { bridgeModule.completedWorkout = {
if let workoutData = createWorkoutData() { if let workoutData = createWorkoutData() {