Skip to content

Commit a60081b

Browse files
committed
Remove unnneded code
1 parent 46b2ac8 commit a60081b

File tree

2 files changed

+3
-243
lines changed

2 files changed

+3
-243
lines changed

WooCommerce/Classes/ViewModels/Order Details/OrderDetailsViewModel.swift

Lines changed: 0 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ final class OrderDetailsViewModel {
1111
///
1212
private var collectPaymentsUseCase: CollectOrderPaymentUseCase?
1313

14-
private let paymentOrchestrator = PaymentCaptureOrchestrator()
1514
private let stores: StoresManager
1615

1716
private(set) var order: Order
@@ -89,16 +88,6 @@ final class OrderDetailsViewModel {
8988
}
9089
}
9190

92-
/// Name of the user we will be collecting car present payments from
93-
///
94-
var collectPaymentFrom: String {
95-
guard let name = order.billingAddress?.firstName else {
96-
return "Collect payment"
97-
}
98-
99-
return "Collect payment from \(name)"
100-
}
101-
10291
/// Closure to be executed when the UI needs to be reloaded.
10392
/// That could happen, for example, when new incoming data is detected
10493
///
@@ -138,15 +127,6 @@ final class OrderDetailsViewModel {
138127
order.billingAddress?.email
139128
}
140129

141-
/// Subject for the email containing a receipt generated after a card present payment has been captured
142-
///
143-
var paymentReceiptEmailSubject: String {
144-
guard let storeName = stores.sessionManager.defaultSite?.name else {
145-
return Localization.emailSubjectWithoutStoreName
146-
}
147-
148-
return String.localizedStringWithFormat(Localization.emailSubjectWithStoreName, storeName)
149-
}
150130

151131
private var cardPresentPaymentGatewayAccounts: [PaymentGatewayAccount] {
152132
return dataSource.cardPresentPaymentGatewayAccounts()
@@ -523,20 +503,6 @@ extension OrderDetailsViewModel {
523503
stores.dispatch(deleteTrackingAction)
524504
}
525505

526-
/// Returns a publisher that emits an initial value if there is no reader connected and completes as soon as a
527-
/// reader connects.
528-
func cardReaderAvailable() -> AnyPublisher<[CardReader], Never> {
529-
Future<AnyPublisher<[CardReader], Never>, Never> { [stores] promise in
530-
let action = CardPresentPaymentAction.checkCardReaderConnected(onCompletion: { publisher in
531-
promise(.success(publisher))
532-
})
533-
534-
stores.dispatch(action)
535-
}
536-
.switchToLatest()
537-
.eraseToAnyPublisher()
538-
}
539-
540506
/// Collects payments for the current order.
541507
/// Tries to connect to a reader if necesary.
542508
/// Handles receipt sharing.
@@ -563,53 +529,4 @@ extension OrderDetailsViewModel {
563529
self?.collectPaymentsUseCase = nil
564530
})
565531
}
566-
567-
/// We are passing the ReceiptParameters as part of the completon block
568-
/// We do so at this point for testing purposes.
569-
/// When we implement persistance, the receipt metadata would be persisted
570-
/// to Storage, associated to an order. We would not need to propagate
571-
/// that object outside of Yosemite.
572-
func collectPayment(onWaitingForInput: @escaping () -> Void, // i.e. waiting for buyer to swipe/insert/tap card
573-
onProcessingMessage: @escaping () -> Void, // i.e. payment is processing
574-
onDisplayMessage: @escaping (String) -> Void, // e.g. "Remove Card"
575-
onCompletion: @escaping (Result<CardPresentReceiptParameters, Error>) -> Void) { // used to tell user payment completed (or not)
576-
/// We don't have a concept of priority yet, so use the first paymentGatewayAccount for now
577-
/// since we can't yet have multiple accounts
578-
///
579-
if self.cardPresentPaymentGatewayAccounts.count != 1 {
580-
DDLogWarn("Expected one card present gateway account. Got something else.")
581-
}
582-
583-
let statementDescriptor = cardPresentPaymentGatewayAccounts.first?.statementDescriptor
584-
585-
paymentOrchestrator.collectPayment(for: self.order,
586-
statementDescriptor: statementDescriptor,
587-
onWaitingForInput: onWaitingForInput,
588-
onProcessingMessage: onProcessingMessage,
589-
onDisplayMessage: onDisplayMessage,
590-
onCompletion: onCompletion)
591-
592-
}
593-
594-
func cancelPayment(onCompletion: @escaping (Result<Void, Error>) -> Void) {
595-
paymentOrchestrator.cancelPayment(onCompletion: onCompletion)
596-
}
597-
598-
func printReceipt(params: CardPresentReceiptParameters) {
599-
ReceiptActionCoordinator.printReceipt(for: order, params: params)
600-
}
601-
602-
func emailReceipt(params: CardPresentReceiptParameters, onContent: @escaping (String) -> Void) {
603-
ServiceLocator.analytics.track(.receiptEmailTapped)
604-
paymentOrchestrator.emailReceipt(for: order, params: params, onContent: onContent)
605-
}
606-
}
607-
608-
private extension OrderDetailsViewModel {
609-
enum Localization {
610-
static let emailSubjectWithStoreName = NSLocalizedString("Your receipt from %1$@",
611-
comment: "Subject of email sent with a card present payment receipt")
612-
static let emailSubjectWithoutStoreName = NSLocalizedString("Your receipt",
613-
comment: "Subject of email sent with a card present payment receipt")
614-
}
615532
}

WooCommerce/Classes/ViewRelated/Orders/Order Details/OrderDetailsViewController.swift

Lines changed: 3 additions & 160 deletions
Original file line numberDiff line numberDiff line change
@@ -56,31 +56,6 @@ final class OrderDetailsViewController: UIViewController {
5656

5757
private let notices = OrderDetailsNotices()
5858

59-
/// Orchestrates what needs to be presented in the modal views
60-
/// that provide user-facing feedback about the card present payment process.
61-
private lazy var paymentAlerts: OrderDetailsPaymentAlerts = {
62-
OrderDetailsPaymentAlerts(presentingController: self)
63-
}()
64-
65-
/// Subscription that listens for connected readers while we are trying to connect to one to capture payment
66-
/// We need to cancel that subscription if the process is canceled by the user or when we connect to a reader.
67-
///
68-
private var cardReaderAvailableSubscription: Combine.Cancellable? = nil
69-
70-
/// Connection Controller (helps connect readers)
71-
///
72-
private lazy var connectionController: CardReaderConnectionController? = {
73-
guard let siteID = viewModel?.order.siteID else {
74-
return nil
75-
}
76-
77-
return CardReaderConnectionController(
78-
forSiteID: siteID,
79-
knownReaderProvider: CardReaderSettingsKnownReaderStorage(),
80-
alertsProvider: CardReaderSettingsAlerts()
81-
)
82-
}()
83-
8459
// MARK: - View Lifecycle
8560

8661
/// Create an instance of `Self` from its corresponding storyboard.
@@ -513,10 +488,10 @@ private extension OrderDetailsViewController {
513488
case .issueRefund:
514489
issueRefundWasPressed()
515490
case .collectPayment:
516-
guard let indexPath = indexPath else {
491+
guard indexPath != nil else {
517492
break
518493
}
519-
collectPayment(at: indexPath)
494+
collectPayment()
520495
case .reprintShippingLabel(let shippingLabel):
521496
guard let navigationController = navigationController else {
522497
assertionFailure("Cannot reprint a shipping label because `navigationController` is nil")
@@ -710,7 +685,7 @@ private extension OrderDetailsViewController {
710685
present(navigationController, animated: true, completion: nil)
711686
}
712687

713-
@objc private func collectPayment(at: IndexPath) {
688+
@objc private func collectPayment() {
714689
viewModel.collectPayment(rootViewController: self, backButtonTitle: Localization.Payments.backToOrder) { [weak self] result in
715690
guard let self = self else { return }
716691
// Refresh date & view once payment has been collected.
@@ -720,97 +695,6 @@ private extension OrderDetailsViewController {
720695
}
721696
}
722697
}
723-
return
724-
725-
cardReaderAvailableSubscription = viewModel.cardReaderAvailable()
726-
.sink(
727-
receiveCompletion: { [weak self] result in
728-
self?.dismiss(animated: false, completion: {
729-
self?.collectPaymentForCurrentOrder()
730-
})
731-
self?.cardReaderAvailableSubscription = nil
732-
},
733-
receiveValue: { [weak self] _ in
734-
self?.connectToCardReader()
735-
})
736-
}
737-
738-
private func collectPaymentForCurrentOrder() {
739-
let currencyFormatter = CurrencyFormatter(currencySettings: ServiceLocator.currencySettings)
740-
let currencyCode = ServiceLocator.currencySettings.currencyCode
741-
let unit = ServiceLocator.currencySettings.symbol(from: currencyCode)
742-
let value = currencyFormatter.formatAmount(viewModel.order.total, with: unit) ?? ""
743-
744-
paymentAlerts.readerIsReady(title: viewModel.collectPaymentFrom,
745-
amount: value)
746-
747-
ServiceLocator.analytics.track(.collectPaymentTapped)
748-
viewModel.collectPayment(
749-
onWaitingForInput: { [weak self] in
750-
self?.paymentAlerts.tapOrInsertCard(onCancel: {
751-
self?.viewModel.cancelPayment(onCompletion: { _ in
752-
ServiceLocator.analytics.track(.collectPaymentCanceled)
753-
})
754-
})
755-
},
756-
onProcessingMessage: { [weak self] in
757-
self?.paymentAlerts.processingPayment()
758-
},
759-
onDisplayMessage: { [weak self] message in // display a message from the reader, e.g. "Remove Card"
760-
self?.paymentAlerts.displayReaderMessage(message: message)
761-
},
762-
onCompletion: { [weak self] result in
763-
guard let self = self else {
764-
return
765-
}
766-
767-
switch result {
768-
case .failure(let error):
769-
ServiceLocator.analytics.track(.collectPaymentFailed, withError: error)
770-
DDLogError("Failed to collect payment: \(error.localizedDescription)")
771-
self.paymentAlerts.error(error: error, tryAgain: {
772-
self.retryCollectPayment()
773-
})
774-
case .success(let receiptParameters):
775-
ServiceLocator.analytics.track(.collectPaymentSuccess)
776-
self.syncOrderAfterPaymentCollection {
777-
self.refreshCardPresentPaymentEligibility()
778-
}
779-
780-
self.paymentAlerts.success(printReceipt: {
781-
self.viewModel.printReceipt(params: receiptParameters)
782-
}, emailReceipt: {
783-
self.viewModel.emailReceipt(params: receiptParameters, onContent: { emailContent in
784-
self.emailReceipt(emailContent)
785-
})
786-
}, noReceiptTitle: Localization.Payments.backToOrder,
787-
noReceiptAction: {})
788-
}
789-
}
790-
)
791-
}
792-
793-
private func retryCollectPayment() {
794-
viewModel.cancelPayment { [weak self] result in
795-
switch result {
796-
case .failure(let error):
797-
self?.paymentAlerts.nonRetryableError(from: self, error: error)
798-
case .success:
799-
self?.collectPaymentForCurrentOrder()
800-
}
801-
}
802-
}
803-
804-
private func connectToCardReader() {
805-
connectionController?.searchAndConnect(from: self) { _ in
806-
/// No need for logic here. Once connected, the connected reader will publish
807-
/// through the `cardReaderAvailableSubscription`
808-
}
809-
}
810-
811-
private func cancelObservingCardReader() {
812-
cardReaderAvailableSubscription?.cancel()
813-
cardReaderAvailableSubscription = nil
814698
}
815699

816700
private func itemAddOnsButtonTapped(addOns: [OrderItemAttribute]) {
@@ -819,41 +703,6 @@ private extension OrderDetailsViewController {
819703
let navigationController = WooNavigationController(rootViewController: addOnsController)
820704
present(navigationController, animated: true, completion: nil)
821705
}
822-
823-
private func emailReceipt(_ content: String) {
824-
guard MFMailComposeViewController.canSendMail() else {
825-
DDLogError("⛔️ Failed to submit email receipt for order: \(viewModel.order.orderID). Email is not configured")
826-
return
827-
}
828-
829-
let mail = MFMailComposeViewController()
830-
mail.mailComposeDelegate = self
831-
832-
mail.setSubject(viewModel.paymentReceiptEmailSubject)
833-
mail.setMessageBody(content, isHTML: true)
834-
835-
if let customerEmail = viewModel.order.billingAddress?.email {
836-
mail.setToRecipients([customerEmail])
837-
}
838-
839-
present(mail, animated: true)
840-
}
841-
}
842-
843-
extension OrderDetailsViewController: MFMailComposeViewControllerDelegate {
844-
func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
845-
switch result {
846-
case .cancelled:
847-
ServiceLocator.analytics.track(.receiptEmailCanceled)
848-
case .sent, .saved:
849-
ServiceLocator.analytics.track(.receiptEmailSuccess)
850-
case .failed:
851-
ServiceLocator.analytics.track(.receiptEmailFailed, withError: error ?? UnknownEmailError())
852-
@unknown default:
853-
assertionFailure("MFMailComposeViewController finished with an unknown result type")
854-
}
855-
controller.dismiss(animated: true)
856-
}
857706
}
858707

859708
// MARK: - UITableViewDelegate Conformance
@@ -920,12 +769,6 @@ extension OrderDetailsViewController: UITableViewDelegate {
920769
}
921770
}
922771

923-
extension OrderDetailsViewController: UIAdaptivePresentationControllerDelegate {
924-
func presentationControllerDidDismiss(_ presentationController: UIPresentationController) {
925-
cancelObservingCardReader()
926-
}
927-
}
928-
929772
// MARK: - Trackings alert
930773
// Track / delete tracking alert
931774
private extension OrderDetailsViewController {

0 commit comments

Comments
 (0)