mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-06-30 11:33:34 +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:http/http.dart' as http;
|
||||||
import 'package:in_app_purchase/in_app_purchase.dart';
|
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:meta/meta.dart';
|
||||||
|
|
||||||
import 'package:gitjournal/app.dart';
|
import 'package:gitjournal/app.dart';
|
||||||
|
import 'package:gitjournal/error_reporting.dart';
|
||||||
import 'package:gitjournal/features.dart';
|
import 'package:gitjournal/features.dart';
|
||||||
import 'package:gitjournal/settings.dart';
|
import 'package:gitjournal/settings.dart';
|
||||||
import 'package:gitjournal/utils/logger.dart';
|
import 'package:gitjournal/utils/logger.dart';
|
||||||
|
|
||||||
class InAppPurchases {
|
class InAppPurchases {
|
||||||
static Future<void> confirmProPurchaseBoot() async {
|
static Future<void> confirmProPurchaseBoot() async {
|
||||||
|
clearTransactionsIos();
|
||||||
|
|
||||||
if (Features.alwaysPro) {
|
if (Features.alwaysPro) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -97,6 +101,31 @@ class InAppPurchases {
|
|||||||
}
|
}
|
||||||
return SubscriptionStatus(false, dtNow);
|
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';
|
const base_url = 'https://us-central1-gitjournal-io.cloudfunctions.net';
|
||||||
|
Reference in New Issue
Block a user