health_kit_upload_mapper.dart 2.82 KB
import 'package:doublefeel_flutter/pigeon/health_kit_api.g.dart';

import 'models/apple_health_upload_sample.dart';
import 'models/health_upload_data_type.dart';
import 'models/upload_active_energy.dart';
import 'models/upload_exercise.dart';
import 'models/upload_heart_rate.dart';
import 'models/upload_hrv.dart';
import 'models/upload_irregular_heart_rhythm.dart';
import 'models/upload_oxygen_saturation.dart';
import 'models/upload_respiratory_rate.dart';
import 'models/upload_resting_heart_rate.dart';
import 'models/upload_sleep.dart';
import 'models/upload_sleeping_heart_rate.dart';
import 'models/upload_sleeping_wrist_temperature.dart';
import 'models/upload_stand.dart';
import 'models/upload_step_count.dart';
import 'models/upload_walking_heart_rate.dart';

extension HealthUploadDataPointMapper on HealthUploadDataPoint {
  AppleHealthUploadSample? toAppleHealthUploadSample() {
    switch (HealthUploadDataType.fromValue(dataType)) {
      case HealthUploadDataType.hrv:
        return HealthHrvUploadData(time: time, value: value);
      case HealthUploadDataType.heartRate:
        return HealthHeartRateUploadData(time: time, value: value);
      case HealthUploadDataType.oxygenSaturation:
        return HealthOxygenSaturationUploadData(time: time, value: value);
      case HealthUploadDataType.activeEnergy:
        return HealthActiveEnergyUploadData(time: time, value: value);
      case HealthUploadDataType.exercise:
        return HealthExerciseUploadData(time: time, value: value);
      case HealthUploadDataType.stand:
        return HealthStandUploadData(time: time, value: value);
      case HealthUploadDataType.steps:
        return HealthStepCountUploadData(time: time, value: value);
      case HealthUploadDataType.walkingHeartRate:
        return HealthWalkingHeartRateUploadData(time: time, value: value);
      case HealthUploadDataType.restingHeartRate:
        return HealthRestingHeartRateUploadData(time: time, value: value);
      case HealthUploadDataType.sleepingHeartRate:
        return HealthSleepingHeartRateUploadData(time: time, value: value);
      case HealthUploadDataType.sleepingWristTemperature:
        return HealthSleepingWristTemperatureUploadData(
          time: time,
          value: value,
        );
      case HealthUploadDataType.respiratoryRate:
        return HealthRespiratoryRateUploadData(time: time, value: value);
      case HealthUploadDataType.irregularHeartRhythm:
        return HealthIrregularHeartRhythmUploadData(time: time, value: value);
      case HealthUploadDataType.unknown:
      case HealthUploadDataType.sleep:
        return null;
    }
  }
}

extension HealthSleepUploadDataPointMapper on HealthSleepUploadDataPoint {
  HealthSleepUploadData toHealthSleepUploadData() {
    return HealthSleepUploadData(
      dataType: dataType,
      fromTime: fromTime,
      toTime: toTime,
    );
  }
}