diff --git a/WooCommerce/Classes/ViewRelated/Dashboard/Settings/Beta features/BetaFeaturesConfigurationViewModel.swift b/WooCommerce/Classes/ViewRelated/Dashboard/Settings/Beta features/BetaFeaturesConfigurationViewModel.swift index 3ea7649270f..3e8d9d16185 100644 --- a/WooCommerce/Classes/ViewRelated/Dashboard/Settings/Beta features/BetaFeaturesConfigurationViewModel.swift +++ b/WooCommerce/Classes/ViewRelated/Dashboard/Settings/Beta features/BetaFeaturesConfigurationViewModel.swift @@ -6,42 +6,22 @@ final class BetaFeaturesConfigurationViewModel: ObservableObject { @Published private(set) var availableFeatures: [BetaFeature] = [] private let appSettings: GeneralAppSettingsStorage private let featureFlagService: FeatureFlagService - private let posEligibilityChecker: POSEligibilityCheckerProtocol init(appSettings: GeneralAppSettingsStorage = ServiceLocator.generalAppSettings, - featureFlagService: FeatureFlagService = ServiceLocator.featureFlagService, - posEligibilityChecker: POSEligibilityCheckerProtocol = POSEligibilityChecker( - siteSettings: ServiceLocator.selectedSiteSettings, - currencySettings: ServiceLocator.currencySettings, - featureFlagService: ServiceLocator.featureFlagService - )) { + featureFlagService: FeatureFlagService = ServiceLocator.featureFlagService) { self.appSettings = appSettings self.featureFlagService = featureFlagService - self.posEligibilityChecker = posEligibilityChecker - observePOSEligibilityForAvailableFeatures() + availableFeatures = BetaFeature.allCases.filter { betaFeature in + switch betaFeature { + case .viewAddOns: + return true + case .inAppPurchases: + return featureFlagService.isFeatureFlagEnabled(.inAppPurchasesDebugMenu) + } + } } func isOn(feature: BetaFeature) -> Binding { appSettings.betaFeatureEnabledBinding(feature) } } - -private extension BetaFeaturesConfigurationViewModel { - func observePOSEligibilityForAvailableFeatures() { - posEligibilityChecker.isEligible - .map { [weak self] isEligibleForPOS in - guard let self else { - return [] - } - return BetaFeature.allCases.filter { betaFeature in - switch betaFeature { - case .viewAddOns: - return true - case .inAppPurchases: - return self.featureFlagService.isFeatureFlagEnabled(.inAppPurchasesDebugMenu) - } - } - } - .assign(to: &$availableFeatures) - } -} diff --git a/WooCommerce/WooCommerceTests/Model/BetaFeaturesConfigurationViewModelTests.swift b/WooCommerce/WooCommerceTests/Model/BetaFeaturesConfigurationViewModelTests.swift index 747726a67ee..7d790a7e153 100644 --- a/WooCommerce/WooCommerceTests/Model/BetaFeaturesConfigurationViewModelTests.swift +++ b/WooCommerce/WooCommerceTests/Model/BetaFeaturesConfigurationViewModelTests.swift @@ -16,22 +16,9 @@ final class BetaFeaturesConfigurationViewModelTests: XCTestCase { func test_availableFeatures_include_viewAddOns() { // Given - let viewModel = BetaFeaturesConfigurationViewModel(appSettings: appSettings, - posEligibilityChecker: MockPOSEligibilityChecker(isEligibleValue: true)) + let viewModel = BetaFeaturesConfigurationViewModel(appSettings: appSettings) // Then XCTAssertTrue(viewModel.availableFeatures.contains(.viewAddOns)) } } - -private final class MockPOSEligibilityChecker: POSEligibilityCheckerProtocol { - @Published var isEligibleValue: Bool - - init(isEligibleValue: Bool) { - self.isEligibleValue = isEligibleValue - } - - var isEligible: AnyPublisher { - $isEligibleValue.eraseToAnyPublisher() - } -}