正在查看: Perplexity v2.48.1 应用的 OfflineCustomerInfoCalculator.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
正在查看: Perplexity v2.48.1 应用的 OfflineCustomerInfoCalculator.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
package com.revenuecat.purchases.common.offlineentitlements;
import bl.b;
import bl.c;
import bl.f;
import bl.i;
import com.google.gson.internal.bind.util.ISO8601Utils;
import com.revenuecat.purchases.CustomerInfo;
import com.revenuecat.purchases.ProductType;
import com.revenuecat.purchases.PurchasesError;
import com.revenuecat.purchases.PurchasesErrorCode;
import com.revenuecat.purchases.Store;
import com.revenuecat.purchases.VerificationResult;
import com.revenuecat.purchases.common.AppConfig;
import com.revenuecat.purchases.common.Constants;
import com.revenuecat.purchases.common.CustomerInfoFactory;
import com.revenuecat.purchases.common.DateProvider;
import com.revenuecat.purchases.common.DefaultDateProvider;
import com.revenuecat.purchases.common.LogUtilsKt;
import com.revenuecat.purchases.common.diagnostics.DiagnosticsTracker;
import com.revenuecat.purchases.common.responses.CustomerInfoResponseJsonKeys;
import com.revenuecat.purchases.common.responses.EntitlementsResponseJsonKeys;
import com.revenuecat.purchases.common.responses.ProductResponseJsonKeys;
import com.revenuecat.purchases.utils.Iso8601Utils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import kotlin.Metadata;
import kotlin.Pair;
import kotlin.Unit;
import kotlin.jvm.functions.Function1;
import kotlin.jvm.internal.DefaultConstructorMarker;
import kotlin.jvm.internal.Intrinsics;
import kotlin.jvm.internal.SourceDebugExtension;
import org.json.JSONObject;
@Metadata(d1 = {"\u0000X\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u000e\n\u0000\n\u0002\u0010 \n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0018\u0002\n\u0002\b\u0002\b\u0000\u0018\u00002\u00020\u0001B)\u0012\u0006\u0010\u0002\u001a\u00020\u0003\u0012\u0006\u0010\u0004\u001a\u00020\u0005\u0012\b\u0010\u0006\u001a\u0004\u0018\u00010\u0007\u0012\b\b\u0002\u0010\b\u001a\u00020\t¢\u0006\u0002\u0010\nJ\u001e\u0010\u000b\u001a\u00020\f2\u0006\u0010\r\u001a\u00020\u000e2\f\u0010\u000f\u001a\b\u0012\u0004\u0012\u00020\u00110\u0010H\u0002J\u0018\u0010\u0012\u001a\u0004\u0018\u00010\u000e2\f\u0010\u000f\u001a\b\u0012\u0004\u0012\u00020\u00110\u0010H\u0002J6\u0010\u0013\u001a\u00020\u00142\u0006\u0010\r\u001a\u00020\u000e2\u0012\u0010\u0015\u001a\u000e\u0012\u0004\u0012\u00020\f\u0012\u0004\u0012\u00020\u00140\u00162\u0012\u0010\u0017\u001a\u000e\u0012\u0004\u0012\u00020\u0018\u0012\u0004\u0012\u00020\u00140\u0016J\u0010\u0010\u0019\u001a\n \u001a*\u0004\u0018\u00010\u00010\u0001H\u0002J\u0016\u0010\u001b\u001a\u00020\u001c2\f\u0010\u000f\u001a\b\u0012\u0004\u0012\u00020\u00110\u0010H\u0002J\u0016\u0010\u001d\u001a\u00020\u001c2\f\u0010\u000f\u001a\b\u0012\u0004\u0012\u00020\u00110\u0010H\u0002R\u000e\u0010\u0004\u001a\u00020\u0005X\u0082\u0004¢\u0006\u0002\n\u0000R\u000e\u0010\b\u001a\u00020\tX\u0082\u0004¢\u0006\u0002\n\u0000R\u0010\u0010\u0006\u001a\u0004\u0018\u00010\u0007X\u0082\u0004¢\u0006\u0002\n\u0000R\u000e\u0010\u0002\u001a\u00020\u0003X\u0082\u0004¢\u0006\u0002\n\u0000¨\u0006\u001e"}, d2 = {"Lcom/revenuecat/purchases/common/offlineentitlements/OfflineCustomerInfoCalculator;", "", "purchasedProductsFetcher", "Lcom/revenuecat/purchases/common/offlineentitlements/PurchasedProductsFetcher;", "appConfig", "Lcom/revenuecat/purchases/common/AppConfig;", "diagnosticsTracker", "Lcom/revenuecat/purchases/common/diagnostics/DiagnosticsTracker;", "dateProvider", "Lcom/revenuecat/purchases/common/DateProvider;", "(Lcom/revenuecat/purchases/common/offlineentitlements/PurchasedProductsFetcher;Lcom/revenuecat/purchases/common/AppConfig;Lcom/revenuecat/purchases/common/diagnostics/DiagnosticsTracker;Lcom/revenuecat/purchases/common/DateProvider;)V", "buildCustomerInfoUsingListOfPurchases", "Lcom/revenuecat/purchases/CustomerInfo;", "appUserID", "", "purchasedProducts", "", "Lcom/revenuecat/purchases/common/offlineentitlements/PurchasedProduct;", "calculateOriginalPurchaseDate", "computeOfflineCustomerInfo", "", "onSuccess", "Lkotlin/Function1;", "onError", "Lcom/revenuecat/purchases/PurchasesError;", "determineManagementURL", "kotlin.jvm.PlatformType", "generateEntitlementsResponse", "Lorg/json/JSONObject;", "generateSubscriptions", "purchases_defaultsRelease"}, k = 1, mv = {1, 8, 0}, xi = 48)
@SourceDebugExtension
public final class OfflineCustomerInfoCalculator {
private final AppConfig appConfig;
private final DateProvider dateProvider;
private final DiagnosticsTracker diagnosticsTracker;
private final PurchasedProductsFetcher purchasedProductsFetcher;
public OfflineCustomerInfoCalculator(PurchasedProductsFetcher purchasedProductsFetcher, AppConfig appConfig, DiagnosticsTracker diagnosticsTracker, DateProvider dateProvider) {
Intrinsics.h(purchasedProductsFetcher, "purchasedProductsFetcher");
Intrinsics.h(appConfig, "appConfig");
Intrinsics.h(dateProvider, "dateProvider");
this.purchasedProductsFetcher = purchasedProductsFetcher;
this.appConfig = appConfig;
this.diagnosticsTracker = diagnosticsTracker;
this.dateProvider = dateProvider;
}
public final CustomerInfo buildCustomerInfoUsingListOfPurchases(String appUserID, List<PurchasedProduct> purchasedProducts) {
JSONObject jSONObject = new JSONObject();
Date now = this.dateProvider.getNow();
String format = Iso8601Utils.format(now);
jSONObject.put(CustomerInfoResponseJsonKeys.REQUEST_DATE, format);
jSONObject.put(CustomerInfoResponseJsonKeys.REQUEST_DATE_MS, now.getTime());
JSONObject jSONObject2 = new JSONObject();
jSONObject2.put(CustomerInfoResponseJsonKeys.ORIGINAL_APP_USER_ID, appUserID);
jSONObject2.put(CustomerInfoResponseJsonKeys.ORIGINAL_APPLICATION_VERSION, "1.0");
jSONObject2.put(CustomerInfoResponseJsonKeys.ENTITLEMENTS, generateEntitlementsResponse(purchasedProducts));
jSONObject2.put(CustomerInfoResponseJsonKeys.FIRST_SEEN, format);
jSONObject2.put("original_purchase_date", calculateOriginalPurchaseDate(purchasedProducts));
jSONObject2.put(CustomerInfoResponseJsonKeys.NON_SUBSCRIPTIONS, new JSONObject());
jSONObject2.put(CustomerInfoResponseJsonKeys.SUBSCRIPTIONS, generateSubscriptions(purchasedProducts));
jSONObject2.put(CustomerInfoResponseJsonKeys.MANAGEMENT_URL, determineManagementURL());
Unit unit = Unit.a;
jSONObject.put(CustomerInfoResponseJsonKeys.SUBSCRIBER, jSONObject2);
return CustomerInfoFactory.INSTANCE.buildCustomerInfo(jSONObject, now, VerificationResult.VERIFIED_ON_DEVICE);
}
private final String calculateOriginalPurchaseDate(List<PurchasedProduct> purchasedProducts) {
Long valueOf;
Iterator<T> it = purchasedProducts.iterator();
if (it.hasNext()) {
valueOf = Long.valueOf(((PurchasedProduct) it.next()).getStoreTransaction().getPurchaseTime());
while (it.hasNext()) {
Long valueOf2 = Long.valueOf(((PurchasedProduct) it.next()).getStoreTransaction().getPurchaseTime());
if (valueOf.compareTo(valueOf2) > 0) {
valueOf = valueOf2;
}
}
} else {
valueOf = null;
}
if (valueOf != null) {
return ISO8601Utils.format(new Date(valueOf.longValue()));
}
return null;
}
private final Object determineManagementURL() {
return this.appConfig.getStore() == Store.PLAY_STORE ? Constants.GOOGLE_PLAY_MANAGEMENT_URL : JSONObject.NULL;
}
private final JSONObject generateEntitlementsResponse(List<PurchasedProduct> purchasedProducts) {
ArrayList arrayList = new ArrayList();
for (PurchasedProduct purchasedProduct : purchasedProducts) {
List<String> entitlements = purchasedProduct.getEntitlements();
ArrayList arrayList2 = new ArrayList(b.a0(entitlements, 10));
Iterator<T> it = entitlements.iterator();
while (it.hasNext()) {
arrayList2.add(new Pair((String) it.next(), purchasedProduct));
}
c.n0(arrayList, arrayList2);
}
LinkedHashMap linkedHashMap = new LinkedHashMap();
Iterator it2 = arrayList.iterator();
while (it2.hasNext()) {
Pair pair = (Pair) it2.next();
String str = (String) pair.w;
Object obj = linkedHashMap.get(str);
if (obj == null) {
obj = new ArrayList();
linkedHashMap.put(str, obj);
}
((List) obj).add((PurchasedProduct) pair.x);
}
LinkedHashMap linkedHashMap2 = new LinkedHashMap(i.b0(linkedHashMap.size()));
Iterator it3 = linkedHashMap.entrySet().iterator();
while (true) {
Object obj2 = null;
if (!it3.hasNext()) {
break;
}
Map.Entry entry = (Map.Entry) it3.next();
Object key = entry.getKey();
List list = (List) entry.getValue();
Iterator it4 = list.iterator();
if (it4.hasNext()) {
obj2 = it4.next();
if (it4.hasNext()) {
Date expiresDate = ((PurchasedProduct) obj2).getExpiresDate();
long time = expiresDate != null ? expiresDate.getTime() : Long.MAX_VALUE;
do {
Object next = it4.next();
Date expiresDate2 = ((PurchasedProduct) next).getExpiresDate();
long time2 = expiresDate2 != null ? expiresDate2.getTime() : Long.MAX_VALUE;
if (time < time2) {
obj2 = next;
time = time2;
}
} while (it4.hasNext());
}
}
PurchasedProduct purchasedProduct2 = (PurchasedProduct) obj2;
if (purchasedProduct2 == null) {
purchasedProduct2 = (PurchasedProduct) f.F0(list);
}
linkedHashMap2.put(key, purchasedProduct2);
}
JSONObject jSONObject = new JSONObject();
for (Map.Entry entry2 : linkedHashMap2.entrySet()) {
String str2 = (String) entry2.getKey();
PurchasedProduct purchasedProduct3 = (PurchasedProduct) entry2.getValue();
JSONObject jSONObject2 = new JSONObject();
Date expiresDate3 = purchasedProduct3.getExpiresDate();
jSONObject2.put("expires_date", expiresDate3 != null ? Iso8601Utils.format(expiresDate3) : null);
jSONObject2.put(EntitlementsResponseJsonKeys.PRODUCT_IDENTIFIER, purchasedProduct3.getProductIdentifier());
jSONObject2.put("purchase_date", Iso8601Utils.format(new Date(purchasedProduct3.getStoreTransaction().getPurchaseTime())));
String basePlanId = purchasedProduct3.getBasePlanId();
if (basePlanId != null) {
jSONObject2.put("product_plan_identifier", basePlanId);
}
jSONObject.put(str2, jSONObject2);
}
return jSONObject;
}
private final JSONObject generateSubscriptions(List<PurchasedProduct> purchasedProducts) {
String format;
JSONObject jSONObject = new JSONObject();
for (PurchasedProduct purchasedProduct : purchasedProducts) {
String productIdentifier = purchasedProduct.getProductIdentifier();
JSONObject jSONObject2 = new JSONObject();
Object obj = JSONObject.NULL;
jSONObject2.put(ProductResponseJsonKeys.BILLING_ISSUES_DETECTED_AT, obj);
jSONObject2.put(ProductResponseJsonKeys.IS_SANDBOX, false);
Date date = new Date(purchasedProduct.getStoreTransaction().getPurchaseTime());
jSONObject2.put("original_purchase_date", Iso8601Utils.format(date));
jSONObject2.put("purchase_date", Iso8601Utils.format(date));
String name = this.appConfig.getStore().name();
Locale locale = Locale.ROOT;
String lowerCase = name.toLowerCase(locale);
Intrinsics.g(lowerCase, "this as java.lang.String).toLowerCase(Locale.ROOT)");
jSONObject2.put("store", lowerCase);
jSONObject2.put(ProductResponseJsonKeys.UNSUBSCRIBE_DETECTED_AT, obj);
jSONObject2.put("product_plan_identifier", purchasedProduct.getBasePlanId());
Date expiresDate = purchasedProduct.getExpiresDate();
if (expiresDate != null && (format = Iso8601Utils.format(expiresDate)) != null) {
obj = format;
}
jSONObject2.put("expires_date", obj);
String lowerCase2 = "NORMAL".toLowerCase(locale);
Intrinsics.g(lowerCase2, "this as java.lang.String).toLowerCase(Locale.ROOT)");
jSONObject2.put(ProductResponseJsonKeys.PERIOD_TYPE, lowerCase2);
Unit unit = Unit.a;
jSONObject.put(productIdentifier, jSONObject2);
}
return jSONObject;
}
public final void computeOfflineCustomerInfo(final String appUserID, final Function1<? super CustomerInfo, Unit> onSuccess, final Function1<? super PurchasesError, Unit> onError) {
Intrinsics.h(appUserID, "appUserID");
Intrinsics.h(onSuccess, "onSuccess");
Intrinsics.h(onError, "onError");
this.purchasedProductsFetcher.queryActiveProducts(appUserID, new Function1<List<? extends PurchasedProduct>, Unit>() {
{
super(1);
}
public Object invoke(Object obj) {
invoke((List<PurchasedProduct>) obj);
return Unit.a;
}
public final void invoke(List<PurchasedProduct> list) {
CustomerInfo buildCustomerInfoUsingListOfPurchases;
DiagnosticsTracker diagnosticsTracker;
Intrinsics.h(list, "purchasedProducts");
if (!list.isEmpty()) {
Iterator<T> it = list.iterator();
while (it.hasNext()) {
if (((PurchasedProduct) it.next()).getStoreTransaction().getType() == ProductType.INAPP) {
PurchasesError purchasesError = new PurchasesError(PurchasesErrorCode.UnsupportedError, "Offline entitlements are not supported for one time purchases. Found one time purchases. See for more info: https://rev.cat/offline-entitlements");
LogUtilsKt.errorLog$default(String.format("Error computing offline CustomerInfo. Will return original error. Creation error: %s", Arrays.copyOf(new Object[]{purchasesError}, 1)), null, 2, null);
diagnosticsTracker = OfflineCustomerInfoCalculator.this.diagnosticsTracker;
if (diagnosticsTracker != null) {
diagnosticsTracker.trackErrorEnteringOfflineEntitlementsMode(purchasesError);
}
onError.invoke(purchasesError);
return;
}
}
}
buildCustomerInfoUsingListOfPurchases = OfflineCustomerInfoCalculator.this.buildCustomerInfoUsingListOfPurchases(appUserID, list);
onSuccess.invoke(buildCustomerInfoUsingListOfPurchases);
}
}, new Function1<PurchasesError, Unit>() {
{
super(1);
}
public Object invoke(Object obj) {
invoke((PurchasesError) obj);
return Unit.a;
}
public final void invoke(PurchasesError purchasesError) {
DiagnosticsTracker diagnosticsTracker;
Intrinsics.h(purchasesError, "error");
LogUtilsKt.errorLog$default(String.format("Error computing offline CustomerInfo. Will return original error. Creation error: %s", Arrays.copyOf(new Object[]{purchasesError}, 1)), null, 2, null);
diagnosticsTracker = OfflineCustomerInfoCalculator.this.diagnosticsTracker;
if (diagnosticsTracker != null) {
diagnosticsTracker.trackErrorEnteringOfflineEntitlementsMode(purchasesError);
}
onError.invoke(purchasesError);
}
});
}
public OfflineCustomerInfoCalculator(PurchasedProductsFetcher purchasedProductsFetcher, AppConfig appConfig, DiagnosticsTracker diagnosticsTracker, DateProvider dateProvider, int i, DefaultConstructorMarker defaultConstructorMarker) {
this(purchasedProductsFetcher, appConfig, diagnosticsTracker, (i & 8) != 0 ? new DefaultDateProvider() : dateProvider);
}
}