|
...
|
...
|
@@ -13,6 +13,7 @@ import 'package:doublefeel_flutter/core/network/api/health_api.dart'; |
|
|
|
import 'package:doublefeel_flutter/core/network/api/pay_api.dart';
|
|
|
|
import 'package:doublefeel_flutter/core/network/api/vip_api.dart';
|
|
|
|
import 'package:doublefeel_flutter/core/result/app_result.dart';
|
|
|
|
import 'package:doublefeel_flutter/core/services/loading_service.dart';
|
|
|
|
import 'package:doublefeel_flutter/core/services/user_state_service.dart';
|
|
|
|
import 'package:doublefeel_flutter/core/util/app_toast.dart';
|
|
|
|
import 'package:doublefeel_flutter/data/local/user_account_storage.dart';
|
|
...
|
...
|
@@ -234,7 +235,8 @@ class TodayController extends GetMaterialController { |
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
Future<void> requestHealthAuthorization() async {
|
|
|
|
Future<void> requestHealthAuthorization(
|
|
|
|
{bool isFromNoPermissionPage = false}) async {
|
|
|
|
if (GetPlatform.isIOS) {
|
|
|
|
try {
|
|
|
|
final result = await _hostApi.checkHealthAppAuthorization();
|
|
...
|
...
|
@@ -243,17 +245,37 @@ class TodayController extends GetMaterialController { |
|
|
|
bool success = await _hostApi.requestHealthClientAuthorization();
|
|
|
|
AppLogger.d("requestHealthClientAuthorization : $success");
|
|
|
|
if (success) {
|
|
|
|
_performDataUpload();
|
|
|
|
await LoadingService.instance.run(() async {
|
|
|
|
try {
|
|
|
|
final result = await _hostApi.performHealthUpload();
|
|
|
|
} catch (error, stackTrace) {
|
|
|
|
AppLogger.e('Apple Health upload failed', error, stackTrace);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
result.status = 1;
|
|
|
|
checkHealthDataAuthCardVisible();
|
|
|
|
// AppToast.show('刷新完成');
|
|
|
|
if (isFromNoPermissionPage) {
|
|
|
|
Get.back();
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
// Get.to(NoHealthDataPage(
|
|
|
|
// onRefresh: _performDataUpload,
|
|
|
|
// ));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (result.status == 1) {
|
|
|
|
_performDataUpload();
|
|
|
|
} else if (result.status == 1) {
|
|
|
|
await LoadingService.instance.run(() async {
|
|
|
|
try {
|
|
|
|
final result = await _hostApi.performHealthUpload();
|
|
|
|
} catch (error, stackTrace) {
|
|
|
|
AppLogger.e('Apple Health upload failed', error, stackTrace);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
checkHealthDataAuthCardVisible(result);
|
|
|
|
if (isFromNoPermissionPage) {
|
|
|
|
Get.back();
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
// 打开苹果健康
|
|
...
|
...
|
@@ -264,12 +286,13 @@ class TodayController extends GetMaterialController { |
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void onAuthorizeTap() {
|
|
|
|
Future<void> onAuthorizeTap() async {
|
|
|
|
if (showHealthDataAuthCardStatus.value == 1) {
|
|
|
|
return;
|
|
|
|
} else if (showHealthDataAuthCardStatus.value == 0) {
|
|
|
|
Get.to(NoHealthDataNoPermissionPage(
|
|
|
|
onRequest: requestHealthAuthorization,
|
|
|
|
onRequest: () =>
|
|
|
|
requestHealthAuthorization(isFromNoPermissionPage: true),
|
|
|
|
));
|
|
|
|
} else {
|
|
|
|
Get.to(NoHealthDataPage(
|
|
...
|
...
|
@@ -295,9 +318,10 @@ class TodayController extends GetMaterialController { |
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
Future<void> checkHealthDataAuthCardVisible() async {
|
|
|
|
Future<void> checkHealthDataAuthCardVisible(
|
|
|
|
[HealthAuthorization? preResult]) async {
|
|
|
|
try {
|
|
|
|
final result = await _hostApi.checkHealthAppAuthorization();
|
|
|
|
final result = preResult ?? await _hostApi.checkHealthAppAuthorization();
|
|
|
|
|
|
|
|
if (result.status == 1) {
|
|
|
|
await _performDataUpload();
|
...
|
...
|
|