Skip to content

Commit

Permalink
fix(GiniHealthSDK): Fix Gini Capture and Fix GIni with test document …
Browse files Browse the repository at this point in the history
…flows

We added the first payment provider to both flows

IPC-203
  • Loading branch information
razvancapra committed Mar 18, 2024
1 parent e5aff55 commit 6a68da7
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -59,19 +59,12 @@ public final class PaymentReviewViewController: UIViewController, UIGestureRecog
case usageFieldTag
}

public static func instantiate(with giniHealth: GiniHealth, document: Document, extractions: [Extraction], trackingDelegate: GiniHealthTrackingDelegate? = nil) -> PaymentReviewViewController {
public static func instantiate(with giniHealth: GiniHealth, document: Document, extractions: [Extraction], selectedPaymentProvider: PaymentProvider?, trackingDelegate: GiniHealthTrackingDelegate? = nil) -> PaymentReviewViewController {
let viewController = (UIStoryboard(name: "PaymentReview", bundle: giniHealthBundle())
.instantiateViewController(withIdentifier: "paymentReviewViewController") as? PaymentReviewViewController)!
viewController.model = PaymentReviewModel(with: giniHealth, document: document, extractions: extractions)
viewController.trackingDelegate = trackingDelegate
return viewController
}

public static func instantiate(with giniHealth: GiniHealth, data: DataForReview, trackingDelegate: GiniHealthTrackingDelegate? = nil) -> PaymentReviewViewController {
let viewController = (UIStoryboard(name: "PaymentReview", bundle: giniHealthBundle())
.instantiateViewController(withIdentifier: "paymentReviewViewController") as? PaymentReviewViewController)!
viewController.model = PaymentReviewModel(with: giniHealth, document: data.document, extractions: data.extractions)
viewController.trackingDelegate = trackingDelegate
viewController.selectedPaymentProvider = selectedPaymentProvider
return viewController
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ final class AppCoordinator: Coordinator {
private lazy var client: GiniHealthAPILibrary.Client = CredentialsManager.fetchClientFromBundle()
private lazy var apiLib = GiniHealthAPI.Builder(client: client, logLevel: .debug).build()
private lazy var health = GiniHealth(with: apiLib)
private lazy var paymentComponentsController = PaymentComponentsController(giniHealth: health)

private var documentMetadata: GiniHealthAPILibrary.Document.Metadata?
private let documentMetadataBranchId = "GiniHealthExampleIOS"
Expand All @@ -65,6 +66,8 @@ final class AppCoordinator: Coordinator {

func start() {
self.showSelectAPIScreen()
paymentComponentsController.delegate = self
paymentComponentsController.loadPaymentProviders()
}

func processExternalDocument(withUrl url: URL, sourceApplication: String?) {
Expand Down Expand Up @@ -116,7 +119,8 @@ final class AppCoordinator: Coordinator {
secret: self.client.secret,
domain: self.client.domain),
documentMetadata: metadata,
hardcodedInvoicesController: HardcodedInvoicesController())
hardcodedInvoicesController: HardcodedInvoicesController(),
paymentComponentController: paymentComponentsController)

screenAPICoordinator.delegate = self

Expand Down Expand Up @@ -166,7 +170,10 @@ final class AppCoordinator: Coordinator {
self.health.fetchDataForReview(documentId: document.id) { result in
switch result {
case .success(let data):
let vc = PaymentReviewViewController.instantiate(with: self.health, data: data, trackingDelegate: self)
let vc = PaymentReviewViewController.instantiate(with: self.health,
data: data,
selectedPaymentProvider: self.paymentComponentsController.selectedPaymentProvider,
trackingDelegate: self)
vc.modalPresentationStyle = .overCurrentContext
vc.modalTransitionStyle = .coverVertical
self.rootViewController.present(vc, animated: true)
Expand Down Expand Up @@ -202,7 +209,11 @@ final class AppCoordinator: Coordinator {
self.testDocumentExtractions = extractions

// Show the payment review screen
let vc = PaymentReviewViewController.instantiate(with: self.health, document: compositeDocument, extractions: extractions, trackingDelegate: self)
let vc = PaymentReviewViewController.instantiate(with: self.health,
document: compositeDocument,
extractions: extractions,
selectedPaymentProvider: self.paymentComponentsController.selectedPaymentProvider,
trackingDelegate: self)
self.rootViewController.present(vc, animated: true)
case .failure(let error):
print("❌ Setting document for review failed: \(String(describing: error))")
Expand Down Expand Up @@ -277,7 +288,7 @@ final class AppCoordinator: Coordinator {
health.setConfiguration(configuration)

let invoicesListCoordinator = InvoicesListCoordinator()
let paymentComponentsController = PaymentComponentsController(giniHealth: health)
paymentComponentsController = PaymentComponentsController(giniHealth: health)
invoicesListCoordinator.start(documentService: health.documentService,
hardcodedInvoicesController: HardcodedInvoicesController(),
paymentComponentsController: paymentComponentsController)
Expand Down Expand Up @@ -310,10 +321,6 @@ extension AppCoordinator: ScreenAPICoordinatorDelegate {
coordinator.rootViewController.dismiss(animated: true)
self.remove(childCoordinator: coordinator)
}

func openInvoicesList() {
showInvoicesList()
}
}

// MARK: GiniHealthDelegate
Expand Down Expand Up @@ -344,3 +351,19 @@ extension AppCoordinator: GiniHealthTrackingDelegate {
}
}
}

// MARK: PaymentComponentControllerDelegate

extension AppCoordinator: PaymentComponentsControllerProtocol {
func isLoadingStateChanged(isLoading: Bool) {
if isLoading {
selectAPIViewController.showActivityIndicator()
} else {
selectAPIViewController.hideActivityIndicator()
}
}

func didFetchedPaymentProviders() {
//
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ import UIKit

protocol ScreenAPICoordinatorDelegate: AnyObject {
func screenAPI(coordinator: ScreenAPICoordinator, didFinish: ())
func openInvoicesList()
}

final class ScreenAPICoordinator: NSObject, Coordinator, GiniHealthTrackingDelegate, GiniCaptureResultsDelegate {
Expand All @@ -33,7 +32,8 @@ final class ScreenAPICoordinator: NSObject, Coordinator, GiniHealthTrackingDeleg
var visionDocuments: [GiniCaptureDocument]?
var visionConfiguration: GiniConfiguration
private var captureExtractedResults: [GiniBankAPILibrary.Extraction] = []
var hardcodedInvoicesController: HardcodedInvoicesController
private var hardcodedInvoicesController: HardcodedInvoicesController
private var paymentComponentController: PaymentComponentsController

// {extraction name} : {entity name}
private let editableSpecificExtractions = ["paymentRecipient" : "companyname", "paymentReference" : "reference", "paymentPurpose" : "text", "iban" : "iban", "bic" : "bic", "amountToPay" : "amount"]
Expand All @@ -42,12 +42,14 @@ final class ScreenAPICoordinator: NSObject, Coordinator, GiniHealthTrackingDeleg
importedDocuments documents: [GiniCaptureDocument]?,
client: GiniHealthAPILibrary.Client,
documentMetadata: GiniHealthAPILibrary.Document.Metadata?,
hardcodedInvoicesController: HardcodedInvoicesController) {
hardcodedInvoicesController: HardcodedInvoicesController,
paymentComponentController: PaymentComponentsController) {
visionConfiguration = configuration
visionDocuments = documents
self.client = client
self.documentMetadata = documentMetadata
self.hardcodedInvoicesController = hardcodedInvoicesController
self.paymentComponentController = paymentComponentController
super.init()
}

Expand Down Expand Up @@ -95,13 +97,18 @@ final class ScreenAPICoordinator: NSObject, Coordinator, GiniHealthTrackingDeleg
extractions: data.extractions,
isPayable: isPayable)
self?.hardcodedInvoicesController.appendInvoiceWithExtractions(invoice: invoice)
self?.screenAPIViewController.dismiss(animated: true, completion: {
self?.delegate?.openInvoicesList()
})

case .failure(let error):
print("❌ Checking if document is payable failed: \(String(describing: error))")
}
})
let vc = PaymentReviewViewController.instantiate(with: healthSdk,
data: data,
selectedPaymentProvider: self?.paymentComponentController.selectedPaymentProvider,
trackingDelegate: self)
vc.modalTransitionStyle = .coverVertical
vc.modalPresentationStyle = .overCurrentContext
self?.rootViewController.present(vc, animated: true)
case .failure(let error):
print("❌ Document data fetching failed: \(String(describing: error))")
}
Expand Down

0 comments on commit 6a68da7

Please sign in to comment.