Skip to content

Commit 7d9c5ea

Browse files
committed
Remove ServiceLocator.featureFlagService dependency from POS
1 parent 479f906 commit 7d9c5ea

File tree

13 files changed

+85
-41
lines changed

13 files changed

+85
-41
lines changed

WooCommerce/Classes/POS/Controllers/POSEntryPointController.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ import protocol Experiments.FeatureFlagService
55
@Observable final class POSEntryPointController {
66
private(set) var eligibilityState: POSEligibilityState?
77
private let posEligibilityChecker: POSEntryPointEligibilityCheckerProtocol
8-
private let featureFlagService: FeatureFlagService
8+
private let featureFlagService: POSFeatureFlagProviding
99

1010
init(eligibilityChecker: POSEntryPointEligibilityCheckerProtocol,
11-
featureFlagService: FeatureFlagService = ServiceLocator.featureFlagService) {
11+
featureFlagService: POSFeatureFlagProviding) {
1212
self.posEligibilityChecker = eligibilityChecker
1313
self.featureFlagService = featureFlagService
1414

WooCommerce/Classes/POS/Controllers/PointOfSaleOrderController.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ protocol PointOfSaleOrderControllerProtocol {
4444
receiptService: POSReceiptServiceProtocol,
4545
currencySettings: CurrencySettings,
4646
analytics: POSAnalyticsProviding,
47-
featureFlagService: FeatureFlagService = ServiceLocator.featureFlagService,
47+
featureFlagService: POSFeatureFlagProviding,
4848
pluginsService: PluginsServiceProtocol = PluginsService(storageManager: ServiceLocator.storageManager),
4949
celebration: PaymentCaptureCelebrationProtocol = PaymentCaptureCelebration()) {
5050
self.orderService = orderService
@@ -64,7 +64,7 @@ protocol PointOfSaleOrderControllerProtocol {
6464
private let celebration: PaymentCaptureCelebrationProtocol
6565
private let storeCurrency: CurrencyCode
6666
private let analytics: POSAnalyticsProviding
67-
private let featureFlagService: FeatureFlagService
67+
private let featureFlagService: POSFeatureFlagProviding
6868
private let pluginsService: PluginsServiceProtocol
6969

7070
private(set) var orderState: PointOfSaleInternalOrderState = .idle

WooCommerce/Classes/POS/Presentation/Barcode Scanning/BarcodeScanningModifier.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,10 @@ struct BarcodeScanningModifier: ViewModifier {
99
/// Callback that is triggered when a barcode is successfully scanned
1010
let onScan: (Result<String, HIDBarcodeParserError>) -> Void
1111

12+
@Environment(\.posFeatureFlags) private var featureFlags
13+
1214
private var isBarcodeScani1FeatureEnabled: Bool {
13-
ServiceLocator.featureFlagService.isFeatureFlagEnabled(.pointOfSaleBarcodeScanningi1)
15+
featureFlags.isFeatureFlagEnabled(.pointOfSaleBarcodeScanningi1)
1416
}
1517

1618
func body(content: Content) -> some View {

WooCommerce/Classes/POS/Presentation/Item Selector/SimpleProductCardView.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,14 @@ struct SimpleProductCardView: View {
66

77
@ScaledMetric private var scale: CGFloat = 1.0
88
@Environment(\.dynamicTypeSize) var dynamicTypeSize
9+
@Environment(\.posFeatureFlags) private var featureFlags
910

1011
private var dimension: CGFloat {
1112
min(Constants.productCardSize * scale, Constants.maximumProductCardSize)
1213
}
1314

1415
private var shouldShowProductLabels: Bool {
15-
ServiceLocator.featureFlagService.isFeatureFlagEnabled(.inventoryProductLabelsInPOS)
16+
featureFlags.isFeatureFlagEnabled(.inventoryProductLabelsInPOS)
1617
}
1718

1819
init(product: POSSimpleProduct) {

WooCommerce/Classes/POS/Presentation/ItemListView.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ struct ItemListView: View {
99

1010
@Environment(PointOfSaleAggregateModel.self) private var posModel
1111
@Environment(\.keyboardObserver) private var keyboardObserver
12+
@Environment(\.posFeatureFlags) private var featureFlags
1213
@EnvironmentObject var modalManager: POSModalManager
1314

1415
@Binding var selectedItemListType: ItemListType
@@ -56,11 +57,11 @@ struct ItemListView: View {
5657
@State private var didFinishSearch = true
5758

5859
private var isBarcodeScani1FeatureEnabled: Bool {
59-
ServiceLocator.featureFlagService.isFeatureFlagEnabled(.pointOfSaleBarcodeScanningi1)
60+
featureFlags.isFeatureFlagEnabled(.pointOfSaleBarcodeScanningi1)
6061
}
6162

6263
private var isBarcodeScanSimulatorEnabled: Bool {
63-
ServiceLocator.featureFlagService.isFeatureFlagEnabled(.showPointOfSaleBarcodeSimulator)
64+
featureFlags.isFeatureFlagEnabled(.showPointOfSaleBarcodeSimulator)
6465
}
6566

6667
private var isAddingCouponAllowed: Bool {

WooCommerce/Classes/POS/Presentation/POSFloatingControlView.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ struct POSFloatingControlView: View {
66
@Environment(PointOfSaleAggregateModel.self) private var posModel
77
@Environment(\.horizontalSizeClass) private var horizontalSizeClass
88
@Environment(\.posAnalytics) private var analytics
9+
@Environment(\.posFeatureFlags) private var featureFlags
910
@Binding private var showExitPOSModal: Bool
1011
@Binding private var showSupport: Bool
1112
@Binding private var showDocumentation: Bool
@@ -58,7 +59,7 @@ struct POSFloatingControlView: View {
5859
title: { Text(Localization.productRestrictionsInfo) },
5960
icon: { Image(systemName: "magnifyingglass") })
6061
}
61-
if ServiceLocator.featureFlagService.isFeatureFlagEnabled(.pointOfSaleBarcodeScanningi1) {
62+
if featureFlags.isFeatureFlagEnabled(.pointOfSaleBarcodeScanningi1) {
6263
Button {
6364
showBarcodeScanningModal = true
6465
analytics.track(.pointOfSaleBarcodeScanningMenuItemTapped)
@@ -94,7 +95,7 @@ struct POSFloatingControlView: View {
9495
SimpleProductsOnlyInformation(isPresented: $showProductRestrictionsModal)
9596
}
9697
.posModal(isPresented: $showBarcodeScanningModal) {
97-
if ServiceLocator.featureFlagService.isFeatureFlagEnabled(.pointOfSaleBarcodeScanningi2) {
98+
if featureFlags.isFeatureFlagEnabled(.pointOfSaleBarcodeScanningi2) {
9899
PointOfSaleBarcodeScannerSetup(isPresented: $showBarcodeScanningModal, analytics: analytics)
99100
} else {
100101
PointOfSaleBarcodeScannerInformationModal(isPresented: $showBarcodeScanningModal)

WooCommerce/Classes/POS/Presentation/PointOfSaleEntryPointView.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ struct PointOfSaleEntryPointView: View {
4747
self.searchHistoryService = searchHistoryService
4848
self.popularPurchasableItemsController = popularPurchasableItemsController
4949
self.barcodeScanService = barcodeScanService
50-
self.posEntryPointController = POSEntryPointController(eligibilityChecker: posEligibilityChecker)
50+
self.posEntryPointController = POSEntryPointController(eligibilityChecker: posEligibilityChecker,
51+
featureFlagService: services.featureFlags)
5152
self.services = services
5253
}
5354

@@ -81,6 +82,8 @@ struct PointOfSaleEntryPointView: View {
8182
.environmentObject(posModalManager)
8283
.environment(\.posAnalytics, services.analytics)
8384
.environment(\.posCurrencySettings, services.currency)
85+
.environment(\.posStores, services.stores)
86+
.environment(\.posFeatureFlags, services.featureFlags)
8487
.injectKeyboardObserver()
8588
.onAppear {
8689
onPointOfSaleModeActiveStateChange(true)

WooCommerce/Classes/POS/TabBar/POSTabCoordinator.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,8 @@ private extension POSTabCoordinator {
130130
orderController: PointOfSaleOrderController(orderService: orderService,
131131
receiptService: receiptService,
132132
currencySettings: serviceAdaptor.currency,
133-
analytics: serviceAdaptor.analytics),
133+
analytics: serviceAdaptor.analytics,
134+
featureFlagService: serviceAdaptor.featureFlags),
134135
collectOrderPaymentAnalyticsTracker: collectOrderPaymentAnalyticsTracker,
135136
searchHistoryService: POSSearchHistoryService(siteID: siteID),
136137
popularPurchasableItemsController: PointOfSaleItemsController(

WooCommerce/Classes/POS/Utils/PreviewHelpers.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,8 @@ struct POSPreviewHelpers {
222222
barcodeScanService: PointOfSaleBarcodeScanServiceProtocol = PointOfSalePreviewBarcodeScanService()
223223
) -> PointOfSaleAggregateModel {
224224
return PointOfSaleAggregateModel(
225-
entryPointController: POSEntryPointController(eligibilityChecker: LegacyPOSTabEligibilityChecker(siteID: 0)),
225+
entryPointController: POSEntryPointController(eligibilityChecker: LegacyPOSTabEligibilityChecker(siteID: 0),
226+
featureFlagService: POSPreviewFeatureFlags()),
226227
itemsController: itemsController,
227228
purchasableItemsSearchController: purchasableItemsSearchController,
228229
couponsController: couponsController,

WooCommerce/WooCommerceTests/Mocks/MockFeatureFlagService.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
@testable import WooCommerce
22
import Experiments
33

4-
final class MockFeatureFlagService: FeatureFlagService {
4+
final class MockFeatureFlagService: FeatureFlagService, POSFeatureFlagProviding {
55
var isInboxOn: Bool
66
var isShowInboxCTAEnabled: Bool
77
var isUpdateOrderOptimisticallyOn: Bool

0 commit comments

Comments
 (0)