Skip to content

Commit 581525c

Browse files
[CIAB] Distinguish between Garden/CIAB and regular sites (#16095)
2 parents 3914fc5 + 8e285df commit 581525c

File tree

3 files changed

+107
-0
lines changed

3 files changed

+107
-0
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
/// Describes the feature set affected by CIAB sites
2+
/// By the moment of introduction the features aren't supported by CIAB sites
3+
4+
/// periphery: ignore:all - Used through `.allCases`
5+
enum CIABAffectedFeature: CaseIterable {
6+
case blaze
7+
case payments
8+
case splitShipments
9+
case groupedProducts
10+
case variableProducts
11+
case giftCardEditing
12+
case productsStockDashboardCard
13+
}
14+
15+
extension CIABAffectedFeature {
16+
/// Defines a collection of existing app features unsupported in CIAB sites
17+
/// In case if a certain feature is reconsidered and decided to be supported in CIAB
18+
/// just remove it from the collection
19+
static var unsupportedFeatures: [CIABAffectedFeature] {
20+
return CIABAffectedFeature.allCases
21+
}
22+
}
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
/// periphery: ignore:all - Will be used in upcoming PRs
2+
3+
import Foundation
4+
import Yosemite
5+
6+
protocol CIABEligibilityCheckerProtocol {
7+
var isCurrentSiteCIAB: Bool { get }
8+
9+
func isSiteCIAB(_ site: Site) -> Bool
10+
11+
func isFeatureSupportedForCurrentSite(_ feature: CIABAffectedFeature) -> Bool
12+
func isFeatureSupported(_ feature: CIABAffectedFeature, for site: Site) -> Bool
13+
}
14+
15+
final class CIABEligibilityChecker {
16+
private let stores: StoresManager
17+
18+
init(stores: StoresManager = ServiceLocator.stores) {
19+
self.stores = stores
20+
}
21+
}
22+
23+
extension CIABEligibilityChecker: CIABEligibilityCheckerProtocol {
24+
var isCurrentSiteCIAB: Bool {
25+
guard let currentSite = stores.sessionManager.defaultSite else {
26+
return false
27+
}
28+
return isSiteCIAB(currentSite)
29+
}
30+
31+
func isSiteCIAB(_ site: Site) -> Bool {
32+
/// Temp logic
33+
/// If site name contains either `garden` or `ciab` then it's considered a CIAB site
34+
return isCIABSupportedForBuildEnvironment && CIABUnlockingSiteNameSubstrings.allCases.contains {
35+
site.name.lowercased().contains($0.rawValue)
36+
}
37+
}
38+
39+
func isFeatureSupportedForCurrentSite(_ feature: CIABAffectedFeature) -> Bool {
40+
return !isCurrentSiteCIAB || !CIABAffectedFeature.unsupportedFeatures.contains(feature)
41+
}
42+
43+
func isFeatureSupported(
44+
_ feature: CIABAffectedFeature,
45+
for site: Site
46+
) -> Bool {
47+
return !isSiteCIAB(site) || !CIABAffectedFeature.unsupportedFeatures.contains(feature)
48+
}
49+
}
50+
51+
// MARK: - Temporary constants for CIAB identifying logic
52+
53+
fileprivate extension CIABEligibilityChecker {
54+
enum CIABUnlockingSiteNameSubstrings: String, CaseIterable {
55+
case garden
56+
case ciab
57+
}
58+
}
59+
60+
// MARK: - Temporary environment checks
61+
62+
import enum WooFoundationCore.BuildConfiguration
63+
64+
private extension CIABEligibilityChecker {
65+
var isCIABSupportedForBuildEnvironment: Bool {
66+
let buildConfig = BuildConfiguration.current
67+
return buildConfig == .localDeveloper || buildConfig == .alpha
68+
}
69+
}

WooCommerce/WooCommerce.xcodeproj/project.pbxproj

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1243,6 +1243,8 @@
12431243
2DB891692E27F6200001B175 /* OrderListCellViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DB891682E27F61C0001B175 /* OrderListCellViewModel.swift */; };
12441244
2DB8916B2E27F6D90001B175 /* OrderListCellViewModel+Localizations.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DB8916A2E27F6CE0001B175 /* OrderListCellViewModel+Localizations.swift */; };
12451245
2DB8916E2E27F7840001B175 /* OrderListCellViewModel+Localizations.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DB8916A2E27F6CE0001B175 /* OrderListCellViewModel+Localizations.swift */; };
1246+
2DCB54FA2E6AE8E100621F90 /* CIABEligibilityChecker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DCB54F92E6AE8D800621F90 /* CIABEligibilityChecker.swift */; };
1247+
2DCB54FC2E6AFE6A00621F90 /* CIABAffectedFeature.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DCB54FB2E6AFE6900621F90 /* CIABAffectedFeature.swift */; };
12461248
2DF0D1BC2E2907C100F8995C /* MarkOrderAsReadUseCase+Woo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DB88DA32E27DD790001B175 /* MarkOrderAsReadUseCase+Woo.swift */; };
12471249
310D1B482734919E001D55B4 /* InPersonPaymentsLiveSiteInTestModeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 310D1B472734919E001D55B4 /* InPersonPaymentsLiveSiteInTestModeView.swift */; };
12481250
311237EE2714DA240033C44E /* CardPresentModalDisplayMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 311237ED2714DA240033C44E /* CardPresentModalDisplayMessage.swift */; };
@@ -4430,6 +4432,8 @@
44304432
2DB891652E27F07E0001B175 /* Address+Shared.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Address+Shared.swift"; sourceTree = "<group>"; };
44314433
2DB891682E27F61C0001B175 /* OrderListCellViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OrderListCellViewModel.swift; sourceTree = "<group>"; };
44324434
2DB8916A2E27F6CE0001B175 /* OrderListCellViewModel+Localizations.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "OrderListCellViewModel+Localizations.swift"; sourceTree = "<group>"; };
4435+
2DCB54F92E6AE8D800621F90 /* CIABEligibilityChecker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CIABEligibilityChecker.swift; sourceTree = "<group>"; };
4436+
2DCB54FB2E6AFE6900621F90 /* CIABAffectedFeature.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CIABAffectedFeature.swift; sourceTree = "<group>"; };
44334437
310D1B472734919E001D55B4 /* InPersonPaymentsLiveSiteInTestModeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InPersonPaymentsLiveSiteInTestModeView.swift; sourceTree = "<group>"; };
44344438
311237ED2714DA240033C44E /* CardPresentModalDisplayMessage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardPresentModalDisplayMessage.swift; sourceTree = "<group>"; };
44354439
311D21E7264AEDB900102316 /* CardPresentModalScanningForReader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardPresentModalScanningForReader.swift; sourceTree = "<group>"; };
@@ -9051,6 +9055,15 @@
90519055
path = Images;
90529056
sourceTree = "<group>";
90539057
};
9058+
2DCB54F82E6AE8C900621F90 /* CIAB */ = {
9059+
isa = PBXGroup;
9060+
children = (
9061+
2DCB54FB2E6AFE6900621F90 /* CIABAffectedFeature.swift */,
9062+
2DCB54F92E6AE8D800621F90 /* CIABEligibilityChecker.swift */,
9063+
);
9064+
path = CIAB;
9065+
sourceTree = "<group>";
9066+
};
90549067
318853452639FE7F00F66A9C /* CardReadersV2 */ = {
90559068
isa = PBXGroup;
90569069
children = (
@@ -10870,6 +10883,7 @@
1087010883
B56DB3F12049C0B800D4AA8E /* Classes */ = {
1087110884
isa = PBXGroup;
1087210885
children = (
10886+
2DCB54F82E6AE8C900621F90 /* CIAB */,
1087310887
DEB387932C2E7A540025256E /* GoogleAds */,
1087410888
20AE33C32B0510AD00527B60 /* Destinations */,
1087510889
B9F3DAAB29BB714900DDD545 /* App Intents */,
@@ -15342,6 +15356,7 @@
1534215356
029D025E2C231F2A00CB1E75 /* PointOfSaleCardPresentPaymentOptionalReaderUpdateInProgressView.swift in Sources */,
1534315357
B95A45E92A77AE2C0073A91F /* CustomerSelectorViewModel.swift in Sources */,
1534415358
024DF3072372C18D006658FE /* AztecUIConfigurator.swift in Sources */,
15359+
2DCB54FC2E6AFE6A00621F90 /* CIABAffectedFeature.swift in Sources */,
1534515360
EE1B07F32C81CB4B006D9769 /* BlazeLocalNotificationScheduler.swift in Sources */,
1534615361
DE02ABBE2B578D0E008E0AC4 /* CreditCardType.swift in Sources */,
1534715362
020BE74823B05CF2007FE54C /* ProductInventoryEditableData.swift in Sources */,
@@ -16235,6 +16250,7 @@
1623516250
029F29FA24D93E9E004751CA /* EditableProductModel.swift in Sources */,
1623616251
027179E22C08817F0049F0BD /* CardPresentPaymentService.swift in Sources */,
1623716252
20D3D4332C65E59B004CE6E3 /* OrdersRoute.swift in Sources */,
16253+
2DCB54FA2E6AE8E100621F90 /* CIABEligibilityChecker.swift in Sources */,
1623816254
31FC8CE927B476BA004B9456 /* CardReaderSettingsResultsControllers.swift in Sources */,
1623916255
022266BC2AE7707000614F34 /* ConfigurableBundleItemViewModel.swift in Sources */,
1624016256
D449C52926DFBCCC00D75B02 /* WhatsNewHostingController.swift in Sources */,

0 commit comments

Comments
 (0)