diff --git a/WooCommerce/Classes/POS/Controllers/PointOfSaleOrderController.swift b/WooCommerce/Classes/POS/Controllers/PointOfSaleOrderController.swift index 427a70271f9..8dbe53da45d 100644 --- a/WooCommerce/Classes/POS/Controllers/PointOfSaleOrderController.swift +++ b/WooCommerce/Classes/POS/Controllers/PointOfSaleOrderController.swift @@ -28,12 +28,14 @@ final class PointOfSaleOrderController: PointOfSaleOrderControllerProtocol { init(orderService: POSOrderServiceProtocol, receiptService: POSReceiptServiceProtocol, stores: StoresManager = ServiceLocator.stores, - currencySettings: CurrencySettings = ServiceLocator.currencySettings) { + currencySettings: CurrencySettings = ServiceLocator.currencySettings, + celebration: PaymentCaptureCelebrationProtocol = PaymentCaptureCelebration()) { self.orderService = orderService self.receiptService = receiptService self.stores = stores self.storeCurrency = currencySettings.currencyCode self.currencyFormatter = CurrencyFormatter(currencySettings: currencySettings) + self.celebration = celebration } var orderStatePublisher: AnyPublisher { @@ -44,6 +46,7 @@ final class PointOfSaleOrderController: PointOfSaleOrderControllerProtocol { private let receiptService: POSReceiptServiceProtocol private let currencyFormatter: CurrencyFormatter + private let celebration: PaymentCaptureCelebrationProtocol private let storeCurrency: CurrencyCode private let stores: StoresManager @@ -101,6 +104,10 @@ final class PointOfSaleOrderController: PointOfSaleOrderControllerProtocol { orderState = .idle } + private func celebrate() { + celebration.celebrate() + } + @MainActor func collectCashPayment() async throws { guard let siteID = stores.sessionManager.defaultStoreID else { @@ -123,7 +130,11 @@ final class PointOfSaleOrderController: PointOfSaleOrderControllerProtocol { order: updatedOrder, giftCard: nil, fields: fieldsToUpdate, - onCompletion: { result in + onCompletion: { [weak self] result in + guard let self = self else { return } + if case .success = result { + self.celebrate() + } continuation.resume(with: result) }) stores.dispatch(action)