You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

80 lines
2.3 KiB

  1. //
  2. // RecipientsWireframe.swift
  3. // GME Remit
  4. //
  5. // Created by InKwon James Kim on 08/08/2019.
  6. //Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
  7. //
  8. import UIKit
  9. class RecipientsWireframe {
  10. weak var view: UIViewController!
  11. weak var output: RecipientsWireframeOutput?
  12. }
  13. extension RecipientsWireframe: RecipientsWireframeInput {
  14. var storyboardName: String {return "Recipients"}
  15. func getMainView() -> UIViewController {
  16. let service = RecipientsService()
  17. let interactor = RecipientsInteractor(service: service)
  18. let presenter = RecipientsPresenter()
  19. let viewModel = RecipientsViewModel()
  20. let viewController = viewControllerFromStoryboard(of: RecipientsViewController.self)
  21. output = presenter
  22. viewController.viewModel = viewModel
  23. interactor.output = presenter
  24. presenter.interactor = interactor
  25. presenter.wireframe = self
  26. presenter.viewModel = viewModel
  27. viewModel.presenter = presenter
  28. view = viewController
  29. return viewController
  30. }
  31. func openSelectAccount(with accounts: [Account]) {
  32. let wireframe = SelectPaymentWireframe()
  33. wireframe.delegate = self
  34. wireframe.openSelectPaymentUsingPanModal(with: accounts, in: view)
  35. }
  36. func openAddRecipient(with delegate: SetupRecipientDelegate) {
  37. SetupRecipientWireframe().openNew(with: delegate, on: view) {
  38. self.output?.openedSetupRecipient()
  39. }
  40. }
  41. func openEditRecipient(who recipient: Recipient, with delegate: SetupRecipientDelegate) {
  42. SetupRecipientWireframe().openEdit(using: recipient, with: delegate, on: view) {
  43. self.output?.openedSetupRecipient()
  44. }
  45. }
  46. func goNextStep(who recipient: Recipient, with account: Account) {
  47. guard let navigationVC = view.navigationController else {
  48. return
  49. }
  50. let wireframe = SendMoneyParentWireframe()
  51. wireframe.open(for: recipient, with: account, in: navigationVC)
  52. }
  53. }
  54. extension RecipientsWireframe: SelectPaymentDelegate {
  55. func selectPayment(_ viewController: SelectPaymentViewController, selectedAccount: Account) {
  56. viewController.dismiss(animated: true) {
  57. self.output?.setSelectedAccount(selectedAccount)
  58. }
  59. }
  60. func selectPayment(_ viewController: SelectPaymentViewController, error: Error) {
  61. self.output?.setSelectAccountError(with: error)
  62. }
  63. }