package com.jeremybarbet.reactnativepurchasekit import com.android.billingclient.api.Purchase import com.facebook.react.bridge.Arguments import com.facebook.react.bridge.WritableMap data class PurchaseKitTransaction( val id: String, val originalId: String, val productId: String, val environment: String, val purchaseDate: Float, val originalPurchaseDate: Float, val expirationDate: Float?, val token: String, val quantity: Int, val price: PurchaseKitPrice, ) fun parseTransaction(transaction: Purchase, productId: String, price: PurchaseKitPrice): PurchaseKitTransaction { return PurchaseKitTransaction( transaction.orderId ?: "", transaction.orderId ?: "", productId, "android", transaction.purchaseTime.toFloat(), transaction.purchaseTime.toFloat(), null, transaction.purchaseToken, transaction.quantity, price, ) } fun encodeTransaction(transaction: PurchaseKitTransaction): WritableMap { val transactionMap = Arguments.createMap() transactionMap.putString("id", transaction.id) transactionMap.putString("originalId", transaction.originalId) transactionMap.putString("productId", transaction.productId) transactionMap.putString("environment", transaction.environment) transactionMap.putInt("purchaseDate", transaction.purchaseDate.toInt()) transactionMap.putInt("originalPurchaseDate", transaction.originalPurchaseDate.toInt()) transactionMap.putInt("expirationDate", 0) transactionMap.putInt("quantity", transaction.quantity) transactionMap.putString("token", transaction.token) val priceMap = Arguments.createMap() priceMap.putDouble("value", transaction.price.value) priceMap.putString("currency", transaction.price.currency) priceMap.putString("localized", transaction.price.localized) transactionMap.putMap("price", priceMap) return transactionMap }