react-native-healthkit-bridge
Version:
A comprehensive React Native bridge for Apple HealthKit with TypeScript support, advanced authorization, and flexible data queries
54 lines (50 loc) • 1.89 kB
text/typescript
import { HealthKitQuantitySample, HealthKitCategorySample, HealthKitWorkout, HealthKitSourceRevision } from '../../domain/entities/HealthKitSample';
export class HealthKitMapper {
toQuantitySample(rawData: any): HealthKitQuantitySample {
return {
uuid: rawData.uuid,
value: rawData.value,
unit: rawData.unit,
identifier: rawData.identifier,
startDate: new Date(rawData.startDate),
endDate: new Date(rawData.endDate),
sourceRevision: this.toSourceRevision(rawData.sourceRevision)
};
}
toCategorySample(rawData: any): HealthKitCategorySample {
return {
uuid: rawData.uuid,
value: rawData.value,
identifier: rawData.identifier,
startDate: new Date(rawData.startDate),
endDate: new Date(rawData.endDate),
sourceRevision: this.toSourceRevision(rawData.sourceRevision)
};
}
toWorkout(rawData: any): HealthKitWorkout {
return {
uuid: rawData.uuid,
workoutActivityType: rawData.workoutActivityType,
duration: rawData.duration,
totalEnergyBurned: rawData.totalEnergyBurned,
totalDistance: rawData.totalDistance,
totalSwimmingStrokeCount: rawData.totalSwimmingStrokeCount,
totalFlightsClimbed: rawData.totalFlightsClimbed,
metadata: rawData.metadata,
startDate: new Date(rawData.startDate),
endDate: new Date(rawData.endDate),
sourceRevision: this.toSourceRevision(rawData.sourceRevision)
};
}
private toSourceRevision(rawSourceRevision: any): HealthKitSourceRevision {
return {
source: {
name: rawSourceRevision?.source?.name || '',
bundleIdentifier: rawSourceRevision?.source?.bundleIdentifier || ''
},
version: rawSourceRevision?.version || '',
productType: rawSourceRevision?.productType || '',
systemVersion: rawSourceRevision?.systemVersion || ''
};
}
}