2 Commits

Author SHA1 Message Date
Trey t
bfb373c8af WIP 2024-07-02 11:46:09 -05:00
Trey t
cedab87193 wip 2024-07-01 23:30:24 -05:00
5 changed files with 23 additions and 11 deletions

View File

@@ -26,18 +26,17 @@ class HealthKitHelper {
maxHeartRate: nil,
avgHeartRate: nil)
var completion: ((HealthKitWorkoutData) -> Void)?
var completion: ((HealthKitWorkoutData?) -> Void)?
func getDetails(forHealthKitUUID uuid: UUID, completion: @escaping ((HealthKitWorkoutData) -> Void)) {
func getDetails(forHealthKitUUID uuid: UUID, completion: @escaping ((HealthKitWorkoutData?) -> Void)) {
self.completion = completion
self.returnCount = 0
print("get details \(uuid.uuidString)")
let predicate = HKQuery.predicateForObject(with: uuid)
let query = HKSampleQuery(sampleType: HKWorkoutType.workoutType(),
predicate: predicate,
limit: 0,
predicate: HKQuery.predicateForObject(with: uuid),
limit: HKObjectQueryNoLimit,
sortDescriptors: nil)
{ (sampleQuery, results, error ) -> Void in
@@ -45,6 +44,7 @@ class HealthKitHelper {
self.shitReturned()
self.shitReturned()
print( "There was an error while reading the samples: \(queryError.localizedDescription)")
self.completion?(nil)
} else {
for samples: HKSample in results! {
let workout: HKWorkout = (samples as! HKWorkout)
@@ -54,6 +54,7 @@ class HealthKitHelper {
}
}
}
healthStore.execute(query)
}

View File

@@ -148,10 +148,11 @@ struct AllWorkoutsView: View {
HKObjectType.quantityType(forIdentifier: .heartRate)!,
HKObjectType.quantityType(forIdentifier: .activeEnergyBurned)!,
HKObjectType.quantityType(forIdentifier: .oxygenSaturation)!,
HKObjectType.activitySummaryType(),
HKQuantityType.workoutType()
]
healthStore.requestAuthorization(toShare: healthKitTypes, read: healthKitTypes) { (succ, error) in
healthStore.requestAuthorization(toShare: nil, read: healthKitTypes) { (succ, error) in
if !succ {
fatalError("Error requesting authorization from health store: \(String(describing: error)))")
}

View File

@@ -81,6 +81,9 @@ struct CompletedWorkoutView: View {
gettingHealthKitData = true
healthKitHelper.getDetails(forHealthKitUUID: healthKitUUID,
completion: { healthKitWorkoutData in
guard let healthStore = healthKitWorkoutData else {
return
}
self.healthKitWorkoutData = healthKitWorkoutData
gettingHealthKitData = false
})

View File

@@ -30,9 +30,10 @@ class WatchDelegate: NSObject, WKApplicationDelegate {
HKObjectType.quantityType(forIdentifier: .heartRate)!,
HKObjectType.quantityType(forIdentifier: .activeEnergyBurned)!,
HKObjectType.quantityType(forIdentifier: .oxygenSaturation)!,
HKObjectType.activitySummaryType(),
HKQuantityType.workoutType()
]
HKHealthStore().requestAuthorization(toShare: healthKitTypes, read: healthKitTypes) { (succ, error) in
HKHealthStore().requestAuthorization(toShare: nil, read: healthKitTypes) { (succ, error) in
if !succ {
fatalError("Error requesting authorization from health store: \(String(describing: error)))")
}

View File

@@ -45,11 +45,14 @@ class WatchWorkout: NSObject, ObservableObject, HKWorkoutSessionDelegate, HKLive
func startWorkout() {
if isInWorkout { return }
isInWorkout = true
setupCore()
hkWorkoutSession.startActivity(with: Date())
//WKInterfaceDevice.current().play(.start)
}
func stopWorkout(sendDetails: Bool) {
// hkWorkoutSession.endCurrentActivity(on: Date())
hkWorkoutSession.end()
}
@@ -125,10 +128,13 @@ class WatchWorkout: NSObject, ObservableObject, HKWorkoutSessionDelegate, HKLive
}
func workoutSession(_ workoutSession: HKWorkoutSession, didFailWithError error: Error) {
workoutSession.end()
setupCore()
startWorkout()
beginBuilderWorkout()
print("[didFailWithError] Workout Builder changed event: \(error.localizedDescription)")
// trying to go from ended to something so just end it all
if workoutSession.state == .ended {
getWorkoutBuilderDetails(completion: {
self.setupCore()
})
}
}
func workoutBuilder(_ workoutBuilder: HKLiveWorkoutBuilder, didCollectDataOf collectedTypes: Set<HKSampleType>) {