Fix some crashes

This commit is contained in:
Phillip Thelen 2016-06-23 16:34:18 +02:00
parent f375e419a6
commit 0f156c2bcf
3 changed files with 33 additions and 26 deletions

View file

@ -11,6 +11,7 @@ import org.solovyev.android.checkout.RequestListener;
import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import android.support.annotation.NonNull;
import java.io.IOException;
import java.util.ArrayList;
@ -24,17 +25,20 @@ import java.util.Set;
public class HabiticaPurchaseVerifier extends BasePurchaseVerifier {
private static final String PURCHASED_PRODUCTS_KEY = "PURCHASED_PRODUCTS";
private final APIHelper apiHelper;
private Set<String> purchasedOrderList = new HashSet<>();
private SharedPreferences preferences;
public HabiticaPurchaseVerifier(Context context) {
public HabiticaPurchaseVerifier(Context context, APIHelper apiHelper) {
preferences = PreferenceManager.getDefaultSharedPreferences(context);
preferences.getStringSet(PURCHASED_PRODUCTS_KEY, purchasedOrderList);
this.apiHelper = apiHelper;
}
@Override
protected void doVerify(final List<Purchase> purchases, final RequestListener<List<Purchase>> requestListener) {
protected void doVerify(@NonNull final List<Purchase> purchases, @NonNull final RequestListener<List<Purchase>> requestListener) {
final List<Purchase> verifiedPurchases = new ArrayList<>(purchases.size());
for (final Purchase purchase : purchases) {
@ -49,7 +53,7 @@ public class HabiticaPurchaseVerifier extends BasePurchaseVerifier {
validationRequest.transaction.signature = purchase.signature;
try {
PurchaseValidationResult purchaseValidationResult = HabiticaApplication.ApiHelper.validatePurchase(validationRequest);
PurchaseValidationResult purchaseValidationResult = apiHelper.validatePurchase(validationRequest);
if (purchaseValidationResult.ok) {
purchasedOrderList.add(purchase.orderId);

View file

@ -1,5 +1,6 @@
package com.habitrpg.android.habitica.modules;
import com.habitrpg.android.habitica.APIHelper;
import com.habitrpg.android.habitica.HabiticaApplication;
import com.habitrpg.android.habitica.HabiticaPurchaseVerifier;
import com.habitrpg.android.habitica.R;
@ -61,7 +62,7 @@ public class AppModule {
@Provides
@Singleton
public Billing providesBilling() {
public Billing providesBilling(APIHelper apiHelper) {
return new Billing(application, new Billing.DefaultConfiguration() {
@NonNull
@Override
@ -77,7 +78,7 @@ public class AppModule {
@Override
public PurchaseVerifier getPurchaseVerifier() {
return new HabiticaPurchaseVerifier(application);
return new HabiticaPurchaseVerifier(application, apiHelper);
}
});
}

View file

@ -61,27 +61,29 @@ public class TaskRecyclerViewFragment extends BaseFragment implements View.OnCli
// TODO needs a bit of cleanup
public void setInnerAdapter() {
int layoutOfType;
switch (this.classType) {
case Task.TYPE_HABIT:
layoutOfType = R.layout.habit_item_card;
this.recyclerAdapter = new HabitsRecyclerViewAdapter(Task.TYPE_HABIT, tagsHelper, layoutOfType, getContext(), userID);
break;
case Task.TYPE_DAILY:
layoutOfType = R.layout.daily_item_card;
int dailyResetOffset = 0;
if (user != null) {
dailyResetOffset = user.getPreferences().getDayStart();
}
this.recyclerAdapter = new DailiesRecyclerViewHolder(Task.TYPE_DAILY, tagsHelper, layoutOfType, getContext(), userID, dailyResetOffset);
break;
case Task.TYPE_TODO:
layoutOfType = R.layout.todo_item_card;
this.recyclerAdapter = new TodosRecyclerViewAdapter(Task.TYPE_TODO, tagsHelper, layoutOfType, getContext(), userID);
return;
case Task.TYPE_REWARD:
layoutOfType = R.layout.reward_item_card;
this.recyclerAdapter = new RewardsRecyclerViewAdapter(Task.TYPE_REWARD, tagsHelper, layoutOfType, getContext(), user, apiHelper);
break;
if (this.classType != null) {
switch (this.classType) {
case Task.TYPE_HABIT:
layoutOfType = R.layout.habit_item_card;
this.recyclerAdapter = new HabitsRecyclerViewAdapter(Task.TYPE_HABIT, tagsHelper, layoutOfType, getContext(), userID);
break;
case Task.TYPE_DAILY:
layoutOfType = R.layout.daily_item_card;
int dailyResetOffset = 0;
if (user != null) {
dailyResetOffset = user.getPreferences().getDayStart();
}
this.recyclerAdapter = new DailiesRecyclerViewHolder(Task.TYPE_DAILY, tagsHelper, layoutOfType, getContext(), userID, dailyResetOffset);
break;
case Task.TYPE_TODO:
layoutOfType = R.layout.todo_item_card;
this.recyclerAdapter = new TodosRecyclerViewAdapter(Task.TYPE_TODO, tagsHelper, layoutOfType, getContext(), userID);
return;
case Task.TYPE_REWARD:
layoutOfType = R.layout.reward_item_card;
this.recyclerAdapter = new RewardsRecyclerViewAdapter(Task.TYPE_REWARD, tagsHelper, layoutOfType, getContext(), user, apiHelper);
break;
}
}
}