Skip to content

Commit

Permalink
Billing: Fix handling of SKU without info (#2321)
Browse files Browse the repository at this point in the history
  • Loading branch information
DaVinci9196 committed Apr 29, 2024
1 parent 43c85da commit 567f336
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 3 deletions.
@@ -1,7 +1,9 @@
package org.microg.vending.billing.core

import android.util.Log
import org.microg.vending.billing.proto.DocId
import org.microg.vending.billing.proto.SkuDetailsResponse
import org.microg.vending.billing.proto.SkuInfo


class GetSkuDetailsResult private constructor(
Expand All @@ -23,11 +25,12 @@ class GetSkuDetailsResult private constructor(
)
}
val skuDetailsList =
skuDetailsResponse.details.filter { it.skuDetails.isNotBlank() && it.skuInfo != null}
skuDetailsResponse.details.filter { it.skuDetails.isNotBlank() }
.map { skuDetails ->
val skuInfo = skuDetails.skuInfo ?: SkuInfo()
SkuDetailsItem(
skuDetails.skuDetails,
skuDetails.skuInfo!!.skuItem.associate { it.token to it.docId }
skuInfo.skuItem.associate { it.token to it.docId }
)
}
return GetSkuDetailsResult(skuDetailsList)
Expand Down
Expand Up @@ -2,6 +2,7 @@ package org.microg.vending.billing.core

import android.content.Context
import android.util.Base64
import android.util.Log
import com.android.vending.Timestamp
import org.json.JSONObject
import org.microg.gms.utils.toBase64
Expand Down Expand Up @@ -92,8 +93,13 @@ class IAPCore(
val requestBody = skuDetailsRequest.encode()
val cacheEntry = skuDetailsCache.get(requestBody)
if (cacheEntry != null) {
return GetSkuDetailsResult.parseFrom(ResponseWrapper.ADAPTER.decode(cacheEntry).payload?.skuDetailsResponse)
val getSkuDetailsResult = GetSkuDetailsResult.parseFrom(ResponseWrapper.ADAPTER.decode(cacheEntry).payload?.skuDetailsResponse)
if (getSkuDetailsResult.skuDetailsList != null && getSkuDetailsResult.skuDetailsList.isNotEmpty()) {
Log.d("IAPCore", "getSkuDetails from cache ")
return getSkuDetailsResult
}
}
Log.d("IAPCore", "getSkuDetails: ")
val response = HttpClient(context).post(
GooglePlayApi.URL_SKU_DETAILS,
headers = HeaderProvider.getDefaultHeaders(authData, deviceInfo),
Expand Down
Expand Up @@ -14,10 +14,12 @@ enum class UIType(val value: Int) {
BILLING_PROFILE_OPTION_ADD_PLAY_CREDIT(816),
BILLING_PROFILE_OPTION_CREATE_INSTRUMENT(817),
BILLING_PROFILE_EXISTING_INSTRUMENT(818),
BILLING_PROFILE_BUTTON_UPDATE_INSTRUMENT(819),
PURCHASE_SUCCESS_SCREEN_WITH_AUTH_CHOICES(1250),
PURCHASE_CHANGE_SUBSCRIPTION_CONTINUE_BUTTON(1281),
PURCHASE_PAYMENT_DECLINED_CONTINUE_BUTTON(1301),
BILLING_PROFILE_MORE_OPTION_BUTTON_SHOW_HIDEABLE_INSTRUMENT(12034),
PURCHASE_CONSENT_COLLECTION_REFUND_RIGHTS_CONTINUE_BUTTON(11872),
BILLING_PROFILE_SCREEN_ABANDON(12035);

companion object {
Expand Down
Expand Up @@ -180,6 +180,7 @@ class InAppBillingViewModel : ViewModel() {
UIType.PURCHASE_PAYMENT_DECLINED_CONTINUE_BUTTON,
UIType.PURCHASE_CART_PAYMENT_OPTIONS_LINK,
UIType.PURCHASE_CART_CONTINUE_BUTTON,
UIType.PURCHASE_CONSENT_COLLECTION_REFUND_RIGHTS_CONTINUE_BUTTON,
UIType.BILLING_PROFILE_SCREEN_ABANDON -> {
if (action.screenId?.isNotBlank() == true) {
if (showScreen(action.screenId!!)) {
Expand All @@ -193,6 +194,7 @@ class InAppBillingViewModel : ViewModel() {

UIType.BILLING_PROFILE_OPTION_CREATE_INSTRUMENT,
UIType.BILLING_PROFILE_OPTION_ADD_PLAY_CREDIT,
UIType.BILLING_PROFILE_BUTTON_UPDATE_INSTRUMENT,
UIType.BILLING_PROFILE_OPTION_REDEEM_CODE -> {
viewModelScope.launch(Dispatchers.IO) {
showPaymentMethodPage("action")
Expand Down

0 comments on commit 567f336

Please sign in to comment.