Skip to content

Commit f733077

Browse files
committed
Add default site fallback and non-fatal logging
1 parent 23d538f commit f733077

File tree

2 files changed

+57
-3
lines changed

2 files changed

+57
-3
lines changed

Modules/Sources/Yosemite/Stores/OrderCardPresentPaymentEligibilityStore.swift

Lines changed: 56 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
import Foundation
22
import protocol Storage.StorageManagerType
33
import protocol NetworkingCore.Network
4+
import protocol WooFoundation.CrashLogger
5+
import enum WooFoundation.SeverityLevel
46

57
/// Determines whether an order is eligible for card present payment or not
68
///
79
public final class OrderCardPresentPaymentEligibilityStore: Store {
810
private let currentSite: () -> Site?
11+
private let crashLogger: CrashLogger
912
private lazy var siteCIABEligibilityChecker: CIABEligibilityCheckerProtocol = CIABEligibilityChecker(
1013
currentSite: currentSite
1114
)
@@ -14,9 +17,11 @@ public final class OrderCardPresentPaymentEligibilityStore: Store {
1417
dispatcher: Dispatcher,
1518
storageManager: StorageManagerType,
1619
network: Network,
20+
crashLogger: CrashLogger,
1721
currentSite: @escaping () -> Site?
1822
) {
1923
self.currentSite = currentSite
24+
self.crashLogger = crashLogger
2025
super.init(
2126
dispatcher: dispatcher,
2227
storageManager: storageManager,
@@ -55,11 +60,27 @@ private extension OrderCardPresentPaymentEligibilityStore {
5560
cardPresentPaymentsConfiguration: CardPresentPaymentsConfiguration,
5661
onCompletion: (Result<Bool, Error>) -> Void) {
5762
let storage = storageManager.viewStorage
63+
let storageSite = storage.loadSite(siteID: siteID)?.toReadOnly()
64+
65+
let site: Site?
66+
if let storageSite {
67+
site = storageSite
68+
} else {
69+
/// Non - fatal fallback to `currentSite` when a storage site is missing
70+
site = currentSite()
71+
72+
logFailedStorageSiteRead(
73+
siteID: siteID,
74+
currentSiteFallbackValue: site
75+
)
76+
}
77+
78+
guard let site else {
79+
logFailedDefaultSiteRead(siteID: siteID)
5880

59-
guard let site = storage.loadSite(siteID: siteID)?.toReadOnly() else {
6081
return onCompletion(
6182
.failure(
62-
OrderIsEligibleForCardPresentPaymentError.siteNotFoundInStorage
83+
OrderIsEligibleForCardPresentPaymentError.failedToObtainSite
6384
)
6485
)
6586
}
@@ -83,10 +104,42 @@ private extension OrderCardPresentPaymentEligibilityStore {
83104
}
84105
}
85106

107+
/// Error logging
108+
private extension OrderCardPresentPaymentEligibilityStore {
109+
func logFailedStorageSiteRead(siteID: Int64, currentSiteFallbackValue: Site?) {
110+
let message = "OrderCardPresentPaymentEligibilityStore: Storage site missing, falling back to currentSite."
111+
112+
DDLogError(message)
113+
114+
crashLogger.logMessage(
115+
message,
116+
properties: [
117+
"siteID": siteID,
118+
"currentSiteID": currentSiteFallbackValue?.siteID ?? "empty",
119+
],
120+
level: .error
121+
)
122+
}
123+
124+
func logFailedDefaultSiteRead(siteID: Int64) {
125+
let message = "OrderCardPresentPaymentEligibilityStore: Current default site missing."
126+
127+
DDLogError(message)
128+
129+
crashLogger.logMessage(
130+
"OrderCardPresentPaymentEligibilityStore: Current default site missing.",
131+
properties: [
132+
"requestedSiteID": siteID
133+
],
134+
level: .error
135+
)
136+
}
137+
}
138+
86139
extension OrderCardPresentPaymentEligibilityStore {
87140
enum OrderIsEligibleForCardPresentPaymentError: Error {
88141
case orderNotFoundInStorage
89-
case siteNotFoundInStorage
142+
case failedToObtainSite
90143
case cardReaderPaymentOptionIsNotSupportedForCIABSites
91144
}
92145
}

WooCommerce/Classes/Yosemite/AuthenticatedState.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ class AuthenticatedState: StoresManagerState {
8686
dispatcher: dispatcher,
8787
storageManager: storageManager,
8888
network: network,
89+
crashLogger: ServiceLocator.crashLogging,
8990
currentSite: {
9091
ServiceLocator.stores.sessionManager.defaultSite
9192
}

0 commit comments

Comments
 (0)