Skip to content

Commit 8e51014

Browse files
committed
Update ineligible UI when feature switch is disabled to enable & retry.
1 parent 097bccf commit 8e51014

File tree

2 files changed

+33
-12
lines changed

2 files changed

+33
-12
lines changed

WooCommerce/Classes/POS/TabBar/POSIneligibleView.swift

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ struct POSIneligibleView: View {
5151
}
5252
}
5353
} label: {
54-
Text(Localization.refreshEligibility)
54+
Text(reason.refreshEligibilityTitle)
5555
}
5656
.buttonStyle(POSFilledButtonStyle(size: .normal, isLoading: isLoading))
5757
.renderedIf(reason.shouldShowRetryButton)
@@ -91,9 +91,9 @@ struct POSIneligibleView: View {
9191
value: "Install and activate the WooCommerce plugin from your WordPress admin.",
9292
comment: "Suggestion for missing WooCommerce plugin: install plugin")
9393
case .featureSwitchDisabled:
94-
return NSLocalizedString("pos.ineligible.suggestion.featureSwitchDisabled",
94+
return NSLocalizedString("pos.ineligible.suggestion.featureSwitchDisabled.2",
9595
value: "Point of Sale must be enabled to proceed. " +
96-
"Please enable the POS feature from your WordPress admin under WooCommerce settings > Advanced > Features.",
96+
"You can enable the POS feature below or from your WordPress admin under WooCommerce settings > Advanced > Features.",
9797
comment: "Suggestion for disabled feature switch: enable feature in WooCommerce settings")
9898
case let .unsupportedCurrency(supportedCurrencies):
9999
let currencyList = supportedCurrencies.map { $0.rawValue }
@@ -127,12 +127,6 @@ private extension POSIneligibleView {
127127
comment: "Title shown in POS ineligible view"
128128
)
129129

130-
static let refreshEligibility = NSLocalizedString(
131-
"pos.ineligible.refresh.button.title",
132-
value: "Retry",
133-
comment: "Button title to refresh POS eligibility check"
134-
)
135-
136130
static let dismiss = NSLocalizedString(
137131
"pos.ineligible.dismiss.button.title",
138132
value: "Exit POS",
@@ -156,6 +150,28 @@ private extension POSIneligibleReason {
156150
return true
157151
}
158152
}
153+
154+
var refreshEligibilityTitle: String {
155+
switch self {
156+
case .featureSwitchDisabled:
157+
return NSLocalizedString(
158+
"pos.ineligible.enable.pos.feature.and.refresh.button.title",
159+
value: "Enable POS & Retry",
160+
comment: "Button title to enable the POS feature switch and refresh POS eligibility check"
161+
)
162+
case .unsupportedIOSVersion,
163+
.unsupportedWooCommerceVersion,
164+
.siteSettingsNotAvailable,
165+
.wooCommercePluginNotFound,
166+
.unsupportedCurrency,
167+
.selfDeallocated:
168+
return NSLocalizedString(
169+
"pos.ineligible.refresh.button.title",
170+
value: "Retry",
171+
comment: "Button title to refresh POS eligibility check"
172+
)
173+
}
174+
}
159175
}
160176

161177
#if DEBUG

WooCommerce/Classes/ViewRelated/Dashboard/Settings/POS/POSTabEligibilityChecker.swift

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ import enum Yosemite.FeatureFlagAction
1313
import enum Yosemite.SettingAction
1414
import protocol Yosemite.POSSystemStatusServiceProtocol
1515
import class Yosemite.POSSystemStatusService
16+
import protocol Yosemite.POSSiteSettingServiceProtocol
17+
import class Yosemite.POSSiteSettingService
18+
import enum Networking.SiteSettingsFeature
1619

1720
/// Represents the reasons why a site may be ineligible for POS.
1821
enum POSIneligibleReason: Equatable {
@@ -50,6 +53,7 @@ final class POSTabEligibilityChecker: POSEntryPointEligibilityCheckerProtocol {
5053
private let stores: StoresManager
5154
private let featureFlagService: FeatureFlagService
5255
private let systemStatusService: POSSystemStatusServiceProtocol
56+
private let siteSettingService: POSSiteSettingServiceProtocol
5357

5458
init(siteID: Int64,
5559
userInterfaceIdiom: UIUserInterfaceIdiom = UIDevice.current.userInterfaceIdiom,
@@ -58,14 +62,16 @@ final class POSTabEligibilityChecker: POSEntryPointEligibilityCheckerProtocol {
5862
stores: StoresManager = ServiceLocator.stores,
5963
featureFlagService: FeatureFlagService = ServiceLocator.featureFlagService,
6064
systemStatusService: POSSystemStatusServiceProtocol = POSSystemStatusService(credentials: ServiceLocator.stores.sessionManager.defaultCredentials,
61-
storageManager: ServiceLocator.storageManager)) {
65+
storageManager: ServiceLocator.storageManager),
66+
siteSettingService: POSSiteSettingServiceProtocol = POSSiteSettingService(credentials: ServiceLocator.stores.sessionManager.defaultCredentials)) {
6267
self.siteID = siteID
6368
self.userInterfaceIdiom = userInterfaceIdiom
6469
self.siteSettings = siteSettings
6570
self.eligibilityService = eligibilityService
6671
self.stores = stores
6772
self.featureFlagService = featureFlagService
6873
self.systemStatusService = systemStatusService
74+
self.siteSettingService = siteSettingService
6975
}
7076

7177
/// Checks the initial visibility of the POS tab without dependance on network requests.
@@ -133,8 +139,7 @@ final class POSTabEligibilityChecker: POSEntryPointEligibilityCheckerProtocol {
133139
case .unsupportedWooCommerceVersion, .wooCommercePluginNotFound:
134140
return await checkEligibility()
135141
case .featureSwitchDisabled:
136-
// TODO: WOOMOB-759 - enable feature switch via API and check eligibility again
137-
// For now, just checks eligibility again.
142+
_ = try await siteSettingService.setFeature(siteID: siteID, feature: .pointOfSale, enabled: true)
138143
return await checkEligibility()
139144
case .selfDeallocated:
140145
return await checkEligibility()

0 commit comments

Comments
 (0)