diff --git a/app/src/debug/java/org/tasks/preferences/DebugPreferences.java b/app/src/debug/java/org/tasks/preferences/DebugPreferences.java index 7228019a2..f4c6f877e 100644 --- a/app/src/debug/java/org/tasks/preferences/DebugPreferences.java +++ b/app/src/debug/java/org/tasks/preferences/DebugPreferences.java @@ -3,12 +3,21 @@ package org.tasks.preferences; import static com.google.common.primitives.Ints.asList; import android.os.Bundle; +import android.preference.Preference; +import androidx.annotation.StringRes; +import com.android.billingclient.api.BillingClient.SkuType; +import javax.inject.Inject; import org.tasks.R; +import org.tasks.billing.BillingClient; +import org.tasks.billing.Inventory; import org.tasks.injection.ActivityComponent; import org.tasks.injection.InjectingPreferenceActivity; public class DebugPreferences extends InjectingPreferenceActivity { + @Inject Inventory inventory; + @Inject BillingClient billingClient; + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -28,6 +37,29 @@ public class DebugPreferences extends InjectingPreferenceActivity { return true; }); } + + setupIap(R.string.debug_themes, Inventory.SKU_THEMES); + setupIap(R.string.debug_tasker, Inventory.SKU_TASKER); + setupIap(R.string.debug_dashclock, Inventory.SKU_DASHCLOCK); + } + + private void setupIap(@StringRes int prefId, String sku) { + Preference preference = findPreference(prefId); + if (inventory.getPurchase(sku) == null) { + preference.setTitle(getString(R.string.debug_purchase, sku)); + preference.setOnPreferenceClickListener( + p -> { + billingClient.initiatePurchaseFlow(DebugPreferences.this, sku, SkuType.INAPP, null); + return false; + }); + } else { + preference.setTitle(getString(R.string.debug_consume, sku)); + preference.setOnPreferenceClickListener( + p -> { + billingClient.consume(sku); + return false; + }); + } } @Override diff --git a/app/src/debug/res/values/keys.xml b/app/src/debug/res/values/keys.xml index 3b13674ec..52290fe5e 100644 --- a/app/src/debug/res/values/keys.xml +++ b/app/src/debug/res/values/keys.xml @@ -1,4 +1,9 @@ Tasks Debug + Purchase %s + Consume %s + debug_themes + debug_tasker + debug_dashclock \ No newline at end of file diff --git a/app/src/debug/res/xml/preferences_debug.xml b/app/src/debug/res/xml/preferences_debug.xml index 6543e06c4..0b74de9c5 100644 --- a/app/src/debug/res/xml/preferences_debug.xml +++ b/app/src/debug/res/xml/preferences_debug.xml @@ -3,11 +3,11 @@ + android:title="@string/debug_leak_canary"/> + android:title="@string/debug_flipper"/> + android:title="@string/debug_pro"/> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/org/tasks/billing/Inventory.java b/app/src/main/java/org/tasks/billing/Inventory.java index 2e599ddef..090909fee 100644 --- a/app/src/main/java/org/tasks/billing/Inventory.java +++ b/app/src/main/java/org/tasks/billing/Inventory.java @@ -18,9 +18,9 @@ import timber.log.Timber; public class Inventory { static final String SKU_VIP = "vip"; - static final String SKU_TASKER = "tasker"; - static final String SKU_THEMES = "themes"; - static final String SKU_DASHCLOCK = "dashclock"; + public static final String SKU_TASKER = "tasker"; + public static final String SKU_THEMES = "themes"; + public static final String SKU_DASHCLOCK = "dashclock"; private final Preferences preferences; private final SignatureVerifier signatureVerifier;