Skip to content

Commit 68abe4b

Browse files
authored
POS: Fix retain cycles related to payment onboarding view (#15083)
2 parents e05a162 + 43c2942 commit 68abe4b

File tree

4 files changed

+12
-9
lines changed

4 files changed

+12
-9
lines changed

WooCommerce/Classes/POS/Card Present Payments/CardPresentPaymentOnboardingAdaptor.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ final class CardPresentPaymentsOnboardingPresenterAdaptor: CardPresentPaymentsOn
99

1010
private let readinessUseCase: CardPresentPaymentsReadinessUseCase
1111

12-
private let onboardingViewModel: CardPresentPaymentsOnboardingViewModel
12+
private var onboardingViewModel: CardPresentPaymentsOnboardingViewModel {
13+
CardPresentPaymentsOnboardingViewModel(useCase: onboardingUseCase)
14+
}
1315

1416
private var readinessSubscription: AnyCancellable?
1517

@@ -20,7 +22,6 @@ final class CardPresentPaymentsOnboardingPresenterAdaptor: CardPresentPaymentsOn
2022
init(stores: StoresManager = ServiceLocator.stores) {
2123
onboardingUseCase = CardPresentPaymentsOnboardingUseCase(stores: stores)
2224
readinessUseCase = CardPresentPaymentsReadinessUseCase(onboardingUseCase: onboardingUseCase, stores: stores)
23-
onboardingViewModel = CardPresentPaymentsOnboardingViewModel(useCase: onboardingUseCase)
2425
onboardingScreenViewModelPublisher = onboardingScreenViewModelSubject.eraseToAnyPublisher()
2526
}
2627

WooCommerce/Classes/POS/Models/PointOfSaleAggregateModel.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -160,15 +160,15 @@ extension PointOfSaleAggregateModel {
160160

161161
func connectCardReader() {
162162
analytics.track(.pointOfSaleCardReaderConnectionTapped)
163-
Task { @MainActor in
164-
_ = try await cardPresentPaymentService.connectReader(using: .bluetooth)
163+
Task { @MainActor [weak self] in
164+
_ = try await self?.cardPresentPaymentService.connectReader(using: .bluetooth)
165165
}
166166
}
167167

168168
func disconnectCardReader() {
169169
analytics.track(.cardReaderDisconnectTapped)
170-
Task { @MainActor in
171-
await cardPresentPaymentService.disconnectReader()
170+
Task { @MainActor [weak self] in
171+
await self?.cardPresentPaymentService.disconnectReader()
172172
}
173173
}
174174

WooCommerce/Classes/POS/Presentation/PointOfSaleDashboardView.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,8 +133,8 @@ private extension PointOfSaleDashboardView {
133133
}
134134

135135
func paymentsOnboardingView(from onboardingViewModel: CardPresentPaymentsOnboardingViewModel) -> some View {
136-
onboardingViewModel.showSupport = {
137-
posModel.cancelCardPaymentsOnboarding()
136+
onboardingViewModel.showSupport = { [weak posModel] in
137+
posModel?.cancelCardPaymentsOnboarding()
138138
showSupport = true
139139
}
140140
return PointOfSaleCardPresentPaymentOnboardingView(viewModel: .init(onboardingViewModel: onboardingViewModel,

WooCommerce/Classes/ViewRelated/Dashboard/Settings/In-Person Payments/CardPresentPaymentsOnboardingViewModel.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@ final class CardPresentPaymentsOnboardingViewModel: ObservableObject, PaymentSet
3333
self?.updateLearnMoreURL(state: result)
3434
self?.reevaluateShouldShow(onboardingState: result)
3535
})
36-
.handleEvents(receiveOutput: trackState(_:))
36+
.handleEvents(receiveOutput: { [weak self] state in
37+
self?.trackState(state)
38+
})
3739
.assign(to: &$state)
3840
}
3941

0 commit comments

Comments
 (0)