PurchaseWidget: Log the exceptions

This commit is contained in:
Vishesh Handa
2020-09-07 21:43:40 +02:00
parent 618ae071b9
commit c229b7c2e8

View File

@ -8,6 +8,7 @@ import 'package:in_app_purchase/in_app_purchase.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:gitjournal/analytics.dart'; import 'package:gitjournal/analytics.dart';
import 'package:gitjournal/error_reporting.dart';
import 'package:gitjournal/iap.dart'; import 'package:gitjournal/iap.dart';
import 'package:gitjournal/settings.dart'; import 'package:gitjournal/settings.dart';
import 'package:gitjournal/utils/logger.dart'; import 'package:gitjournal/utils/logger.dart';
@ -38,11 +39,11 @@ class PurchaseButton extends StatelessWidget {
child: Text(text, textAlign: TextAlign.center), child: Text(text, textAlign: TextAlign.center),
color: Theme.of(context).primaryColor, color: Theme.of(context).primaryColor,
padding: const EdgeInsets.fromLTRB(32.0, 16.0, 32.0, 16.0), padding: const EdgeInsets.fromLTRB(32.0, 16.0, 32.0, 16.0),
onPressed: product != null ? () => _initPurchase(context) : null, onPressed: product != null ? () => _reportExceptions(context) : null,
); );
} }
void _initPurchase(BuildContext context) async { Future<void> _initPurchase(BuildContext context) async {
var purchaseParam = PurchaseParam(productDetails: product); var purchaseParam = PurchaseParam(productDetails: product);
var sentSuccess = await InAppPurchaseConnection.instance var sentSuccess = await InAppPurchaseConnection.instance
.buyNonConsumable(purchaseParam: purchaseParam); .buyNonConsumable(purchaseParam: purchaseParam);
@ -51,10 +52,15 @@ class PurchaseButton extends StatelessWidget {
var err = "Failed to send purchase request"; var err = "Failed to send purchase request";
var dialog = PurchaseFailedDialog(err); var dialog = PurchaseFailedDialog(err);
await showDialog(context: context, builder: (context) => dialog); await showDialog(context: context, builder: (context) => dialog);
return;
} }
}
return null; void _reportExceptions(BuildContext context) async {
try {
await _initPurchase(context);
} catch (err, stackTrace) {
logException(err, stackTrace);
}
} }
} }