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;