diff --git a/app/build.gradle b/app/build.gradle index 83824889..896e6962 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -79,7 +79,7 @@ dependencies { compile(project(':jscl')) { exclude(module: 'xercesImpl') } - compile 'org.solovyev.android:checkout:0.7.5@aar' + compile 'org.solovyev.android:checkout:1.0.1' compile 'org.solovyev.android:material:0.1.4@aar' compile "com.google.android.gms:play-services-ads:${versions.gpsLib}" compile "com.google.android.gms:play-services-base:${versions.gpsLib}" @@ -109,8 +109,10 @@ dependencies { androidTestCompile 'com.android.support.test:runner:0.5' androidTestCompile 'com.android.support.test:rules:0.5' androidTestCompile 'org.hamcrest:hamcrest-library:1.3' - androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2' -} + androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { + // use version of jsr305 provided by Checkout + exclude group: 'com.google.code.findbugs', module: 'jsr305' + })} apt { arguments { diff --git a/app/src/main/java/org/solovyev/android/calculator/AppModule.java b/app/src/main/java/org/solovyev/android/calculator/AppModule.java index c65aeb9b..4c772b0a 100644 --- a/app/src/main/java/org/solovyev/android/calculator/AppModule.java +++ b/app/src/main/java/org/solovyev/android/calculator/AppModule.java @@ -9,28 +9,35 @@ import android.os.Looper; import android.preference.PreferenceManager; import android.support.annotation.NonNull; import android.util.Log; + import com.squareup.otto.Bus; import com.squareup.otto.GeneratedHandlerFinder; -import dagger.Module; -import dagger.Provides; -import jscl.JsclMathEngine; + import org.solovyev.android.calculator.language.Languages; import org.solovyev.android.calculator.wizard.CalculatorWizards; -import org.solovyev.android.checkout.*; +import org.solovyev.android.checkout.Billing; +import org.solovyev.android.checkout.Checkout; +import org.solovyev.android.checkout.Inventory; +import org.solovyev.android.checkout.RobotmediaDatabase; +import org.solovyev.android.checkout.RobotmediaInventory; import org.solovyev.android.plotter.Plot; import org.solovyev.android.plotter.Plotter; import org.solovyev.android.wizard.Wizards; +import java.io.File; +import java.util.concurrent.Executor; +import java.util.concurrent.Executors; +import java.util.concurrent.ThreadFactory; +import java.util.concurrent.atomic.AtomicInteger; + import javax.annotation.Nonnull; import javax.annotation.Nullable; import javax.inject.Named; import javax.inject.Singleton; -import java.io.File; -import java.util.Collections; -import java.util.concurrent.Executor; -import java.util.concurrent.Executors; -import java.util.concurrent.ThreadFactory; -import java.util.concurrent.atomic.AtomicInteger; + +import dagger.Module; +import dagger.Provides; +import jscl.JsclMathEngine; @Module public class AppModule { @@ -189,12 +196,6 @@ public class AppModule { }); } - @Singleton - @Provides - Products provideProducts() { - return Products.create().add(ProductTypes.IN_APP, Collections.singletonList("ad_free")); - } - @Singleton @Provides Typeface provideTypeface() { diff --git a/app/src/main/java/org/solovyev/android/calculator/ads/AdUi.java b/app/src/main/java/org/solovyev/android/calculator/ads/AdUi.java index b524aa0a..c1c57724 100644 --- a/app/src/main/java/org/solovyev/android/calculator/ads/AdUi.java +++ b/app/src/main/java/org/solovyev/android/calculator/ads/AdUi.java @@ -1,11 +1,12 @@ package org.solovyev.android.calculator.ads; +import static org.solovyev.android.checkout.ProductTypes.IN_APP; + import android.os.Handler; import android.os.Looper; import android.support.annotation.NonNull; import android.view.View; -import butterknife.Bind; -import butterknife.ButterKnife; + import org.solovyev.android.calculator.AdView; import org.solovyev.android.calculator.R; import org.solovyev.android.checkout.CppCheckout; @@ -15,7 +16,8 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; import javax.inject.Inject; -import static org.solovyev.android.checkout.ProductTypes.IN_APP; +import butterknife.Bind; +import butterknife.ButterKnife; public class AdUi { @@ -47,13 +49,14 @@ public class AdUi { if (adFree != null) { updateAdView(); } else { - checkout.loadInventory().whenLoaded(onMainThread(new Inventory.Listener() { - @Override - public void onLoaded(@Nonnull Inventory.Products products) { - adFree = products.get(IN_APP).isPurchased("ad_free"); - updateAdView(); - } - })); + checkout.loadInventory(Inventory.Request.create().loadAllPurchases(), + onMainThread(new Inventory.Callback() { + @Override + public void onLoaded(@Nonnull Inventory.Products products) { + adFree = products.get(IN_APP).isPurchased("ad_free"); + updateAdView(); + } + })); } } @@ -70,18 +73,18 @@ public class AdUi { } @Nonnull - private Inventory.Listener onMainThread(@Nonnull final Inventory.Listener listener) { - return new Inventory.Listener() { + private Inventory.Callback onMainThread(@Nonnull final Inventory.Callback callback) { + return new Inventory.Callback() { @Override public void onLoaded(@Nonnull final Inventory.Products products) { if (handler.getLooper() == Looper.myLooper()) { - listener.onLoaded(products); + callback.onLoaded(products); return; } handler.post(new Runnable() { @Override public void run() { - listener.onLoaded(products); + callback.onLoaded(products); } }); } diff --git a/app/src/main/java/org/solovyev/android/calculator/preferences/PreferencesActivity.java b/app/src/main/java/org/solovyev/android/calculator/preferences/PreferencesActivity.java index b0bb2b27..22f5aaf7 100644 --- a/app/src/main/java/org/solovyev/android/calculator/preferences/PreferencesActivity.java +++ b/app/src/main/java/org/solovyev/android/calculator/preferences/PreferencesActivity.java @@ -8,6 +8,7 @@ import android.support.annotation.NonNull; import android.support.annotation.StringRes; import android.support.annotation.XmlRes; import android.util.SparseArray; + import org.solovyev.android.calculator.App; import org.solovyev.android.calculator.AppComponent; import org.solovyev.android.calculator.BaseActivity; @@ -16,7 +17,6 @@ import org.solovyev.android.calculator.language.Languages; import org.solovyev.android.checkout.ActivityCheckout; import org.solovyev.android.checkout.Billing; import org.solovyev.android.checkout.Checkout; -import org.solovyev.android.checkout.Products; import javax.annotation.Nonnull; import javax.inject.Inject; @@ -47,8 +47,6 @@ public class PreferencesActivity extends BaseActivity implements SharedPreferenc @Inject Billing billing; @Inject - Products products; - @Inject Languages languages; public PreferencesActivity() { @@ -87,7 +85,7 @@ public class PreferencesActivity extends BaseActivity implements SharedPreferenc .commit(); } - checkout = Checkout.forActivity(this, billing, products); + checkout = Checkout.forActivity(this, billing); checkout.start(); } diff --git a/app/src/main/java/org/solovyev/android/calculator/preferences/PreferencesFragment.java b/app/src/main/java/org/solovyev/android/calculator/preferences/PreferencesFragment.java index cb499180..f231cad9 100644 --- a/app/src/main/java/org/solovyev/android/calculator/preferences/PreferencesFragment.java +++ b/app/src/main/java/org/solovyev/android/calculator/preferences/PreferencesFragment.java @@ -1,5 +1,11 @@ package org.solovyev.android.calculator.preferences; +import static org.solovyev.android.calculator.App.cast; +import static org.solovyev.android.calculator.Engine.Preferences.angleUnitName; +import static org.solovyev.android.calculator.Engine.Preferences.numeralBaseName; +import static org.solovyev.android.calculator.wizard.CalculatorWizards.DEFAULT_WIZARD_FLOW; +import static org.solovyev.android.wizard.WizardUi.startWizard; + import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; @@ -11,13 +17,16 @@ import android.support.v4.app.FragmentActivity; import android.util.SparseArray; import android.view.View; import android.widget.ListView; + import com.squareup.otto.Bus; import com.squareup.otto.Subscribe; -import jscl.AngleUnit; -import jscl.JsclMathEngine; -import jscl.NumeralBase; -import org.solovyev.android.calculator.*; + +import org.solovyev.android.calculator.ActivityLauncher; +import org.solovyev.android.calculator.AdView; +import org.solovyev.android.calculator.Engine; +import org.solovyev.android.calculator.Preferences; import org.solovyev.android.calculator.Preferences.Gui.Theme; +import org.solovyev.android.calculator.R; import org.solovyev.android.calculator.feedback.FeedbackReporter; import org.solovyev.android.calculator.language.Language; import org.solovyev.android.calculator.language.Languages; @@ -29,17 +38,16 @@ import org.solovyev.android.prefs.StringPreference; import org.solovyev.android.wizard.Wizards; import org.solovyev.common.text.CharacterMapper; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; -import javax.inject.Inject; import java.util.Arrays; import java.util.List; -import static org.solovyev.android.calculator.App.cast; -import static org.solovyev.android.calculator.Engine.Preferences.angleUnitName; -import static org.solovyev.android.calculator.Engine.Preferences.numeralBaseName; -import static org.solovyev.android.calculator.wizard.CalculatorWizards.DEFAULT_WIZARD_FLOW; -import static org.solovyev.android.wizard.WizardUi.startWizard; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import javax.inject.Inject; + +import jscl.AngleUnit; +import jscl.JsclMathEngine; +import jscl.NumeralBase; public class PreferencesFragment extends org.solovyev.android.material.preferences.PreferencesFragment implements SharedPreferences.OnSharedPreferenceChangeListener { @@ -114,7 +122,7 @@ public class PreferencesFragment extends org.solovyev.android.material.preferenc prepareLanguagePreference(preference); prepareThemePreference(preference); - getCheckout().whenReady(new Checkout.ListenerAdapter() { + getCheckout().whenReady(new Checkout.EmptyListener() { @Override public void onReady(@Nonnull BillingRequests requests) { requests.isPurchased(ProductTypes.IN_APP, "ad_free", new RequestListener() { diff --git a/app/src/main/java/org/solovyev/android/calculator/preferences/PurchaseDialogActivity.java b/app/src/main/java/org/solovyev/android/calculator/preferences/PurchaseDialogActivity.java index 801f5eab..2c9c4781 100644 --- a/app/src/main/java/org/solovyev/android/calculator/preferences/PurchaseDialogActivity.java +++ b/app/src/main/java/org/solovyev/android/calculator/preferences/PurchaseDialogActivity.java @@ -22,6 +22,8 @@ package org.solovyev.android.calculator.preferences; +import static org.solovyev.android.calculator.App.cast; + import android.app.Activity; import android.content.DialogInterface; import android.content.Intent; @@ -30,25 +32,28 @@ import android.support.annotation.NonNull; import android.support.v4.app.Fragment; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; + import org.solovyev.android.calculator.App; import org.solovyev.android.calculator.BaseDialogFragment; import org.solovyev.android.calculator.R; import org.solovyev.android.calculator.ga.Ga; -import org.solovyev.android.checkout.*; +import org.solovyev.android.checkout.ActivityCheckout; +import org.solovyev.android.checkout.Billing; +import org.solovyev.android.checkout.BillingRequests; +import org.solovyev.android.checkout.Checkout; +import org.solovyev.android.checkout.ProductTypes; +import org.solovyev.android.checkout.Purchase; +import org.solovyev.android.checkout.RequestListener; import javax.annotation.Nonnull; import javax.annotation.Nullable; import javax.inject.Inject; -import static org.solovyev.android.calculator.App.cast; - public class PurchaseDialogActivity extends AppCompatActivity implements RequestListener { @Inject Billing billing; @Inject - Products products; - @Inject Ga ga; ActivityCheckout checkout; @@ -62,7 +67,7 @@ public class PurchaseDialogActivity extends AppCompatActivity implements Request App.showDialog(new PurchaseDialogFragment(), PurchaseDialogFragment.FRAGMENT_TAG, getSupportFragmentManager()); } - checkout = Checkout.forActivity(this, billing, products); + checkout = Checkout.forActivity(this, billing); checkout.start(); checkout.createPurchaseFlow(this); } @@ -80,7 +85,7 @@ public class PurchaseDialogActivity extends AppCompatActivity implements Request } private void purchase() { - checkout.whenReady(new Checkout.ListenerAdapter() { + checkout.whenReady(new Checkout.EmptyListener() { @Override public void onReady(@Nonnull BillingRequests requests) { requests.purchase(ProductTypes.IN_APP, "ad_free", null, checkout.getPurchaseFlow()); diff --git a/app/src/main/java/org/solovyev/android/checkout/CppCheckout.java b/app/src/main/java/org/solovyev/android/checkout/CppCheckout.java index 59e8fc59..a0945076 100644 --- a/app/src/main/java/org/solovyev/android/checkout/CppCheckout.java +++ b/app/src/main/java/org/solovyev/android/checkout/CppCheckout.java @@ -13,8 +13,8 @@ public class CppCheckout extends Checkout { private int started = 0; @Inject - public CppCheckout(@NonNull Billing billing, @NonNull Products products) { - super(null, billing, products); + public CppCheckout(@NonNull Billing billing) { + super(null, billing); } @Override