From e61111e670049e3ab45fe2f4bf10b67064fd4c7f Mon Sep 17 00:00:00 2001 From: Mubarak Sadoon Date: Thu, 27 Oct 2022 11:15:56 -0400 Subject: [PATCH] [PAY-2040] Payment Sheet Displayed On Unrelated Context (#1752) * allow tracking incorrect page display for payment sheet create function calls for calling vm from vc, ensure nil value still sends the property name. No need to send user information. * found a way to prevent analytics altogether and prevent display of the payment sheet on unintended context. * naming variable correction. --- .../Controller/PaymentMethodsViewController.swift | 13 +++++++++---- .../PledgePaymentMethodsViewController.swift | 13 +++++++++---- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/Kickstarter-iOS/Features/PaymentMethods/Controller/PaymentMethodsViewController.swift b/Kickstarter-iOS/Features/PaymentMethods/Controller/PaymentMethodsViewController.swift index 487b00b840..7e363bc13f 100644 --- a/Kickstarter-iOS/Features/PaymentMethods/Controller/PaymentMethodsViewController.swift +++ b/Kickstarter-iOS/Features/PaymentMethods/Controller/PaymentMethodsViewController.swift @@ -187,11 +187,16 @@ internal final class PaymentMethodsViewController: UIViewController, MessageBann strongSelf.messageBannerViewController? .showBanner(with: .error, message: error.localizedDescription) case let .success(paymentSheetFlowController): - strongSelf.paymentSheetFlowController = paymentSheetFlowController - strongSelf.paymentSheetFlowController?.presentPaymentOptions(from: strongSelf) { [weak self] in - guard let strongSelf = self else { return } + let topViewController = strongSelf.navigationController?.topViewController + let paymentSheetShownWithinPaymentMethodsContext = topViewController is PaymentMethodsViewController - strongSelf.confirmPaymentResult(with: data.clientSecret) + if paymentSheetShownWithinPaymentMethodsContext { + strongSelf.paymentSheetFlowController = paymentSheetFlowController + strongSelf.paymentSheetFlowController?.presentPaymentOptions(from: strongSelf) { [weak self] in + guard let strongSelf = self else { return } + + strongSelf.confirmPaymentResult(with: data.clientSecret) + } } } } diff --git a/Kickstarter-iOS/Features/PledgePaymentMethods/Controller/PledgePaymentMethodsViewController.swift b/Kickstarter-iOS/Features/PledgePaymentMethods/Controller/PledgePaymentMethodsViewController.swift index a007f73f8f..c14cc258d8 100644 --- a/Kickstarter-iOS/Features/PledgePaymentMethods/Controller/PledgePaymentMethodsViewController.swift +++ b/Kickstarter-iOS/Features/PledgePaymentMethods/Controller/PledgePaymentMethodsViewController.swift @@ -172,11 +172,16 @@ final class PledgePaymentMethodsViewController: UIViewController { strongSelf.messageDisplayingDelegate? .pledgeViewController(strongSelf, didErrorWith: error.localizedDescription) case let .success(paymentSheetFlowController): - strongSelf.paymentSheetFlowController = paymentSheetFlowController - strongSelf.paymentSheetFlowController?.presentPaymentOptions(from: strongSelf) { [weak self] in - guard let strongSelf = self else { return } + let topViewController = strongSelf.navigationController?.topViewController + let paymentSheetShownWithinPledgeContext = topViewController is PledgeViewController - strongSelf.confirmPaymentResult(with: data.clientSecret) + if paymentSheetShownWithinPledgeContext { + strongSelf.paymentSheetFlowController = paymentSheetFlowController + strongSelf.paymentSheetFlowController?.presentPaymentOptions(from: strongSelf) { [weak self] in + guard let strongSelf = self else { return } + + strongSelf.confirmPaymentResult(with: data.clientSecret) + } } } }