From 57d28323731dce21dc0039fbb339bb3888e060ef Mon Sep 17 00:00:00 2001 From: JG Gouveia Date: Sat, 3 Aug 2024 10:56:26 -0300 Subject: [PATCH] feat: add support to elevation gained aggregation --- .../records/ReactElevationGainedRecord.kt | 13 +++++++++++-- src/types/aggregate.types.ts | 8 +++++++- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/android/src/main/java/dev/matinzd/healthconnect/records/ReactElevationGainedRecord.kt b/android/src/main/java/dev/matinzd/healthconnect/records/ReactElevationGainedRecord.kt index 0151b20..7d09cf7 100644 --- a/android/src/main/java/dev/matinzd/healthconnect/records/ReactElevationGainedRecord.kt +++ b/android/src/main/java/dev/matinzd/healthconnect/records/ReactElevationGainedRecord.kt @@ -32,10 +32,19 @@ class ReactElevationGainedRecord : ReactHealthRecordImpl } override fun getAggregateRequest(record: ReadableMap): AggregateRequest { - throw AggregationNotSupported() + return AggregateRequest( + metrics = setOf( + ElevationGainedRecord.ELEVATION_GAINED_TOTAL + ), + timeRangeFilter = record.getTimeRangeFilter("timeRangeFilter"), + dataOriginFilter = convertJsToDataOriginSet(record.getArray("dataOriginFilter")) + ) } override fun parseAggregationResult(record: AggregationResult): WritableNativeMap { - throw AggregationNotSupported() + return WritableNativeMap().apply { + putMap("ELEVATION_GAINED_TOTAL", lengthToJsMap(record[ElevationGainedRecord.ELEVATION_GAINED_TOTAL])) + putArray("dataOrigins", convertDataOriginsToJsArray(record.dataOrigins)) + } } } diff --git a/src/types/aggregate.types.ts b/src/types/aggregate.types.ts index f32ee2b..4b84bdc 100644 --- a/src/types/aggregate.types.ts +++ b/src/types/aggregate.types.ts @@ -175,6 +175,11 @@ interface PowerAggregateResult extends BaseAggregate { POWER_MAX: PowerResult; } +interface ElevationGainedAggregateResult extends BaseAggregate { + recordType: 'ElevationGained'; + ELEVATION_GAINED_TOTAL: LengthResult; +} + export type AggregateRecordResult = | ActiveCaloriesBurnedAggregateResult | BasalMetabolicRateAggregateResult @@ -195,7 +200,8 @@ export type AggregateRecordResult = | WheelchairPushesAggregateResult | StepsCadenceAggregateResult | TotalCaloriesBurnedAggregateResult - | PowerAggregateResult; + | PowerAggregateResult + | ElevationGainedAggregateResult; export type AggregateResultRecordType = AggregateRecordResult['recordType'];