Skip to content

Commit

Permalink
Rich PR feedback
Browse files Browse the repository at this point in the history
  • Loading branch information
KunJeongPark committed Dec 12, 2023
1 parent 4c35a89 commit 9363cc4
Show file tree
Hide file tree
Showing 9 changed files with 41 additions and 67 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ struct CardVaultView: View {
UpdateSetupTokenView(cardVaultViewModel: cardVaultViewModel, setupToken: setupToken.id)
}
UpdateSetupTokenResultView(cardVaultViewModel: cardVaultViewModel)
if let updateSetupToken = cardVaultViewModel.updateSetupToken {
if let updateSetupToken = cardVaultViewModel.state.updateSetupToken {
CreatePaymentTokenView(
vaultViewModel: cardVaultViewModel,
selectedMerchantIntegration: DemoSettings.merchantIntegration,
Expand Down Expand Up @@ -53,11 +53,6 @@ struct CardVaultView: View {
scrollView.scrollTo("bottomView")
}
}
.onChange(of: cardVaultViewModel.updateSetupToken) { _ in
withAnimation {
scrollView.scrollTo("bottomView")
}
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ struct UpdateSetupTokenResultView: View {
@ObservedObject var cardVaultViewModel: CardVaultViewModel

var body: some View {
switch cardVaultViewModel.updateSetupTokenResponse {
switch cardVaultViewModel.state.updateSetupTokenResponse {
case .idle, .loading:
EmptyView()
case .loaded(let updateSetupTokenResponse):
Expand All @@ -15,7 +15,7 @@ struct UpdateSetupTokenResultView: View {
}
}

func getSuccessView(updateSetupTokenResponse: CardVaultViewModel.UpdateSetupTokenResult) -> some View {
func getSuccessView(updateSetupTokenResponse: UpdateSetupTokenResult) -> some View {
VStack(spacing: 16) {
HStack {
Text("Vault Success")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ struct UpdateSetupTokenView: View {
}
}
.buttonStyle(RoundedBlueButtonStyle())
if case .loading = cardVaultViewModel.updateSetupTokenResponse {
if case .loading = cardVaultViewModel.state.updateSetupTokenResponse {
CircularProgressView()
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ struct PayPalVaultResultView: View {
@ObservedObject var paypalVaultViewModel: PayPalVaultViewModel

var body: some View {
switch paypalVaultViewModel.paypalVaultTokenResponse {
switch paypalVaultViewModel.state.paypalVaultTokenResponse {
case .idle, .loading:
EmptyView()
case .loaded(let vaultResult):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ struct PayPalVaultView: View {
.padding()
}
PayPalVaultResultView(paypalVaultViewModel: paypalVaultViewModel)
if let paypalVaultResult = paypalVaultViewModel.paypalVaultToken {
if let paypalVaultResult = paypalVaultViewModel.state.paypalVaultToken {
CreatePaymentTokenView(
vaultViewModel: paypalVaultViewModel,
selectedMerchantIntegration: DemoSettings.merchantIntegration,
Expand Down Expand Up @@ -57,11 +57,6 @@ struct PayPalVaultView: View {
scrollView.scrollTo("bottomView")
}
}
.onChange(of: paypalVaultViewModel.paypalVaultToken) { _ in
withAnimation {
scrollView.scrollTo("bottomView")
}
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ struct SetupTokenResultView: View {
LeadingText("\(setupTokenResponse.status)")
if let url = setupTokenResponse.paypalURL {
LeadingText("PayPalURL", weight: .bold)
LeadingText("\(setupTokenResponse.paypalURL ?? "No url")")
LeadingText("\(url)")
}
}
.frame(maxWidth: .infinity)
Expand Down
30 changes: 4 additions & 26 deletions Demo/Demo/ViewModels/CardVaultViewModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -4,27 +4,11 @@ import CorePayments

class CardVaultViewModel: VaultViewModel, CardVaultDelegate {

struct UpdateSetupTokenResult: Decodable, Equatable {

var id: String
var status: String
}

@Published var updateSetupToken: UpdateSetupTokenResult?

@Published var updateSetupTokenResponse: LoadingState<UpdateSetupTokenResult> = .idle {
didSet {
if case .loaded(let value) = updateSetupTokenResponse {
updateSetupToken = value
}
}
}

let configManager = CoreConfigManager(domain: "Card Vault")

func vault(card: Card, setupToken: String) async {
DispatchQueue.main.async {
self.updateSetupTokenResponse = .loading
self.state.updateSetupTokenResponse = .loading
}
do {
let config = try await configManager.getCoreConfig()
Expand All @@ -33,7 +17,7 @@ class CardVaultViewModel: VaultViewModel, CardVaultDelegate {
let cardVaultRequest = CardVaultRequest(card: card, setupTokenID: setupToken)
cardClient.vault(cardVaultRequest)
} catch {
updateSetupTokenResponse = .error(message: error.localizedDescription)
self.state.updateSetupTokenResponse = .error(message: error.localizedDescription)
print("failed in updating setup token. \(error.localizedDescription)")
}
}
Expand All @@ -49,24 +33,18 @@ class CardVaultViewModel: VaultViewModel, CardVaultDelegate {

func setUpTokenSuccessResult(vaultResult: CardPayments.CardVaultResult) {
DispatchQueue.main.async {
self.updateSetupTokenResponse = .loaded(
self.state.updateSetupTokenResponse = .loaded(
UpdateSetupTokenResult(id: vaultResult.setupTokenID, status: vaultResult.status)
)
}
}

func setUpdateSetupTokenFailureResult(vaultError: CorePayments.CoreSDKError) {
DispatchQueue.main.async {
self.updateSetupTokenResponse = .error(message: vaultError.localizedDescription)
self.state.updateSetupTokenResponse = .error(message: vaultError.localizedDescription)
}
}

override func resetState() {
super.resetState()
updateSetupToken = nil
updateSetupTokenResponse = .idle
}

// MARK: - CardVault Delegate

func card(_ cardClient: CardPayments.CardClient, didFinishWithVaultResult vaultResult: CardPayments.CardVaultResult) {
Expand Down
22 changes: 3 additions & 19 deletions Demo/Demo/ViewModels/PayPalVaultViewModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,14 @@ import CorePayments

class PayPalVaultViewModel: VaultViewModel, PayPalVaultDelegate {

@Published var paypalVaultToken: PayPalVaultResult?

@Published var paypalVaultTokenResponse: LoadingState<PayPalVaultResult> = .idle {
didSet {
if case .loaded(let value) = paypalVaultTokenResponse {
paypalVaultToken = value
}
}
}

let configManager = CoreConfigManager(domain: "PayPal Vault")

func vault(url: String) async {
guard let paypalUrl = URL(string: url) else {
return
}
DispatchQueue.main.async {
self.paypalVaultTokenResponse = .loading
self.state.paypalVaultTokenResponse = .loading
}
do {
let config = try await configManager.getCoreConfig()
Expand All @@ -33,20 +23,14 @@ class PayPalVaultViewModel: VaultViewModel, PayPalVaultDelegate {
}
}

override func resetState() {
super.resetState()
paypalVaultToken = nil
paypalVaultTokenResponse = .idle
}

// MARK: - PayPalVault Delegate

func paypal(
_ paypalWebClient: PayPalWebPayments.PayPalWebCheckoutClient,
didFinishWithVaultResult paypalVaultResult: PayPalVaultResult
) {
DispatchQueue.main.async {
self.paypalVaultTokenResponse = .loaded(paypalVaultResult)
self.state.paypalVaultTokenResponse = .loaded(paypalVaultResult)
}
}

Expand All @@ -56,7 +40,7 @@ class PayPalVaultViewModel: VaultViewModel, PayPalVaultDelegate {
) {

DispatchQueue.main.async {
self.paypalVaultTokenResponse = .error(message: vaultError.localizedDescription)
self.state.paypalVaultTokenResponse = .error(message: vaultError.localizedDescription)
}
}

Expand Down
32 changes: 27 additions & 5 deletions Demo/Demo/ViewModels/VaultState.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,20 @@ import Foundation
import CardPayments
import PayPalWebPayments

struct VaultState: Equatable {
struct UpdateSetupTokenResult: Decodable, Equatable {

struct UpdateSetupTokenResult: Decodable, Equatable {
var id: String
var status: String
}

var id: String
var status: String
}
struct VaultState: Equatable {

var setupToken: SetUpTokenResponse?
var paymentToken: PaymentTokenResponse?
// result for card vault
var updateSetupToken: UpdateSetupTokenResult?
// result for paypal vault
var paypalVaultToken: PayPalVaultResult?

var setupTokenResponse: LoadingState<SetUpTokenResponse> = .idle {
didSet {
Expand All @@ -28,6 +32,24 @@ struct VaultState: Equatable {
}
}
}

// response from Card Vault
var updateSetupTokenResponse: LoadingState<UpdateSetupTokenResult> = .idle {
didSet {
if case .loaded(let value) = updateSetupTokenResponse {
updateSetupToken = value
}
}
}

// response from PayPal Vault
var paypalVaultTokenResponse: LoadingState<PayPalVaultResult> = .idle {
didSet {
if case .loaded(let value) = paypalVaultTokenResponse {
paypalVaultToken = value
}
}
}
}

enum LoadingState<T: Decodable & Equatable>: Equatable {
Expand Down

0 comments on commit 9363cc4

Please sign in to comment.