Skip to content

Commit badbb5c

Browse files
authored
Merge pull request #249 from runna-app/master
feat: add HK RunningSpeed to permissions
2 parents f2b6ba8 + 852df70 commit badbb5c

File tree

3 files changed

+77
-3
lines changed

3 files changed

+77
-3
lines changed

RCTAppleHealthKit/RCTAppleHealthKit+TypesAndPermissions.m

+65-1
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,12 @@ - (nullable HKObjectType *)getReadPermFromText:(nonnull NSString*)key {
6161
return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierStepCount];
6262
} else if ([@"DistanceWalkingRunning" isEqualToString: key]) {
6363
return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDistanceWalkingRunning];
64+
} else if ([@"RunningSpeed" isEqualToString: key]) {
65+
if (@available(iOS 16.0, *)) {
66+
return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierRunningSpeed];
67+
} else {
68+
return nil;
69+
}
6470
} else if ([@"DistanceCycling" isEqualToString: key]) {
6571
return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDistanceCycling];
6672
} else if ([@"DistanceSwimming" isEqualToString: key]) {
@@ -77,6 +83,30 @@ - (nullable HKObjectType *)getReadPermFromText:(nonnull NSString*)key {
7783
return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierAppleStandTime];
7884
} else if ([@"AppleExerciseTime" isEqualToString: key] && systemVersion >= 9.3) {
7985
return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierAppleExerciseTime];
86+
} else if ([@"RunningPower" isEqualToString:key]) {
87+
if (@available(iOS 16.0, *)) {
88+
return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierRunningPower];
89+
} else {
90+
return nil;
91+
}
92+
} else if ([@"RunningStrideLength" isEqualToString:key]) {
93+
if (@available(iOS 16.0, *)) {
94+
return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierRunningStrideLength];
95+
} else {
96+
return nil;
97+
}
98+
} else if ([@"RunningVerticalOscillation" isEqualToString:key]) {
99+
if (@available(iOS 16.0, *)) {
100+
return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierRunningVerticalOscillation];
101+
} else {
102+
return nil;
103+
}
104+
} else if ([@"RunningGroundContactTime" isEqualToString:key]) {
105+
if (@available(iOS 16.0, *)) {
106+
return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierRunningGroundContactTime];
107+
} else {
108+
return nil;
109+
}
80110
}
81111

82112
// Nutrition Identifiers
@@ -266,6 +296,12 @@ - (nullable HKObjectType *)getWritePermFromText:(nonnull NSString*) key {
266296
return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierStepCount];
267297
} else if ([@"DistanceWalkingRunning" isEqualToString:key]) {
268298
return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDistanceWalkingRunning];
299+
} else if ([@"RunningSpeed" isEqualToString:key]) {
300+
if (@available(iOS 16.0, *)) {
301+
return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierRunningSpeed];
302+
} else {
303+
return nil;
304+
}
269305
} else if ([@"DistanceCycling" isEqualToString:key]) {
270306
return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDistanceCycling];
271307
} else if ([@"DistanceSwimming" isEqualToString:key]) {
@@ -276,6 +312,30 @@ - (nullable HKObjectType *)getWritePermFromText:(nonnull NSString*) key {
276312
return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierActiveEnergyBurned];
277313
} else if ([@"FlightsClimbed" isEqualToString:key]) {
278314
return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierFlightsClimbed];
315+
} else if ([@"RunningPower" isEqualToString:key]) {
316+
if (@available(iOS 16.0, *)) {
317+
return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierRunningPower];
318+
} else {
319+
return nil;
320+
}
321+
} else if ([@"RunningStrideLength" isEqualToString:key]) {
322+
if (@available(iOS 16.0, *)) {
323+
return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierRunningStrideLength];
324+
} else {
325+
return nil;
326+
}
327+
} else if ([@"RunningVerticalOscillation" isEqualToString:key]) {
328+
if (@available(iOS 16.0, *)) {
329+
return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierRunningVerticalOscillation];
330+
} else {
331+
return nil;
332+
}
333+
} else if ([@"RunningGroundContactTime" isEqualToString:key]) {
334+
if (@available(iOS 16.0, *)) {
335+
return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierRunningGroundContactTime];
336+
} else {
337+
return nil;
338+
}
279339
}
280340

281341
// Nutrition Identifiers
@@ -378,7 +438,11 @@ - (nullable HKObjectType *)getWritePermFromText:(nonnull NSString*) key {
378438

379439
// Workout Route
380440
if ([@"WorkoutRoute" isEqualToString:key]) {
381-
return [HKSeriesType workoutRouteType];
441+
if (@available(iOS 11.0, *)) {
442+
return [HKSeriesType workoutRouteType];
443+
} else {
444+
return nil;
445+
}
382446
}
383447

384448
// Lab and tests

index.d.ts

+5
Original file line numberDiff line numberDiff line change
@@ -807,6 +807,11 @@ declare module 'react-native-health' {
807807
Weight = 'Weight',
808808
Workout = 'Workout',
809809
WorkoutRoute = 'WorkoutRoute',
810+
RunningSpeed = 'RunningSpeed',
811+
RunningPower = 'RunningPower',
812+
RunningStrideLength = 'RunningStrideLength',
813+
RunningVerticalOscillation = 'RunningVerticalOscillation',
814+
RunningGroundContactTime = 'RunningGroundContactTime',
810815
}
811816

812817
export enum HealthUnit {

src/constants/Permissions.js

+7-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
*/
66
export const Permissions = {
77
ActiveEnergyBurned: 'ActiveEnergyBurned',
8-
ActivitySummary: "ActivitySummary",
8+
ActivitySummary: 'ActivitySummary',
99
AllergyRecord: 'AllergyRecord',
1010
AppleExerciseTime: 'AppleExerciseTime',
1111
AppleStandTime: 'AppleStandTime',
@@ -93,5 +93,10 @@ export const Permissions = {
9393
WalkingHeartRateAverage: 'WalkingHeartRateAverage',
9494
Weight: 'Weight',
9595
Workout: 'Workout',
96-
WorkoutRoute: 'WorkoutRoute'
96+
WorkoutRoute: 'WorkoutRoute',
97+
RunningSpeed: 'RunningSpeed',
98+
RunningPower: 'RunningPower',
99+
RunningStrideLength: 'RunningStrideLength',
100+
RunningVerticalOscillation: 'RunningVerticalOscillation',
101+
RunningGroundContactTime: 'RunningGroundContactTime',
97102
}

0 commit comments

Comments
 (0)