health_kit_api.dart 3.02 KB
import 'package:pigeon/pigeon.dart';

class HealthUploadResult {
  HealthUploadResult({
    required this.commonUploadSuccess,
    required this.sleepUploadSuccess,
    this.errorMessage,
  });

  bool commonUploadSuccess;
  bool sleepUploadSuccess;
  String? errorMessage;
}

class HealthUploadDataPoint {
  HealthUploadDataPoint({
    required this.dataType,
    required this.time,
    required this.value,
  });

  int dataType;
  int time;
  double value;
}

class HealthSleepUploadDataPoint {
  HealthSleepUploadDataPoint({
    required this.dataType,
    required this.fromTime,
    required this.toTime,
  });

  int dataType;
  int fromTime;
  int toTime;
}

class HealthActivityTargetData {
  HealthActivityTargetData({
    this.move,
    this.stand,
  });

  int? move;
  int? stand;
}

@ConfigurePigeon(
  PigeonOptions(
    dartOut: 'lib/pigeon/health_kit_api.g.dart',
    dartPackageName: 'doublefeel_flutter',
    dartOptions: DartOptions(),
    kotlinOut:
        'android/app/src/main/kotlin/com/doublefeel/app/pigeon/HealthKitApi.kt',
    kotlinOptions: KotlinOptions(
      package: 'com.doublefeel.app.pigeon',
    ),
    swiftOut: 'ios/Runner/Pigeon/HealthKitApi.swift',
    swiftOptions: SwiftOptions(),
    arkTSOut: 'ohos/entry/src/main/ets/pigeon/HealthKitApi.ets',
    copyrightHeader: 'pigeon/copyright.txt',
  ),
)
@HostApi()
abstract class HealthKitHostApi {
  bool checkHealthAppAuthorization();

  String getHealthServerAuthUrl();

  /// Opens Huawei Health client authorization UI. Returns whether user granted.
  bool requestHealthClientAuthorization();

  bool cancelHealthAppAuthorization();

  /// Runs native health read and server upload pipeline.
  HealthUploadResult performHealthUpload();

  List<HealthUploadDataPoint> fetchHrvData(int startTime, int endTime);

  List<HealthUploadDataPoint> fetchHeartRateData(int startTime, int endTime);

  List<HealthUploadDataPoint> fetchWalkingHeartRateData(
    int startTime,
    int endTime,
  );

  List<HealthUploadDataPoint> fetchRestingHeartRateData(
    int startTime,
    int endTime,
  );

  List<HealthUploadDataPoint> fetchSleepingHeartRateData(
    int startTime,
    int endTime,
  );

  List<HealthUploadDataPoint> fetchOxygenSaturationData(
    int startTime,
    int endTime,
  );

  List<HealthUploadDataPoint> fetchActiveEnergyData(
    int startTime,
    int endTime,
  );

  List<HealthUploadDataPoint> fetchExerciseData(int startTime, int endTime);

  List<HealthUploadDataPoint> fetchStandData(int startTime, int endTime);

  List<HealthUploadDataPoint> fetchStepCountData(int startTime, int endTime);

  List<HealthSleepUploadDataPoint> fetchSleepData(int startTime, int endTime);

  List<HealthUploadDataPoint> fetchSleepingWristTemperatureData(
    int startTime,
    int endTime,
  );

  List<HealthUploadDataPoint> fetchRespiratoryRateData(
    int startTime,
    int endTime,
  );

  List<HealthUploadDataPoint> fetchIrregularHeartRhythmData(
    int startTime,
    int endTime,
  );

  HealthActivityTargetData? fetchActivityTargetData(
    int startTime,
    int endTime,
  );
}