package co.smartreceipts.android.purchases.wallet;
import android.content.Context;
import android.content.SharedPreferences;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.VisibleForTesting;
import org.json.JSONException;
import java.util.Set;
import javax.inject.Inject;
import co.smartreceipts.android.purchases.model.InAppPurchase;
import co.smartreceipts.android.purchases.model.ManagedProduct;
import co.smartreceipts.android.purchases.model.ManagedProductFactory;
public final class PlusPurchaseWallet extends DefaultPurchaseWallet {
@Inject
public PlusPurchaseWallet(@NonNull Context context) {
super(context);
}
@VisibleForTesting
protected PlusPurchaseWallet(@NonNull SharedPreferences preferences) {
super(preferences);
}
@NonNull
@Override
public Set<ManagedProduct> getActivePurchases() {
final Set<ManagedProduct> activePurchases = super.getActivePurchases();
activePurchases.add(getManagedProduct(InAppPurchase.SmartReceiptsPlus));
return activePurchases;
}
@Override
public synchronized boolean hasActivePurchase(@NonNull InAppPurchase inAppPurchase) {
if (inAppPurchase == InAppPurchase.SmartReceiptsPlus) {
return true;
} else {
return super.hasActivePurchase(inAppPurchase);
}
}
@Override
@Nullable
public synchronized ManagedProduct getManagedProduct(@NonNull InAppPurchase inAppPurchase) {
if (inAppPurchase == InAppPurchase.SmartReceiptsPlus) {
try {
return new ManagedProductFactory(inAppPurchase, "", "").get();
} catch (JSONException e) {
throw new IllegalArgumentException("Failed to parse the empty string with JSON Exception", e);
}
} else {
return super.getManagedProduct(inAppPurchase);
}
}
}