forked from organicmaps/organicmaps
Revert "[android] separate skudetails validation between subs type and in-app type"
This reverts commit 6ba2eefce2465f3028c3223161d34e89b4cccbc7.
This commit is contained in:
parent
30da8376ee
commit
09460d8630
6 changed files with 29 additions and 80 deletions
|
@ -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();
|
||||
}
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue