From 5e9baefc600c11e1bfa201a3db2ea889115b4963 Mon Sep 17 00:00:00 2001 From: Amy Date: Mon, 25 Mar 2024 13:35:29 -0400 Subject: [PATCH] MBL-1123: Supply Stripe credentials in PostCampaignCheckoutViewController --- .../PostCampaignCheckoutViewController.swift | 8 ++++++++ .../PostCampaignCheckoutViewModel.swift | 15 +++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/Kickstarter-iOS/Features/PledgeView/Controllers/PostCampaignCheckoutViewController.swift b/Kickstarter-iOS/Features/PledgeView/Controllers/PostCampaignCheckoutViewController.swift index 8ac3de37ff..55a7fca2c7 100644 --- a/Kickstarter-iOS/Features/PledgeView/Controllers/PostCampaignCheckoutViewController.swift +++ b/Kickstarter-iOS/Features/PledgeView/Controllers/PostCampaignCheckoutViewController.swift @@ -1,6 +1,7 @@ import KsApi import Library import Prelude +import Stripe import UIKit private enum PostCampaignCheckoutLayout { @@ -204,6 +205,13 @@ final class PostCampaignCheckoutViewController: UIViewController { } self.paymentMethodsViewController.view.rac.hidden = self.viewModel.outputs.paymentMethodsViewHidden + + self.viewModel.outputs.configureStripeIntegration + .observeForUI() + .observeValues { merchantIdentifier, publishableKey in + STPAPIClient.shared.publishableKey = publishableKey + STPAPIClient.shared.configuration.appleMerchantIdentifier = merchantIdentifier + } } // MARK: - Functions diff --git a/Library/ViewModels/PostCampaignCheckoutViewModel.swift b/Library/ViewModels/PostCampaignCheckoutViewModel.swift index 9753d25e0a..d890eb3254 100644 --- a/Library/ViewModels/PostCampaignCheckoutViewModel.swift +++ b/Library/ViewModels/PostCampaignCheckoutViewModel.swift @@ -37,6 +37,7 @@ public protocol PostCampaignCheckoutViewModelOutputs { var goToLoginSignup: Signal<(LoginIntent, Project, Reward?), Never> { get } var paymentMethodsViewHidden: Signal { get } var showWebHelp: Signal { get } + var configureStripeIntegration: Signal { get } } public protocol PostCampaignCheckoutViewModelType { @@ -116,6 +117,19 @@ public class PostCampaignCheckoutViewModel: PostCampaignCheckoutViewModelType, ) return (rewardsData, data.bonusAmount, pledgeData) } + + self.configureStripeIntegration = Signal.combineLatest( + initialData, + context + ) + .filter { !$1.paymentMethodsViewHidden } + .ignoreValues() + .map { _ in + ( + Secrets.ApplePay.merchantIdentifier, + AppEnvironment.current.environmentType.stripePublishableKey + ) + } } // MARK: - Inputs @@ -163,6 +177,7 @@ public class PostCampaignCheckoutViewModel: PostCampaignCheckoutViewModelType, public let goToLoginSignup: Signal<(LoginIntent, Project, Reward?), Never> public let paymentMethodsViewHidden: Signal public let showWebHelp: Signal + public let configureStripeIntegration: Signal public var inputs: PostCampaignCheckoutViewModelInputs { return self } public var outputs: PostCampaignCheckoutViewModelOutputs { return self }