mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-06-30 03:19:11 +08:00
ios: Clear transactions which haven't completed
This commit is contained in:
29
lib/iap.dart
29
lib/iap.dart
@ -3,15 +3,19 @@ import 'dart:io' show Platform;
|
||||
|
||||
import 'package:http/http.dart' as http;
|
||||
import 'package:in_app_purchase/in_app_purchase.dart';
|
||||
import 'package:in_app_purchase/store_kit_wrappers.dart';
|
||||
import 'package:meta/meta.dart';
|
||||
|
||||
import 'package:gitjournal/app.dart';
|
||||
import 'package:gitjournal/error_reporting.dart';
|
||||
import 'package:gitjournal/features.dart';
|
||||
import 'package:gitjournal/settings.dart';
|
||||
import 'package:gitjournal/utils/logger.dart';
|
||||
|
||||
class InAppPurchases {
|
||||
static Future<void> confirmProPurchaseBoot() async {
|
||||
clearTransactionsIos();
|
||||
|
||||
if (Features.alwaysPro) {
|
||||
return;
|
||||
}
|
||||
@ -97,6 +101,31 @@ class InAppPurchases {
|
||||
}
|
||||
return SubscriptionStatus(false, dtNow);
|
||||
}
|
||||
|
||||
static Future<void> clearTransactionsIos() async {
|
||||
if (Platform.isIOS) {
|
||||
final transactions = await SKPaymentQueueWrapper().transactions();
|
||||
for (final transaction in transactions) {
|
||||
try {
|
||||
if (transaction.transactionState ==
|
||||
SKPaymentTransactionStateWrapper.purchased) {
|
||||
continue;
|
||||
}
|
||||
if (transaction.transactionState ==
|
||||
SKPaymentTransactionStateWrapper.restored) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (transaction.transactionState !=
|
||||
SKPaymentTransactionStateWrapper.purchasing) {
|
||||
await SKPaymentQueueWrapper().finishTransaction(transaction);
|
||||
}
|
||||
} catch (e, stackTrace) {
|
||||
logException(e, stackTrace);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const base_url = 'https://us-central1-gitjournal-io.cloudfunctions.net';
|
||||
|
Reference in New Issue
Block a user