diff --git a/android/src/main/java/com/chargebee/android/models/PurchaseResult.kt b/android/src/main/java/com/chargebee/android/models/PurchaseResult.kt index 7df275e..585eeaa 100644 --- a/android/src/main/java/com/chargebee/android/models/PurchaseResult.kt +++ b/android/src/main/java/com/chargebee/android/models/PurchaseResult.kt @@ -4,8 +4,8 @@ import com.chargebee.android.network.ReceiptDetail import java.io.Serializable data class PurchaseResult ( - val subscriptionId: String?, - val planId: String?, + val subscriptionId: String, + val planId: String, val status: Boolean ) : Serializable { constructor(receiptDetail: ReceiptDetail, status: Boolean) : this(receiptDetail.subscription_id, receiptDetail.plan_id, status) diff --git a/ios/CBPurchaseResult.swift b/ios/CBPurchaseResult.swift index f4bce10..d15767f 100644 --- a/ios/CBPurchaseResult.swift +++ b/ios/CBPurchaseResult.swift @@ -7,10 +7,11 @@ import Foundation + struct CBPurchaseResult: Codable { - let subscriptionId: String? - let planId: String? + let subscriptionId: String + let planId: String let status: Bool enum CodingKeys: String, CodingKey { @@ -21,10 +22,13 @@ struct CBPurchaseResult: Codable { } extension CBPurchaseResult { - init(fromTuple: (status:Bool, subscriptionId:String?, planId:String?)) { - self.subscriptionId = fromTuple.subscriptionId + init(fromTuple: (status: Bool, subscriptionId: String?, planId: String?)) throws { + guard let subscriptionId = fromTuple.subscriptionId, let planId = fromTuple.planId else { + throw CBReactNativeError.systemError + } + self.subscriptionId = subscriptionId self.status = fromTuple.status - self.planId = fromTuple.planId + self.planId = planId } } diff --git a/ios/CBReactNativeError.swift b/ios/CBReactNativeError.swift new file mode 100644 index 0000000..24cabc2 --- /dev/null +++ b/ios/CBReactNativeError.swift @@ -0,0 +1,14 @@ +// +// CBError+Extensions.swift +// ChargebeeReactNative +// +// Created by cb-haripriyan on 20/02/23. +// + +import Foundation +import Chargebee + +enum CBReactNativeError: String, Error { + case systemError = "System error" +} + diff --git a/ios/ChargebeeHelper.swift b/ios/ChargebeeHelper.swift index 95b872e..5cf5ac4 100644 --- a/ios/ChargebeeHelper.swift +++ b/ios/ChargebeeHelper.swift @@ -46,8 +46,12 @@ public class ChargebeeHelper: NSObject { CBPurchase.shared.purchaseProduct(product: product, customerId: customerId) { result in switch result { case .success(let result): - let purchasedProduct = CBPurchaseResult(fromTuple: result) - resolver(purchasedProduct.asDictionary) + do { + let purchasedProduct = try CBPurchaseResult(fromTuple: result) + resolver(purchasedProduct.asDictionary) + } catch (let error as NSError) { + rejecter("\(error.code)", error.localizedDescription, error) + } case .failure(let error as NSError): rejecter("\(error.code)", error.localizedDescription, error) }