From d74c97d5c760f83b121cbab26011695e565b282e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Ritzl?= Date: Mon, 6 Feb 2023 15:56:03 +0100 Subject: [PATCH] Added null checks --- .../java/com/defold/iap/IapGooglePlay.java | 29 ++++++++++++++----- game.project | 2 +- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/extension-iap/src/java/com/defold/iap/IapGooglePlay.java b/extension-iap/src/java/com/defold/iap/IapGooglePlay.java index 22c1a36..76bb654 100644 --- a/extension-iap/src/java/com/defold/iap/IapGooglePlay.java +++ b/extension-iap/src/java/com/defold/iap/IapGooglePlay.java @@ -362,9 +362,13 @@ public void onConsumeResponse(BillingResult billingResult, String purchaseToken) */ @Override public void onPurchasesUpdated(BillingResult billingResult, List purchases) { - if (billingResult.getResponseCode() == BillingResponseCode.OK && purchases != null) { - for (Purchase purchase : purchases) { - handlePurchase(purchase, this.purchaseListener); + if (billingResult.getResponseCode() == BillingResponseCode.OK) { + if (purchases != null && !purchases.isEmpty()) { + for (Purchase purchase : purchases) { + if (purchase != null) { + handlePurchase(purchase, this.purchaseListener); + } + } } } else { @@ -413,7 +417,12 @@ public void buy(final String product, final String token, final IPurchaseListene @Override public void onProductDetailsResponse(BillingResult billingResult, List productDetailsList) { if (billingResult.getResponseCode() == BillingResponseCode.OK && (productDetailsList != null) && !productDetailsList.isEmpty()) { - buyProduct(productDetailsList.get(0), token, purchaseListener); + for (ProductDetails productDetails : productDetailsList) { + if (productDetails != null) { + buyProduct(productDetails, token, purchaseListener); + break; + } + } } else { Log.e(TAG, "Unable to get product details before buying: " + billingResult.getDebugMessage()); @@ -435,10 +444,12 @@ private void queryProductDetailsAsync(final List productList, final Prod @Override public void onProductDetailsResponse(BillingResult billingResult, List productDetails) { - if (productDetails != null) { + if (productDetails != null && !productDetails.isEmpty()) { // cache products (cache will be used to speed up buying) for (ProductDetails pd : productDetails) { - IapGooglePlay.this.products.put(pd.getProductId(), pd); + if (pd != null) { + IapGooglePlay.this.products.put(pd.getProductId(), pd); + } } // add to list of all product details allProductDetails.addAll(productDetails); @@ -485,9 +496,11 @@ public void listItems(final String products, final IListProductsListener product @Override public void onProductDetailsResponse(BillingResult billingResult, List productDetails) { JSONArray a = new JSONArray(); - if (billingResult.getResponseCode() == BillingResponseCode.OK) { + if ((billingResult.getResponseCode() == BillingResponseCode.OK) && (productDetails != null) && !productDetails.isEmpty()) { for (ProductDetails pd : productDetails) { - a.put(convertProductDetails(pd)); + if (pd != null) { + a.put(convertProductDetails(pd)); + } } } else { diff --git a/game.project b/game.project index 5a2b8e8..c910dee 100644 --- a/game.project +++ b/game.project @@ -16,7 +16,7 @@ target_sdk_version = 29 [project] title = extension-iap -dependencies = https://github.com/andsve/dirtylarry/archive/master.zip +dependencies#0 = https://github.com/andsve/dirtylarry/archive/master.zip [library] include_dirs = extension-iap