@@ -529,7 +529,7 @@ private extension CardPresentPaymentStore {
529529 remote. fetchCharge ( for: siteID, chargeID: chargeID) { result in
530530 switch result {
531531 case . success( let charge) :
532- self . upsertChargeInBackground ( readonlyCharge: charge)
532+ self . upsertCharge ( readonlyCharge: charge)
533533 completion ( . success( charge) )
534534 case . failure( let error) :
535535 if case . noSuchChargeError( _) = WCPayChargesError ( underlyingError: error) {
@@ -564,35 +564,52 @@ private extension CardPresentPaymentStore {
564564 storage. saveIfNeeded ( )
565565 }
566566
567- func upsertChargeInBackground ( readonlyCharge: WCPayCharge ) {
567+ func upsertCharge ( readonlyCharge: WCPayCharge ) {
568568 let storage = storageManager. viewStorage
569- let storageWCPayCharge = storage. loadWCPayCharge ( siteID: readonlyCharge. siteID, chargeID: readonlyCharge. id) ??
570- storage. insertNewObject ( ofType: Storage . WCPayCharge. self)
569+ let storageWCPayCharge = existingOrNewWCPayCharge ( siteID: readonlyCharge. siteID, chargeID: readonlyCharge. id, in: storage)
571570
572571 switch readonlyCharge. paymentMethodDetails {
573572 case . cardPresent( let details) :
574- let storageCardPresentDetails = storageWCPayCharge. cardPresentDetails ??
575- storage. insertNewObject ( ofType: Storage . WCPayCardPresentPaymentDetails. self)
576- let storageReceiptDetails = storageCardPresentDetails. receipt ?? storage. insertNewObject ( ofType: Storage . WCPayCardPresentReceiptDetails. self)
577- storageCardPresentDetails. update ( with: details)
578- storageReceiptDetails. update ( with: details. receipt)
579- storageCardPresentDetails. receipt = storageReceiptDetails
580- storageWCPayCharge. cardPresentDetails = storageCardPresentDetails
581- storageWCPayCharge. cardDetails = nil
573+ upsertCardPresentDetails ( details, for: storageWCPayCharge, in: storage)
582574 case . card( let details) :
583- let storageCardDetails = storageWCPayCharge. cardDetails ?? storage. insertNewObject ( ofType: Storage . WCPayCardPaymentDetails. self)
584- storageCardDetails. update ( with: details)
585- storageWCPayCharge. cardDetails = storageCardDetails
586- storageWCPayCharge. cardPresentDetails = nil
575+ upsertCardDetails ( details, for: storageWCPayCharge, in: storage)
587576 case . unknown:
588577 storageWCPayCharge. cardDetails = nil
589578 storageWCPayCharge. cardPresentDetails = nil
590- break
591579 }
592580
593581 storageWCPayCharge. update ( with: readonlyCharge)
594582 }
595583
584+ private func existingOrNewWCPayCharge( siteID: Int64 , chargeID: String , in storage: StorageType ) -> Storage . WCPayCharge {
585+ storage. loadWCPayCharge ( siteID: siteID, chargeID: chargeID) ?? storage. insertNewObject ( ofType: Storage . WCPayCharge. self)
586+ }
587+
588+ private func upsertCardPresentDetails( _ details: WCPayCardPresentPaymentDetails ,
589+ for storageWCPayCharge: Storage . WCPayCharge ,
590+ in storage: StorageType ) {
591+ let storageCardPresentDetails = storageWCPayCharge. cardPresentDetails ?? storage. insertNewObject ( ofType: Storage . WCPayCardPresentPaymentDetails. self)
592+ let storageReceiptDetails = storageCardPresentDetails. receipt ?? storage. insertNewObject ( ofType: Storage . WCPayCardPresentReceiptDetails. self)
593+
594+ storageCardPresentDetails. update ( with: details)
595+ storageReceiptDetails. update ( with: details. receipt)
596+
597+ storageCardPresentDetails. receipt = storageReceiptDetails
598+
599+ storageWCPayCharge. cardPresentDetails = storageCardPresentDetails
600+ storageWCPayCharge. cardDetails = nil
601+ }
602+
603+ private func upsertCardDetails( _ details: WCPayCardPaymentDetails ,
604+ for storageWCPayCharge: Storage . WCPayCharge ,
605+ in storage: StorageType ) {
606+ let storageCardDetails = storageWCPayCharge. cardDetails ?? storage. insertNewObject ( ofType: Storage . WCPayCardPaymentDetails. self)
607+ storageCardDetails. update ( with: details)
608+
609+ storageWCPayCharge. cardDetails = storageCardDetails
610+ storageWCPayCharge. cardPresentDetails = nil
611+ }
612+
596613 func deleteCharge( siteID: Int64 , chargeID: String ) {
597614 let storage = storageManager. viewStorage
598615 guard let charge = storage. loadWCPayCharge ( siteID: siteID, chargeID: chargeID) else {
0 commit comments