ios: Clear transactions which haven't completed

This commit is contained in:
Vishesh Handa
2020-09-07 22:27:46 +02:00
parent 1fff957c8b
commit fde1149f56

View File

@ -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';