-
-
Notifications
You must be signed in to change notification settings - Fork 1.6k
/
GetSkuDetailsResult.kt
45 lines (40 loc) · 1.65 KB
/
GetSkuDetailsResult.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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(
val skuDetailsList: List<SkuDetailsItem>,
resultMap: Map<String, Any> = mapOf("RESPONSE_CODE" to 0, "DEBUG_MESSAGE" to "")
) : IAPResult(resultMap) {
companion object {
fun parseFrom(skuDetailsResponse: SkuDetailsResponse?): GetSkuDetailsResult {
if (skuDetailsResponse == null) {
throw NullPointerException("SkuDetailsResponse is null")
}
if (skuDetailsResponse.failedResponse != null) {
return GetSkuDetailsResult(
emptyList(),
mapOf(
"RESPONSE_CODE" to skuDetailsResponse.failedResponse.statusCode,
"DEBUG_MESSAGE" to skuDetailsResponse.failedResponse.msg
)
)
}
val skuDetailsList =
skuDetailsResponse.details.filter { it.skuDetails.isNotBlank() }
.map { skuDetails ->
val skuInfo = skuDetails.skuInfo ?: SkuInfo()
SkuDetailsItem(
skuDetails.skuDetails,
skuInfo.skuItem.associate { it.token to it.docId }
)
}
return GetSkuDetailsResult(skuDetailsList)
}
}
data class SkuDetailsItem(
val jsonDetails: String,
val docIdMap: Map<String, DocId?>
)
}