11package io.snabble.sdk.checkout
22
3- import io.snabble.sdk.coupons.Coupon
43import io.snabble.sdk.PaymentMethod
54import io.snabble.sdk.Product
5+ import io.snabble.sdk.coupons.Coupon
6+ import io.snabble.sdk.events.Events
67import io.snabble.sdk.utils.Dispatch
78import io.snabble.sdk.utils.GsonHolder
89import io.snabble.sdk.utils.Logger
910import java.io.File
10- import java.lang.Exception
1111
12- data class PersistentState (
12+ data class PersistentState (
1313 @Transient
1414 var file : File ,
15+ var cartId : String? = null ,
1516 var checkoutProcess : CheckoutProcessResponse ? = null ,
1617 var selectedPaymentMethod : PaymentMethod ? = null ,
1718 var priceToPay : Int = 0 ,
@@ -22,6 +23,7 @@ data class PersistentState (
2223 var fulfillmentState : List <Fulfillment >? = null ,
2324 var signedCheckoutInfo : SignedCheckoutInfo ? = null
2425) {
26+
2527 fun save () {
2628 val json = GsonHolder .get().toJson(this )
2729
@@ -35,16 +37,20 @@ data class PersistentState (
3537 }
3638
3739 companion object {
38- fun restore (file : File ): PersistentState {
39- return try {
40- val text = file.readText()
41- val persistentState = GsonHolder .get().fromJson(text, PersistentState ::class .java)
40+
41+ fun restore (file : File , cartId : String , projectId : String ): PersistentState = try {
42+ val persistentState = GsonHolder .get()
43+ .fromJson(file.readText(), PersistentState ::class .java)
44+ if (persistentState.cartId == cartId) {
4245 persistentState.file = file
4346 persistentState
44- } catch (e : Exception ) {
45- Logger .d( " read exception [ ${file.parent} ]: $e " )
46- PersistentState (file)
47+ } else {
48+ Events .logErrorEvent(projectId, " Tried to restore a check process w/o a matching cart id. " )
49+ PersistentState (file, cartId = cartId )
4750 }
51+ } catch (e: Exception ) {
52+ Logger .d(" read exception [${file.parent} ]: $e " )
53+ PersistentState (file, cartId = cartId)
4854 }
4955 }
5056}
0 commit comments