Revert "[android] separate skudetails validation between subs type and in-app type"

This reverts commit 6ba2eefce2465f3028c3223161d34e89b4cccbc7.
This commit is contained in:
Dmitry Donskoy 2018-12-13 14:19:33 +03:00 committed by Vladimir Byko-Ianko
parent 30da8376ee
commit 09460d8630
6 changed files with 29 additions and 80 deletions

View file

@ -1,16 +0,0 @@
package com.mapswithme.maps.purchase;
import android.support.annotation.Nullable;
import com.android.billingclient.api.SkuDetails;
import java.util.List;
public class DefaultSkuDetailsValidationStrategy implements SkuDetailsValidationStrategy
{
@Override
public boolean isValid(@Nullable List<SkuDetails> skuDetails)
{
return skuDetails != null && !skuDetails.isEmpty();
}
}

View file

@ -29,19 +29,15 @@ class PlayStoreBillingManager implements BillingManager<PlayStoreBillingCallback
@NonNull
@BillingClient.SkuType
private final String mProductType;
@NonNull
private final SkuDetailsValidationStrategy mSkuDetailsValidationStrategy;
@SuppressWarnings({ "NullableProblems" })
@NonNull
private BillingConnection mConnection;
@NonNull
private final List<BillingRequest> mPendingRequests = new ArrayList<>();
PlayStoreBillingManager(@NonNull @BillingClient.SkuType String productType,
@NonNull SkuDetailsValidationStrategy strategy)
PlayStoreBillingManager(@NonNull @BillingClient.SkuType String productType)
{
mProductType = productType;
mSkuDetailsValidationStrategy = strategy;
}
@Override
@ -66,8 +62,7 @@ class PlayStoreBillingManager implements BillingManager<PlayStoreBillingCallback
public void queryProductDetails(@NonNull List<String> productIds)
{
executeBillingRequest(new QueryProductDetailsRequest(getClientOrThrow(), mProductType,
mCallback, productIds,
mSkuDetailsValidationStrategy));
mCallback, productIds));
}
@Override

View file

@ -21,8 +21,7 @@ public class PurchaseFactory
@NonNull Context context)
{
BillingManager<PlayStoreBillingCallback> billingManager
= new PlayStoreBillingManager(BillingClient.SkuType.SUBS,
new SubscriptionSkuDetailsValidationStrategy());
= new PlayStoreBillingManager(BillingClient.SkuType.SUBS);
PurchaseValidationObservable observable = PurchaseValidationObservable.from(context);
PurchaseValidator<ValidationCallback> validator = new DefaultPurchaseValidator(observable);
String yearlyProduct = PrivateVariables.adsRemovalYearlyProductId();
@ -38,8 +37,7 @@ public class PurchaseFactory
@NonNull Context context, @Nullable String productId, @Nullable String serverId)
{
BillingManager<PlayStoreBillingCallback> billingManager
= new PlayStoreBillingManager(BillingClient.SkuType.INAPP,
new DefaultSkuDetailsValidationStrategy());
= new PlayStoreBillingManager(BillingClient.SkuType.INAPP);
PurchaseValidationObservable observable = PurchaseValidationObservable.from(context);
PurchaseValidator<ValidationCallback> validator = new DefaultPurchaseValidator(observable);
return new BookmarkPurchaseController(validator, billingManager, productId, serverId);
@ -57,8 +55,7 @@ public class PurchaseFactory
@NonNull Context context)
{
BillingManager<PlayStoreBillingCallback> billingManager
= new PlayStoreBillingManager(BillingClient.SkuType.INAPP,
new DefaultSkuDetailsValidationStrategy());
= new PlayStoreBillingManager(BillingClient.SkuType.INAPP);
PurchaseValidationObservable observable = PurchaseValidationObservable.from(context);
PurchaseValidator<ValidationCallback> validator = new DefaultPurchaseValidator(observable);
return new FailedBookmarkPurchaseController(validator, billingManager);

View file

@ -6,6 +6,7 @@ import android.support.annotation.Nullable;
import com.android.billingclient.api.BillingClient;
import com.android.billingclient.api.SkuDetails;
import com.android.billingclient.api.SkuDetailsParams;
import com.mapswithme.util.CrashlyticsUtils;
import java.util.Collections;
import java.util.List;
@ -56,8 +57,31 @@ class QueryProductDetailsRequest extends PlayStoreBillingRequest<PlayStoreBillin
return;
}
if (hasIncorrectSkuDetails(skuDetails))
{
LOGGER.w(TAG, "Purchase details incorrect");
if (getCallback() != null)
getCallback().onPurchaseDetailsFailure();
return;
}
LOGGER.i(TAG, "Purchase details obtained: " + skuDetails);
if (getCallback() != null)
getCallback().onPurchaseDetailsLoaded(skuDetails);
}
private static boolean hasIncorrectSkuDetails(@NonNull List<SkuDetails> skuDetails)
{
for (SkuDetails each : skuDetails)
{
if (AdsRemovalPurchaseDialog.Period.getInstance(each.getSubscriptionPeriod()) == null)
{
String msg = "Unsupported subscription period: '" + each.getSubscriptionPeriod() + "'";
CrashlyticsUtils.logException(new IllegalStateException(msg));
LOGGER.e(TAG, msg);
return true;
}
}
return false;
}
}

View file

@ -1,12 +0,0 @@
package com.mapswithme.maps.purchase;
import android.support.annotation.Nullable;
import com.android.billingclient.api.SkuDetails;
import java.util.List;
public interface SkuDetailsValidationStrategy
{
boolean isValid(@Nullable List<SkuDetails> skuDetails);
}

View file

@ -1,39 +0,0 @@
package com.mapswithme.maps.purchase;
import android.support.annotation.Nullable;
import com.android.billingclient.api.SkuDetails;
import com.mapswithme.util.CrashlyticsUtils;
import java.util.List;
import static com.mapswithme.maps.purchase.PlayStoreBillingManager.LOGGER;
import static com.mapswithme.maps.purchase.PlayStoreBillingManager.TAG;
public class SubscriptionSkuDetailsValidationStrategy extends DefaultSkuDetailsValidationStrategy
{
@Override
public boolean isValid(@Nullable List<SkuDetails> skuDetails)
{
boolean hasDetails = super.isValid(skuDetails);
return hasDetails && !hasIncorrectSkuDetails(skuDetails) ;
}
private static boolean hasIncorrectSkuDetails(@Nullable List<SkuDetails> skuDetails)
{
if (skuDetails == null)
return true;
for (SkuDetails each : skuDetails)
{
if (AdsRemovalPurchaseDialog.Period.getInstance(each.getSubscriptionPeriod()) == null)
{
String msg = "Unsupported subscription period: '" + each.getSubscriptionPeriod() + "'";
CrashlyticsUtils.logException(new IllegalStateException(msg));
LOGGER.e(TAG, msg);
return true;
}
}
return false;
}
}