listenToPurchaseUpdated function
dynamic
listenToPurchaseUpdated(
- List<PurchaseDetails> purchaseDetailsList,
- Store store
)
Implementation
listenToPurchaseUpdated(
List<PurchaseDetails> purchaseDetailsList, Store store) {
final VirtualPumaPayState state = store.state;
final storeName = Platform.isAndroid ? "android" : "ios";
print(
"🔔 listenToPurchaseUpdated called with ${purchaseDetailsList.length} items");
purchaseDetailsList.forEach((PurchaseDetails item) async {
final _purchaseDetail = item.toPurchaseDetailEntity();
if (item.status == PurchaseStatus.pending) {
store.dispatch(SetPurchasePendingAction(purchasePending: true));
} else {
store.dispatch(SetPurchasePendingAction(purchasePending: false));
final receipt = AppStoreReceiptData(
item.verificationData.localVerificationData,
state.pumaPayState.appleAppStorePassword!,
true);
if (item.status == PurchaseStatus.error) {
print("🚨 Found item with error status: ${item.toString()}");
InAppPurchase.instance.completePurchase(item);
} else if ((item.status == PurchaseStatus.purchased) ||
item.status == PurchaseStatus.restored) {
store.dispatch(VerifyInAppPurchaseAction(
receipt: receipt.toJson(),
productID: item.productID,
storeName: storeName,
purchaseDetail: _purchaseDetail));
}
if (item.pendingCompletePurchase) {
await InAppPurchase.instance.completePurchase(item);
} else {
InAppPurchase.instance.completePurchase(item);
}
}
});
}