|
@@ -13,6 +13,7 @@ import 'package:doublefeel_flutter/core/network/api/health_api.dart'; |
|
@@ -13,6 +13,7 @@ import 'package:doublefeel_flutter/core/network/api/health_api.dart'; |
|
13
|
import 'package:doublefeel_flutter/core/network/api/pay_api.dart';
|
13
|
import 'package:doublefeel_flutter/core/network/api/pay_api.dart';
|
|
14
|
import 'package:doublefeel_flutter/core/network/api/vip_api.dart';
|
14
|
import 'package:doublefeel_flutter/core/network/api/vip_api.dart';
|
|
15
|
import 'package:doublefeel_flutter/core/result/app_result.dart';
|
15
|
import 'package:doublefeel_flutter/core/result/app_result.dart';
|
|
|
|
16
|
+import 'package:doublefeel_flutter/core/services/loading_service.dart';
|
|
16
|
import 'package:doublefeel_flutter/core/services/user_state_service.dart';
|
17
|
import 'package:doublefeel_flutter/core/services/user_state_service.dart';
|
|
17
|
import 'package:doublefeel_flutter/core/util/app_toast.dart';
|
18
|
import 'package:doublefeel_flutter/core/util/app_toast.dart';
|
|
18
|
import 'package:doublefeel_flutter/data/local/user_account_storage.dart';
|
19
|
import 'package:doublefeel_flutter/data/local/user_account_storage.dart';
|
|
@@ -234,7 +235,8 @@ class TodayController extends GetMaterialController { |
|
@@ -234,7 +235,8 @@ class TodayController extends GetMaterialController { |
|
234
|
}
|
235
|
}
|
|
235
|
}
|
236
|
}
|
|
236
|
|
237
|
|
|
237
|
- Future<void> requestHealthAuthorization() async {
|
238
|
+ Future<void> requestHealthAuthorization(
|
|
|
|
239
|
+ {bool isFromNoPermissionPage = false}) async {
|
|
238
|
if (GetPlatform.isIOS) {
|
240
|
if (GetPlatform.isIOS) {
|
|
239
|
try {
|
241
|
try {
|
|
240
|
final result = await _hostApi.checkHealthAppAuthorization();
|
242
|
final result = await _hostApi.checkHealthAppAuthorization();
|
|
@@ -243,17 +245,37 @@ class TodayController extends GetMaterialController { |
|
@@ -243,17 +245,37 @@ class TodayController extends GetMaterialController { |
|
243
|
bool success = await _hostApi.requestHealthClientAuthorization();
|
245
|
bool success = await _hostApi.requestHealthClientAuthorization();
|
|
244
|
AppLogger.d("requestHealthClientAuthorization : $success");
|
246
|
AppLogger.d("requestHealthClientAuthorization : $success");
|
|
245
|
if (success) {
|
247
|
if (success) {
|
|
246
|
- _performDataUpload();
|
248
|
+ await LoadingService.instance.run(() async {
|
|
|
|
249
|
+ try {
|
|
|
|
250
|
+ final result = await _hostApi.performHealthUpload();
|
|
|
|
251
|
+ } catch (error, stackTrace) {
|
|
|
|
252
|
+ AppLogger.e('Apple Health upload failed', error, stackTrace);
|
|
|
|
253
|
+ }
|
|
|
|
254
|
+ });
|
|
|
|
255
|
+ result.status = 1;
|
|
|
|
256
|
+ checkHealthDataAuthCardVisible();
|
|
247
|
// AppToast.show('刷新完成');
|
257
|
// AppToast.show('刷新完成');
|
|
|
|
258
|
+ if (isFromNoPermissionPage) {
|
|
|
|
259
|
+ Get.back();
|
|
|
|
260
|
+ }
|
|
248
|
} else {
|
261
|
} else {
|
|
249
|
// Get.to(NoHealthDataPage(
|
262
|
// Get.to(NoHealthDataPage(
|
|
250
|
// onRefresh: _performDataUpload,
|
263
|
// onRefresh: _performDataUpload,
|
|
251
|
// ));
|
264
|
// ));
|
|
252
|
}
|
265
|
}
|
|
253
|
return;
|
266
|
return;
|
|
254
|
- }
|
|
|
|
255
|
- if (result.status == 1) {
|
|
|
|
256
|
- _performDataUpload();
|
267
|
+ } else if (result.status == 1) {
|
|
|
|
268
|
+ await LoadingService.instance.run(() async {
|
|
|
|
269
|
+ try {
|
|
|
|
270
|
+ final result = await _hostApi.performHealthUpload();
|
|
|
|
271
|
+ } catch (error, stackTrace) {
|
|
|
|
272
|
+ AppLogger.e('Apple Health upload failed', error, stackTrace);
|
|
|
|
273
|
+ }
|
|
|
|
274
|
+ });
|
|
|
|
275
|
+ checkHealthDataAuthCardVisible(result);
|
|
|
|
276
|
+ if (isFromNoPermissionPage) {
|
|
|
|
277
|
+ Get.back();
|
|
|
|
278
|
+ }
|
|
257
|
return;
|
279
|
return;
|
|
258
|
}
|
280
|
}
|
|
259
|
// 打开苹果健康
|
281
|
// 打开苹果健康
|
|
@@ -264,12 +286,13 @@ class TodayController extends GetMaterialController { |
|
@@ -264,12 +286,13 @@ class TodayController extends GetMaterialController { |
|
264
|
}
|
286
|
}
|
|
265
|
}
|
287
|
}
|
|
266
|
|
288
|
|
|
267
|
- void onAuthorizeTap() {
|
289
|
+ Future<void> onAuthorizeTap() async {
|
|
268
|
if (showHealthDataAuthCardStatus.value == 1) {
|
290
|
if (showHealthDataAuthCardStatus.value == 1) {
|
|
269
|
return;
|
291
|
return;
|
|
270
|
} else if (showHealthDataAuthCardStatus.value == 0) {
|
292
|
} else if (showHealthDataAuthCardStatus.value == 0) {
|
|
271
|
Get.to(NoHealthDataNoPermissionPage(
|
293
|
Get.to(NoHealthDataNoPermissionPage(
|
|
272
|
- onRequest: requestHealthAuthorization,
|
294
|
+ onRequest: () =>
|
|
|
|
295
|
+ requestHealthAuthorization(isFromNoPermissionPage: true),
|
|
273
|
));
|
296
|
));
|
|
274
|
} else {
|
297
|
} else {
|
|
275
|
Get.to(NoHealthDataPage(
|
298
|
Get.to(NoHealthDataPage(
|
|
@@ -295,9 +318,10 @@ class TodayController extends GetMaterialController { |
|
@@ -295,9 +318,10 @@ class TodayController extends GetMaterialController { |
|
295
|
}
|
318
|
}
|
|
296
|
}
|
319
|
}
|
|
297
|
|
320
|
|
|
298
|
- Future<void> checkHealthDataAuthCardVisible() async {
|
321
|
+ Future<void> checkHealthDataAuthCardVisible(
|
|
|
|
322
|
+ [HealthAuthorization? preResult]) async {
|
|
299
|
try {
|
323
|
try {
|
|
300
|
- final result = await _hostApi.checkHealthAppAuthorization();
|
324
|
+ final result = preResult ?? await _hostApi.checkHealthAppAuthorization();
|
|
301
|
|
325
|
|
|
302
|
if (result.status == 1) {
|
326
|
if (result.status == 1) {
|
|
303
|
await _performDataUpload();
|
327
|
await _performDataUpload();
|