// // RecipientsWireframe.swift // GME Remit // // Created by InKwon James Kim on 08/08/2019. //Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved. // import UIKit class RecipientsWireframe { weak var view: UIViewController! weak var output: RecipientsWireframeOutput? } extension RecipientsWireframe: RecipientsWireframeInput { var storyboardName: String {return "Recipients"} func getMainView() -> UIViewController { let service = RecipientsService() let interactor = RecipientsInteractor(service: service) let presenter = RecipientsPresenter() let viewModel = RecipientsViewModel() let viewController = viewControllerFromStoryboard(of: RecipientsViewController.self) output = presenter viewController.viewModel = viewModel interactor.output = presenter presenter.interactor = interactor presenter.wireframe = self presenter.viewModel = viewModel viewModel.presenter = presenter view = viewController return viewController } func openSelectAccount(with accounts: [Account]) { let wireframe = SelectPaymentWireframe() wireframe.delegate = self wireframe.openSelectPaymentUsingPanModal(with: accounts, in: view) } func openAddRecipient(with delegate: SetupRecipientDelegate) { SetupRecipientWireframe().openNew(with: delegate, on: view) { self.output?.openedSetupRecipient() } } func openEditRecipient(who recipient: Recipient, with delegate: SetupRecipientDelegate) { SetupRecipientWireframe().openEdit(using: recipient, with: delegate, on: view) { self.output?.openedSetupRecipient() } } func goNextStep(who recipient: Recipient, with account: Account) { guard let navigationVC = view.navigationController else { return } let wireframe = SendMoneyParentWireframe() wireframe.open(for: recipient, with: account, in: navigationVC) } } extension RecipientsWireframe: SelectPaymentDelegate { func selectPayment(_ viewController: SelectPaymentViewController, selectedAccount: Account) { viewController.dismiss(animated: true) { self.output?.setSelectedAccount(selectedAccount) } } func selectPayment(_ viewController: SelectPaymentViewController, error: Error) { self.output?.setSelectAccountError(with: error) } }