apple_health_upload_tool.dart
2.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import 'package:doublefeel_flutter/core/result/app_result.dart';
import 'apple_health_upload_api.dart';
import 'models/apple_health_upload_record.dart';
import 'models/apple_health_upload_request.dart';
import 'models/apple_health_upload_sample.dart';
import 'models/upload_activity_target.dart';
import 'models/upload_sleep.dart';
class AppleHealthUploadTool {
AppleHealthUploadTool(this._api);
final AppleHealthUploadApi _api;
Future<AppleHealthUploadResult> upload({
List<AppleHealthUploadSample> commonData = const [],
List<HealthSleepUploadData> sleepData = const [],
HealthActivityTargetUploadData? activityTarget,
}) async {
AppResult<void>? commonResult;
AppResult<void>? sleepResult;
AppResult<void>? activityTargetResult;
if (commonData.isNotEmpty) {
commonResult = await _api.uploadCommonData(
AppleHealthCommonUploadRequest(dataList: commonData),
);
}
if (sleepData.isNotEmpty) {
sleepResult = await _api.uploadSleepData(
AppleHealthSleepUploadRequest(dataList: sleepData),
);
}
if (activityTarget != null) {
activityTargetResult = await _api.uploadActivityTarget(activityTarget);
}
return AppleHealthUploadResult(
commonUploadSuccess:
commonResult == null || commonResult is AppSuccess<void>,
sleepUploadSuccess:
sleepResult == null || sleepResult is AppSuccess<void>,
activityTargetUploadSuccess: activityTargetResult == null ||
activityTargetResult is AppSuccess<void>,
);
}
Future<AppResult<AppleHealthLatestUploadRecordList>>
getLatestCommonUploadRecordList() {
return _api.getLatestCommonUploadRecordList();
}
Future<AppResult<AppleHealthLatestSleepUploadRecord>>
getLatestSleepUploadRecord() {
return _api.getLatestSleepUploadRecord();
}
}
class AppleHealthUploadResult {
const AppleHealthUploadResult({
required this.commonUploadSuccess,
required this.sleepUploadSuccess,
required this.activityTargetUploadSuccess,
});
final bool commonUploadSuccess;
final bool sleepUploadSuccess;
final bool activityTargetUploadSuccess;
bool get isSuccess =>
commonUploadSuccess && sleepUploadSuccess && activityTargetUploadSuccess;
}