Skip to content

Commit 6f0230e

Browse files
committed
Start syncs after updating catalog eligibility
1 parent 8c1fe2c commit 6f0230e

File tree

2 files changed

+14
-7
lines changed

2 files changed

+14
-7
lines changed

WooCommerce/Classes/POS/TabBar/POSTabCoordinator.swift

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ final class POSTabCoordinator {
4242
private let pushNotesManager: PushNotesManager
4343
private let eligibilityChecker: POSEntryPointEligibilityCheckerProtocol
4444

45+
private lazy var posSyncDispatcher = ForegroundPOSCatalogSyncDispatcher()
46+
4547
/// Local catalog eligibility service - created asynchronously during init
4648
private(set) var localCatalogEligibilityService: POSLocalCatalogEligibilityServiceProtocol?
4749

@@ -134,18 +136,27 @@ final class POSTabCoordinator {
134136
/// Only checks eligibility if the POS tab is visible
135137
func updatePOSEligibility(isPOSTabVisible: Bool) {
136138
Task { @MainActor [weak self] in
137-
guard let self, let service = self.localCatalogEligibilityService else { return }
139+
guard let self, let catalogEligibilityService = self.localCatalogEligibilityService else { return }
138140

139141
// If POS tab is not visible, mark as ineligible
140142
guard isPOSTabVisible else {
141-
try await service.updatePOSEligibility(isEligible: false, for: siteID)
143+
try await catalogEligibilityService.updatePOSEligibility(isEligible: false,
144+
for: siteID)
145+
await posSyncDispatcher.stop()
142146
return
143147
}
144148

145149
// Check actual POS eligibility using the eligibility checker
146150
let eligibilityState = await eligibilityChecker.checkEligibility()
147151
let isPOSEligible = eligibilityState == .eligible
148-
try await service.updatePOSEligibility(isEligible: isPOSEligible, for: siteID)
152+
do {
153+
try await catalogEligibilityService.updatePOSEligibility(isEligible: isPOSEligible,
154+
for: siteID)
155+
// Only start syncs after we've updated the catalog eligibility.
156+
await isPOSEligible ? posSyncDispatcher.start() : posSyncDispatcher.stop()
157+
} catch {
158+
await posSyncDispatcher.stop()
159+
}
149160
}
150161
}
151162

WooCommerce/Classes/ViewRelated/MainTabBarController.swift

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,6 @@ final class MainTabBarController: UITabBarController {
152152

153153
private var posTabVisibilityChecker: POSTabVisibilityCheckerProtocol?
154154
private var posEligibilityCheckTask: Task<Void, Never>?
155-
private lazy var posSyncDispatcher = ForegroundPOSCatalogSyncDispatcher()
156155

157156
/// periphery: ignore - keeping strong ref of the checker to keep its async task alive
158157
private var bookingsEligibilityChecker: BookingsTabEligibilityCheckerProtocol?
@@ -752,9 +751,6 @@ private extension MainTabBarController {
752751

753752
// Update POS eligibility - coordinator will check actual eligibility if tab is visible
754753
posTabCoordinator?.updatePOSEligibility(isPOSTabVisible: isPOSTabVisible)
755-
756-
// Begin foreground synchronization if POS tab becomes visible
757-
await isPOSTabVisible ? posSyncDispatcher.start() : posSyncDispatcher.stop()
758754
}
759755
}
760756

0 commit comments

Comments
 (0)