diff --git a/core/api/core.klib.api b/core/api/core.klib.api index 129e273..b22b7de 100644 --- a/core/api/core.klib.api +++ b/core/api/core.klib.api @@ -125,6 +125,7 @@ final class com.revenuecat.purchases.kmp.models/SubscriptionOptions { // com.rev final val introOffer // com.revenuecat.purchases.kmp.models/SubscriptionOptions.introOffer|{}introOffer[0] final fun (): com.revenuecat.purchases.kmp.models/SubscriptionOption? // com.revenuecat.purchases.kmp.models/SubscriptionOptions.introOffer.|(){}[0] } +final class com.revenuecat.purchases.kmp.models/Transaction // com.revenuecat.purchases.kmp.models/Transaction|null[0] final class com.revenuecat.purchases.kmp/DangerousSettings { // com.revenuecat.purchases.kmp/DangerousSettings|null[0] constructor (kotlin/Boolean = ...) // com.revenuecat.purchases.kmp/DangerousSettings.|(kotlin.Boolean){}[0] final fun component1(): kotlin/Boolean // com.revenuecat.purchases.kmp/DangerousSettings.component1|component1(){}[0] @@ -586,12 +587,12 @@ final val com.revenuecat.purchases.kmp.models/presentedOfferingContext // com.re final fun (cocoapods.PurchasesHybridCommon/RCStoreProduct).(): cocoapods.PurchasesHybridCommon/RCPresentedOfferingContext? // com.revenuecat.purchases.kmp.models/presentedOfferingContext.|@cocoapods.PurchasesHybridCommon.RCStoreProduct(){}[0] final val com.revenuecat.purchases.kmp.models/price // com.revenuecat.purchases.kmp.models/price|@cocoapods.PurchasesHybridCommon.RCStoreProduct{}price[0] final fun (cocoapods.PurchasesHybridCommon/RCStoreProduct).(): com.revenuecat.purchases.kmp.models/Price // com.revenuecat.purchases.kmp.models/price.|@cocoapods.PurchasesHybridCommon.RCStoreProduct(){}[0] -final val com.revenuecat.purchases.kmp.models/productIdentifier // com.revenuecat.purchases.kmp.models/productIdentifier|@cocoapods.PurchasesHybridCommon.RCStoreTransaction{}productIdentifier[0] - final fun (cocoapods.PurchasesHybridCommon/RCStoreTransaction).(): kotlin/String // com.revenuecat.purchases.kmp.models/productIdentifier.|@cocoapods.PurchasesHybridCommon.RCStoreTransaction(){}[0] +final val com.revenuecat.purchases.kmp.models/productIdentifier // com.revenuecat.purchases.kmp.models/productIdentifier|@com.revenuecat.purchases.kmp.models.Transaction{}productIdentifier[0] + final fun (com.revenuecat.purchases.kmp.models/Transaction).(): kotlin/String // com.revenuecat.purchases.kmp.models/productIdentifier.|@com.revenuecat.purchases.kmp.models.Transaction(){}[0] final val com.revenuecat.purchases.kmp.models/productIds // com.revenuecat.purchases.kmp.models/productIds|@cocoapods.PurchasesHybridCommon.RCStoreTransaction{}productIds[0] final fun (cocoapods.PurchasesHybridCommon/RCStoreTransaction).(): kotlin.collections/List // com.revenuecat.purchases.kmp.models/productIds.|@cocoapods.PurchasesHybridCommon.RCStoreTransaction(){}[0] -final val com.revenuecat.purchases.kmp.models/purchaseDateMillis // com.revenuecat.purchases.kmp.models/purchaseDateMillis|@cocoapods.PurchasesHybridCommon.RCStoreTransaction{}purchaseDateMillis[0] - final fun (cocoapods.PurchasesHybridCommon/RCStoreTransaction).(): kotlin/Long // com.revenuecat.purchases.kmp.models/purchaseDateMillis.|@cocoapods.PurchasesHybridCommon.RCStoreTransaction(){}[0] +final val com.revenuecat.purchases.kmp.models/purchaseDateMillis // com.revenuecat.purchases.kmp.models/purchaseDateMillis|@com.revenuecat.purchases.kmp.models.Transaction{}purchaseDateMillis[0] + final fun (com.revenuecat.purchases.kmp.models/Transaction).(): kotlin/Long // com.revenuecat.purchases.kmp.models/purchaseDateMillis.|@com.revenuecat.purchases.kmp.models.Transaction(){}[0] final val com.revenuecat.purchases.kmp.models/purchaseTime // com.revenuecat.purchases.kmp.models/purchaseTime|@cocoapods.PurchasesHybridCommon.RCStoreTransaction{}purchaseTime[0] final fun (cocoapods.PurchasesHybridCommon/RCStoreTransaction).(): kotlin/Long // com.revenuecat.purchases.kmp.models/purchaseTime.|@cocoapods.PurchasesHybridCommon.RCStoreTransaction(){}[0] final val com.revenuecat.purchases.kmp.models/purchasingData // com.revenuecat.purchases.kmp.models/purchasingData|@cocoapods.PurchasesHybridCommon.RCStoreProduct{}purchasingData[0] @@ -604,8 +605,8 @@ final val com.revenuecat.purchases.kmp.models/title // com.revenuecat.purchases. final fun (cocoapods.PurchasesHybridCommon/RCStoreProduct).(): kotlin/String // com.revenuecat.purchases.kmp.models/title.|@cocoapods.PurchasesHybridCommon.RCStoreProduct(){}[0] final val com.revenuecat.purchases.kmp.models/transactionId // com.revenuecat.purchases.kmp.models/transactionId|@cocoapods.PurchasesHybridCommon.RCStoreTransaction{}transactionId[0] final fun (cocoapods.PurchasesHybridCommon/RCStoreTransaction).(): kotlin/String? // com.revenuecat.purchases.kmp.models/transactionId.|@cocoapods.PurchasesHybridCommon.RCStoreTransaction(){}[0] -final val com.revenuecat.purchases.kmp.models/transactionIdentifier // com.revenuecat.purchases.kmp.models/transactionIdentifier|@cocoapods.PurchasesHybridCommon.RCStoreTransaction{}transactionIdentifier[0] - final fun (cocoapods.PurchasesHybridCommon/RCStoreTransaction).(): kotlin/String // com.revenuecat.purchases.kmp.models/transactionIdentifier.|@cocoapods.PurchasesHybridCommon.RCStoreTransaction(){}[0] +final val com.revenuecat.purchases.kmp.models/transactionIdentifier // com.revenuecat.purchases.kmp.models/transactionIdentifier|@com.revenuecat.purchases.kmp.models.Transaction{}transactionIdentifier[0] + final fun (com.revenuecat.purchases.kmp.models/Transaction).(): kotlin/String // com.revenuecat.purchases.kmp.models/transactionIdentifier.|@com.revenuecat.purchases.kmp.models.Transaction(){}[0] final val com.revenuecat.purchases.kmp.models/type // com.revenuecat.purchases.kmp.models/type|@cocoapods.PurchasesHybridCommon.RCStoreProductDiscount{}type[0] final fun (cocoapods.PurchasesHybridCommon/RCStoreProductDiscount).(): com.revenuecat.purchases.kmp.models/DiscountType // com.revenuecat.purchases.kmp.models/type.|@cocoapods.PurchasesHybridCommon.RCStoreProductDiscount(){}[0] final val com.revenuecat.purchases.kmp.models/type // com.revenuecat.purchases.kmp.models/type|@cocoapods.PurchasesHybridCommon.RCStoreProduct{}type[0] @@ -673,7 +674,7 @@ final val com.revenuecat.purchases.kmp/metadata // com.revenuecat.purchases.kmp/ final val com.revenuecat.purchases.kmp/monthly // com.revenuecat.purchases.kmp/monthly|@cocoapods.PurchasesHybridCommon.RCOffering{}monthly[0] final fun (cocoapods.PurchasesHybridCommon/RCOffering).(): cocoapods.PurchasesHybridCommon/RCPackage? // com.revenuecat.purchases.kmp/monthly.|@cocoapods.PurchasesHybridCommon.RCOffering(){}[0] final val com.revenuecat.purchases.kmp/nonSubscriptionTransactions // com.revenuecat.purchases.kmp/nonSubscriptionTransactions|@cocoapods.PurchasesHybridCommon.RCCustomerInfo{}nonSubscriptionTransactions[0] - final fun (cocoapods.PurchasesHybridCommon/RCCustomerInfo).(): kotlin.collections/List // com.revenuecat.purchases.kmp/nonSubscriptionTransactions.|@cocoapods.PurchasesHybridCommon.RCCustomerInfo(){}[0] + final fun (cocoapods.PurchasesHybridCommon/RCCustomerInfo).(): kotlin.collections/List // com.revenuecat.purchases.kmp/nonSubscriptionTransactions.|@cocoapods.PurchasesHybridCommon.RCCustomerInfo(){}[0] final val com.revenuecat.purchases.kmp/offeringIdentifier // com.revenuecat.purchases.kmp/offeringIdentifier|@cocoapods.PurchasesHybridCommon.RCPresentedOfferingContext{}offeringIdentifier[0] final fun (cocoapods.PurchasesHybridCommon/RCPresentedOfferingContext).(): kotlin/String // com.revenuecat.purchases.kmp/offeringIdentifier.|@cocoapods.PurchasesHybridCommon.RCPresentedOfferingContext(){}[0] final val com.revenuecat.purchases.kmp/originalAppUserId // com.revenuecat.purchases.kmp/originalAppUserId|@cocoapods.PurchasesHybridCommon.RCCustomerInfo{}originalAppUserId[0] diff --git a/core/src/iosMain/kotlin/com/revenuecat/purchases/kmp/CustomerInfo.ios.kt b/core/src/iosMain/kotlin/com/revenuecat/purchases/kmp/CustomerInfo.ios.kt index 8f88304..84961c0 100644 --- a/core/src/iosMain/kotlin/com/revenuecat/purchases/kmp/CustomerInfo.ios.kt +++ b/core/src/iosMain/kotlin/com/revenuecat/purchases/kmp/CustomerInfo.ios.kt @@ -3,6 +3,8 @@ package com.revenuecat.purchases.kmp import cocoapods.PurchasesHybridCommon.RCCustomerInfo import com.revenuecat.purchases.kmp.ktx.toEpochMilliseconds import com.revenuecat.purchases.kmp.models.Transaction +import platform.Foundation.dictionaryWithValuesForKeys +import platform.darwin.NSObject public actual typealias CustomerInfo = RCCustomerInfo @@ -28,9 +30,14 @@ public actual val CustomerInfo.latestExpirationDateMillis: Long? get() = latestExpirationDate()?.toEpochMilliseconds() public actual val CustomerInfo.managementUrlString: String? get() = managementURL()?.absoluteString -@Suppress("UNCHECKED_CAST") public actual val CustomerInfo.nonSubscriptionTransactions: List - get() = nonSubscriptions() as List + get() = nonSubscriptions().map { + val map = (it as NSObject) + .dictionaryWithValuesForKeys( + listOf("transactionIdentifier", "productIdentifier", "purchaseDate") + ).mapKeys { (key, _) -> key as String } + Transaction(map) + } public actual val CustomerInfo.originalAppUserId: String get() = originalAppUserId() public actual val CustomerInfo.originalApplicationVersion: String? diff --git a/core/src/iosMain/kotlin/com/revenuecat/purchases/kmp/models/Transaction.ios.kt b/core/src/iosMain/kotlin/com/revenuecat/purchases/kmp/models/Transaction.ios.kt index 0a8ae83..ad0183f 100644 --- a/core/src/iosMain/kotlin/com/revenuecat/purchases/kmp/models/Transaction.ios.kt +++ b/core/src/iosMain/kotlin/com/revenuecat/purchases/kmp/models/Transaction.ios.kt @@ -1,13 +1,18 @@ package com.revenuecat.purchases.kmp.models -import cocoapods.PurchasesHybridCommon.RCStoreTransaction import com.revenuecat.purchases.kmp.ktx.toEpochMilliseconds +import platform.Foundation.NSDate -public actual typealias Transaction = RCStoreTransaction +// FIXME This should be a typealias of RCNonSubscriptionTransaction so we don't need to use a map. +public actual class Transaction internal constructor(map: Map) { + internal val transactionIdentifier: String by map + internal val productIdentifier: String by map + internal val purchaseDate: NSDate by map +} public actual val Transaction.transactionIdentifier: String - get() = transactionIdentifier() + get() = transactionIdentifier public actual val Transaction.productIdentifier: String - get() = productIdentifier() + get() = productIdentifier public actual val Transaction.purchaseDateMillis: Long - get() = purchaseDate().toEpochMilliseconds() + get() = purchaseDate.toEpochMilliseconds() diff --git a/datetime/api/datetime.klib.api b/datetime/api/datetime.klib.api index f615df2..7602789 100644 --- a/datetime/api/datetime.klib.api +++ b/datetime/api/datetime.klib.api @@ -24,8 +24,8 @@ final val com.revenuecat.purchases.kmp.datetime/originalPurchaseInstant // com.r final fun (cocoapods.PurchasesHybridCommon/RCCustomerInfo).(): kotlinx.datetime/Instant? // com.revenuecat.purchases.kmp.datetime/originalPurchaseInstant.|@cocoapods.PurchasesHybridCommon.RCCustomerInfo(){}[0] final val com.revenuecat.purchases.kmp.datetime/originalPurchaseInstant // com.revenuecat.purchases.kmp.datetime/originalPurchaseInstant|@cocoapods.PurchasesHybridCommon.RCEntitlementInfo{}originalPurchaseInstant[0] final fun (cocoapods.PurchasesHybridCommon/RCEntitlementInfo).(): kotlinx.datetime/Instant? // com.revenuecat.purchases.kmp.datetime/originalPurchaseInstant.|@cocoapods.PurchasesHybridCommon.RCEntitlementInfo(){}[0] -final val com.revenuecat.purchases.kmp.datetime/purchaseInstant // com.revenuecat.purchases.kmp.datetime/purchaseInstant|@cocoapods.PurchasesHybridCommon.RCStoreTransaction{}purchaseInstant[0] - final fun (cocoapods.PurchasesHybridCommon/RCStoreTransaction).(): kotlinx.datetime/Instant // com.revenuecat.purchases.kmp.datetime/purchaseInstant.|@cocoapods.PurchasesHybridCommon.RCStoreTransaction(){}[0] +final val com.revenuecat.purchases.kmp.datetime/purchaseInstant // com.revenuecat.purchases.kmp.datetime/purchaseInstant|@com.revenuecat.purchases.kmp.models.Transaction{}purchaseInstant[0] + final fun (com.revenuecat.purchases.kmp.models/Transaction).(): kotlinx.datetime/Instant // com.revenuecat.purchases.kmp.datetime/purchaseInstant.|@com.revenuecat.purchases.kmp.models.Transaction(){}[0] final val com.revenuecat.purchases.kmp.datetime/requestInstant // com.revenuecat.purchases.kmp.datetime/requestInstant|@cocoapods.PurchasesHybridCommon.RCCustomerInfo{}requestInstant[0] final fun (cocoapods.PurchasesHybridCommon/RCCustomerInfo).(): kotlinx.datetime/Instant // com.revenuecat.purchases.kmp.datetime/requestInstant.|@cocoapods.PurchasesHybridCommon.RCCustomerInfo(){}[0] final val com.revenuecat.purchases.kmp.datetime/unsubscribeDetectedAtInstant // com.revenuecat.purchases.kmp.datetime/unsubscribeDetectedAtInstant|@cocoapods.PurchasesHybridCommon.RCEntitlementInfo{}unsubscribeDetectedAtInstant[0]