diff --git a/WooCommerce/Classes/POS/Card Present Payments/CardPresentPaymentOnboardingAdaptor.swift b/WooCommerce/Classes/POS/Card Present Payments/CardPresentPaymentOnboardingAdaptor.swift index 1bada4d51c9..7009da94612 100644 --- a/WooCommerce/Classes/POS/Card Present Payments/CardPresentPaymentOnboardingAdaptor.swift +++ b/WooCommerce/Classes/POS/Card Present Payments/CardPresentPaymentOnboardingAdaptor.swift @@ -9,7 +9,9 @@ final class CardPresentPaymentsOnboardingPresenterAdaptor: CardPresentPaymentsOn private let readinessUseCase: CardPresentPaymentsReadinessUseCase - private let onboardingViewModel: CardPresentPaymentsOnboardingViewModel + private var onboardingViewModel: CardPresentPaymentsOnboardingViewModel { + CardPresentPaymentsOnboardingViewModel(useCase: onboardingUseCase) + } private var readinessSubscription: AnyCancellable? @@ -20,7 +22,6 @@ final class CardPresentPaymentsOnboardingPresenterAdaptor: CardPresentPaymentsOn init(stores: StoresManager = ServiceLocator.stores) { onboardingUseCase = CardPresentPaymentsOnboardingUseCase(stores: stores) readinessUseCase = CardPresentPaymentsReadinessUseCase(onboardingUseCase: onboardingUseCase, stores: stores) - onboardingViewModel = CardPresentPaymentsOnboardingViewModel(useCase: onboardingUseCase) onboardingScreenViewModelPublisher = onboardingScreenViewModelSubject.eraseToAnyPublisher() } diff --git a/WooCommerce/Classes/POS/Models/PointOfSaleAggregateModel.swift b/WooCommerce/Classes/POS/Models/PointOfSaleAggregateModel.swift index e49ebcdd6e9..0b5ce375495 100644 --- a/WooCommerce/Classes/POS/Models/PointOfSaleAggregateModel.swift +++ b/WooCommerce/Classes/POS/Models/PointOfSaleAggregateModel.swift @@ -160,15 +160,15 @@ extension PointOfSaleAggregateModel { func connectCardReader() { analytics.track(.pointOfSaleCardReaderConnectionTapped) - Task { @MainActor in - _ = try await cardPresentPaymentService.connectReader(using: .bluetooth) + Task { @MainActor [weak self] in + _ = try await self?.cardPresentPaymentService.connectReader(using: .bluetooth) } } func disconnectCardReader() { analytics.track(.cardReaderDisconnectTapped) - Task { @MainActor in - await cardPresentPaymentService.disconnectReader() + Task { @MainActor [weak self] in + await self?.cardPresentPaymentService.disconnectReader() } } diff --git a/WooCommerce/Classes/POS/Presentation/PointOfSaleDashboardView.swift b/WooCommerce/Classes/POS/Presentation/PointOfSaleDashboardView.swift index 4e47176ab79..36940690681 100644 --- a/WooCommerce/Classes/POS/Presentation/PointOfSaleDashboardView.swift +++ b/WooCommerce/Classes/POS/Presentation/PointOfSaleDashboardView.swift @@ -133,8 +133,8 @@ private extension PointOfSaleDashboardView { } func paymentsOnboardingView(from onboardingViewModel: CardPresentPaymentsOnboardingViewModel) -> some View { - onboardingViewModel.showSupport = { - posModel.cancelCardPaymentsOnboarding() + onboardingViewModel.showSupport = { [weak posModel] in + posModel?.cancelCardPaymentsOnboarding() showSupport = true } return PointOfSaleCardPresentPaymentOnboardingView(viewModel: .init(onboardingViewModel: onboardingViewModel, diff --git a/WooCommerce/Classes/ViewRelated/Dashboard/Settings/In-Person Payments/CardPresentPaymentsOnboardingViewModel.swift b/WooCommerce/Classes/ViewRelated/Dashboard/Settings/In-Person Payments/CardPresentPaymentsOnboardingViewModel.swift index b45212dbf38..c077b617d30 100644 --- a/WooCommerce/Classes/ViewRelated/Dashboard/Settings/In-Person Payments/CardPresentPaymentsOnboardingViewModel.swift +++ b/WooCommerce/Classes/ViewRelated/Dashboard/Settings/In-Person Payments/CardPresentPaymentsOnboardingViewModel.swift @@ -33,7 +33,9 @@ final class CardPresentPaymentsOnboardingViewModel: ObservableObject, PaymentSet self?.updateLearnMoreURL(state: result) self?.reevaluateShouldShow(onboardingState: result) }) - .handleEvents(receiveOutput: trackState(_:)) + .handleEvents(receiveOutput: { [weak self] state in + self?.trackState(state) + }) .assign(to: &$state) }