From 5731489e9c6ce618bfee73676954c31d5dbd10d8 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Thu, 12 Apr 2018 13:30:13 -0500 Subject: [PATCH] Fix generic and amazon compile Can't unlock pro with these builds yet --- app/build.gradle | 2 +- .../java/org/tasks/analytics/Tracker.java | 12 +++++++ .../org/tasks/billing/PurchaseHelper.java | 28 --------------- .../org/tasks/billing/SignatureVerifier.java | 13 +++++++ .../java/org/tasks/analytics/Tracker.java | 2 ++ .../org/tasks/billing/PurchaseHelper.java | 34 ------------------- .../org/tasks/billing/SignatureVerifier.java | 14 ++++++++ .../java/org/tasks/analytics/Tracker.java | 2 -- .../org/tasks/billing/SignatureVerifier.java | 29 ++++++++++++++++ .../java/org/tasks/billing/Inventory.java | 22 +++--------- 10 files changed, 75 insertions(+), 83 deletions(-) delete mode 100644 app/src/amazon/java/org/tasks/billing/PurchaseHelper.java create mode 100644 app/src/amazon/java/org/tasks/billing/SignatureVerifier.java delete mode 100644 app/src/generic/java/org/tasks/billing/PurchaseHelper.java create mode 100644 app/src/generic/java/org/tasks/billing/SignatureVerifier.java create mode 100644 app/src/googleplay/java/org/tasks/billing/SignatureVerifier.java diff --git a/app/build.gradle b/app/build.gradle index 46414027c..c806077cd 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -166,8 +166,8 @@ dependencies { implementation "me.leolin:ShortcutBadger:1.1.18@aar" implementation 'com.google.apis:google-api-services-tasks:v1-rev47-1.22.0' implementation 'com.google.api-client:google-api-client-android:1.22.0' + implementation 'com.android.billingclient:billing:1.0' - googleplayImplementation 'com.android.billingclient:billing:1.0' googleplayImplementation "com.google.android.gms:play-services-location:${GPS_VERSION}" googleplayImplementation "com.google.android.gms:play-services-analytics:${GPS_VERSION}" googleplayImplementation "com.google.android.gms:play-services-auth:${GPS_VERSION}" diff --git a/app/src/amazon/java/org/tasks/analytics/Tracker.java b/app/src/amazon/java/org/tasks/analytics/Tracker.java index d8d4cfe9b..46d5f208e 100644 --- a/app/src/amazon/java/org/tasks/analytics/Tracker.java +++ b/app/src/amazon/java/org/tasks/analytics/Tracker.java @@ -1,6 +1,9 @@ package org.tasks.analytics; +import static org.tasks.billing.BillingClient.BillingResponseToString; + import android.content.Context; +import com.android.billingclient.api.BillingClient.BillingResponse; import com.google.android.gms.analytics.ExceptionParser; import com.google.android.gms.analytics.ExceptionReporter; import com.google.android.gms.analytics.GoogleAnalytics; @@ -90,4 +93,13 @@ public class Tracker { } tracker.send(eventBuilder.build()); } + + public void reportIabResult(@BillingResponse int response, String sku) { + tracker.send( + new HitBuilders.EventBuilder() + .setCategory(context.getString(R.string.tracking_category_iab)) + .setAction(sku) + .setLabel(BillingResponseToString(response)) + .build()); + } } diff --git a/app/src/amazon/java/org/tasks/billing/PurchaseHelper.java b/app/src/amazon/java/org/tasks/billing/PurchaseHelper.java deleted file mode 100644 index 7e79d27d1..000000000 --- a/app/src/amazon/java/org/tasks/billing/PurchaseHelper.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.tasks.billing; - -import android.app.Activity; -import android.content.Intent; -import javax.inject.Inject; - -public class PurchaseHelper { - - @Inject - public PurchaseHelper() {} - - public boolean purchase( - final Activity activity, - final String sku, - final String pref, - final int requestCode, - final PurchaseHelperCallback callback) { - callback.purchaseCompleted(false, sku); - return false; - } - - public void handleActivityResult( - PurchaseHelperCallback callback, int requestCode, int resultCode, Intent data) {} - - public void disposeIabHelper() {} - - public void consumePurchases() {} -} diff --git a/app/src/amazon/java/org/tasks/billing/SignatureVerifier.java b/app/src/amazon/java/org/tasks/billing/SignatureVerifier.java new file mode 100644 index 000000000..59db9f4b7 --- /dev/null +++ b/app/src/amazon/java/org/tasks/billing/SignatureVerifier.java @@ -0,0 +1,13 @@ +package org.tasks.billing; + +import com.android.billingclient.api.Purchase; +import javax.inject.Inject; + +public class SignatureVerifier { + @Inject + public SignatureVerifier() {} + + public boolean verifySignature(Purchase purchase) { + return true; + } +} diff --git a/app/src/generic/java/org/tasks/analytics/Tracker.java b/app/src/generic/java/org/tasks/analytics/Tracker.java index 1ea511d90..0b31bdc00 100644 --- a/app/src/generic/java/org/tasks/analytics/Tracker.java +++ b/app/src/generic/java/org/tasks/analytics/Tracker.java @@ -25,4 +25,6 @@ public class Tracker { public void reportEvent(Tracking.Events setPreference, int resId, String s) {} public void reportEvent(Tracking.Events category, String action, String label) {} + + public void reportIabResult(int resultCode, String skus) {} } diff --git a/app/src/generic/java/org/tasks/billing/PurchaseHelper.java b/app/src/generic/java/org/tasks/billing/PurchaseHelper.java deleted file mode 100644 index c5413d577..000000000 --- a/app/src/generic/java/org/tasks/billing/PurchaseHelper.java +++ /dev/null @@ -1,34 +0,0 @@ -package org.tasks.billing; - -import android.app.Activity; -import android.content.Intent; -import javax.inject.Inject; -import org.tasks.preferences.Preferences; - -public class PurchaseHelper { - - private Preferences preferences; - - @Inject - public PurchaseHelper(Preferences preferences) { - this.preferences = preferences; - } - - public boolean purchase( - final Activity activity, - final String sku, - final String pref, - final int requestCode, - final PurchaseHelperCallback callback) { - preferences.setBoolean(pref, true); - callback.purchaseCompleted(true, sku); - return true; - } - - public void handleActivityResult( - PurchaseHelperCallback callback, int requestCode, int resultCode, Intent data) {} - - public void disposeIabHelper() {} - - public void consumePurchases() {} -} diff --git a/app/src/generic/java/org/tasks/billing/SignatureVerifier.java b/app/src/generic/java/org/tasks/billing/SignatureVerifier.java new file mode 100644 index 000000000..15e109805 --- /dev/null +++ b/app/src/generic/java/org/tasks/billing/SignatureVerifier.java @@ -0,0 +1,14 @@ +package org.tasks.billing; + +import com.android.billingclient.api.Purchase; +import javax.inject.Inject; + +public class SignatureVerifier { + + @Inject + public SignatureVerifier() {} + + public boolean verifySignature(Purchase purchase) { + return true; + } +} diff --git a/app/src/googleplay/java/org/tasks/analytics/Tracker.java b/app/src/googleplay/java/org/tasks/analytics/Tracker.java index 444144d83..20d306ade 100644 --- a/app/src/googleplay/java/org/tasks/analytics/Tracker.java +++ b/app/src/googleplay/java/org/tasks/analytics/Tracker.java @@ -102,6 +102,4 @@ public class Tracker { .setLabel(BillingResponseToString(response)) .build()); } - - } diff --git a/app/src/googleplay/java/org/tasks/billing/SignatureVerifier.java b/app/src/googleplay/java/org/tasks/billing/SignatureVerifier.java new file mode 100644 index 000000000..cf2103c1c --- /dev/null +++ b/app/src/googleplay/java/org/tasks/billing/SignatureVerifier.java @@ -0,0 +1,29 @@ +package org.tasks.billing; + +import android.content.Context; +import com.android.billingclient.api.Purchase; +import java.io.IOException; +import javax.inject.Inject; +import org.tasks.R; +import org.tasks.injection.ForApplication; +import timber.log.Timber; + +public class SignatureVerifier { + + private final String billingKey; + + @Inject + public SignatureVerifier(@ForApplication Context context) { + billingKey = context.getString(R.string.gp_key); + } + + public boolean verifySignature(Purchase purchase) { + try { + return Security.verifyPurchase( + billingKey, purchase.getOriginalJson(), purchase.getSignature()); + } catch (IOException e) { + Timber.e(e); + return false; + } + } +} diff --git a/app/src/main/java/org/tasks/billing/Inventory.java b/app/src/main/java/org/tasks/billing/Inventory.java index 945311225..8e540b456 100644 --- a/app/src/main/java/org/tasks/billing/Inventory.java +++ b/app/src/main/java/org/tasks/billing/Inventory.java @@ -1,16 +1,12 @@ package org.tasks.billing; -import android.content.Context; import com.android.billingclient.api.Purchase; import com.google.common.collect.ImmutableList; -import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.inject.Inject; -import org.tasks.R; import org.tasks.injection.ApplicationScope; -import org.tasks.injection.ForApplication; import org.tasks.preferences.Preferences; import timber.log.Timber; @@ -26,14 +22,14 @@ public class Inventory { public static final List SKU_SUBS = ImmutableList.of(SKU_PRO); private final Preferences preferences; - private final String billingKey; + private final SignatureVerifier signatureVerifier; private Map purchases = new HashMap<>(); @Inject - public Inventory(@ForApplication Context context, Preferences preferences) { + public Inventory(Preferences preferences, SignatureVerifier signatureVerifier) { this.preferences = preferences; - billingKey = context.getString(R.string.gp_key); + this.signatureVerifier = signatureVerifier; for (Purchase purchase : preferences.getPurchases()) { add(purchase); } @@ -52,7 +48,7 @@ public class Inventory { } private void add(Purchase purchase) { - if (verifySignature(purchase)) { + if (signatureVerifier.verifySignature(purchase)) { Timber.d("add(%s)", purchase); purchases.put(purchase.getSku(), purchase); } @@ -82,16 +78,6 @@ public class Inventory { return purchases.containsKey(sku); } - private boolean verifySignature(Purchase purchase) { - try { - return Security.verifyPurchase( - billingKey, purchase.getOriginalJson(), purchase.getSignature()); - } catch (IOException e) { - Timber.e(e); - return false; - } - } - public Purchase getPurchase(String sku) { return purchases.get(sku); }