@@ -7,61 +7,27 @@ import struct Yosemite.Site
77
88/// Environment key for POS analytics service in SwiftUI
99public struct POSAnalyticsKey : EnvironmentKey {
10- public static let defaultValue : POSAnalyticsProviding = DefaultPOSAnalytics ( )
11- }
12-
13- /// Default implementation that does nothing (for previews/testing)
14- private struct DefaultPOSAnalytics : POSAnalyticsProviding {
15- func track( event: WooAnalyticsEvent ) {
16- // No-op implementation for previews/testing
17- }
18-
19- func track( _ stat: WooAnalyticsStat , parameters: [ String : WooAnalyticsEventPropertyType ] = [ : ] ) {
20- // No-op implementation for previews/testing
21- }
22-
23- func track( _ stat: WooAnalyticsStat ) {
24- // No-op implementation for previews/testing
25- }
26-
27- func track( _ stat: WooFoundationCore . WooAnalyticsStat , parameters: [ String : WooAnalyticsEventPropertyType ] , error: any Error ) {
28- // No-op implementation for previews/testing
29- }
10+ public static let defaultValue : POSAnalyticsProviding = EmptyPOSAnalytics ( )
3011}
3112
3213/// Environment key for POS currency settings
3314public struct POSCurrencySettingsKey : EnvironmentKey {
34- public static let defaultValue : CurrencySettings = CurrencySettings ( )
15+ public static let defaultValue : POSCurrencySettingsProviding = EmptyPOSCurrencySettings ( )
3516}
3617
3718/// Environment key for POS feature flags service
3819public struct POSFeatureFlagsKey : EnvironmentKey {
39- public static let defaultValue : POSFeatureFlagProviding = DefaultPOSFeatureFlags ( )
20+ public static let defaultValue : POSFeatureFlagProviding = EmptyPOSFeatureFlags ( )
4021}
4122
4223/// Environment key for POS session manager
4324public struct POSSessionManagerKey : EnvironmentKey {
44- public static let defaultValue : POSSessionManagerProviding = DefaultPOSSessionManager ( )
25+ public static let defaultValue : POSSessionManagerProviding = EmptyPOSSessionManager ( )
4526}
4627
4728/// Environment key for POS connectivity
4829public struct POSConnectivityKey : EnvironmentKey {
49- public static let defaultValue : ConnectivityObserver = DefaultPOSConnectivity ( )
50- }
51-
52- private struct DefaultPOSSessionManager : POSSessionManagerProviding {
53- var defaultSite : Site ? = nil
54- }
55-
56- private struct DefaultPOSFeatureFlags : POSFeatureFlagProviding {
57- func isFeatureFlagEnabled( _ flag: FeatureFlag ) -> Bool { false }
58- }
59-
60- private class DefaultPOSConnectivity : ConnectivityObserver {
61- @Published private( set) var currentStatus : ConnectivityStatus = . reachable( type: . ethernetOrWiFi)
62- var statusPublisher : AnyPublisher < ConnectivityStatus , Never > { $currentStatus. eraseToAnyPublisher ( ) }
63- func startObserving( ) { }
64- func stopObserving( ) { }
30+ public static let defaultValue : POSConnectivityProviding = EmptyPOSConnectivityProvider ( )
6531}
6632
6733public extension EnvironmentValues {
@@ -70,7 +36,7 @@ public extension EnvironmentValues {
7036 set { self [ POSAnalyticsKey . self] = newValue }
7137 }
7238
73- var posCurrencySettings : CurrencySettings {
39+ var posCurrencyProvider : POSCurrencySettingsProviding {
7440 get { self [ POSCurrencySettingsKey . self] }
7541 set { self [ POSCurrencySettingsKey . self] = newValue }
7642 }
@@ -85,8 +51,46 @@ public extension EnvironmentValues {
8551 set { self [ POSSessionManagerKey . self] = newValue }
8652 }
8753
88- var posConnectivity : ConnectivityObserver {
54+ var posConnectivityProvider : POSConnectivityProviding {
8955 get { self [ POSConnectivityKey . self] }
9056 set { self [ POSConnectivityKey . self] = newValue }
9157 }
9258}
59+
60+ // MARK: - Empty Default Values
61+
62+ public struct EmptyPOSSessionManager : POSSessionManagerProviding {
63+ public var defaultSite : Site ? = nil
64+ public init ( ) { }
65+ }
66+
67+ public struct EmptyPOSFeatureFlags : POSFeatureFlagProviding {
68+ public func isFeatureFlagEnabled( _ flag: FeatureFlag ) -> Bool { false }
69+ public init ( ) { }
70+ }
71+
72+ public struct EmptyPOSCurrencySettings : POSCurrencySettingsProviding {
73+ public var currencySettings = CurrencySettings ( )
74+ public init ( ) { }
75+ }
76+
77+ public class EmptyPOSConnectivityProvider : POSConnectivityProviding {
78+ public var connectivityObserver : WooFoundation . ConnectivityObserver = EmptyPOSConnectivity ( )
79+ public init ( ) { }
80+ }
81+
82+ public class EmptyPOSConnectivity : ConnectivityObserver {
83+ @Published private( set) public var currentStatus : ConnectivityStatus = . reachable( type: . ethernetOrWiFi)
84+ public var statusPublisher : AnyPublisher < ConnectivityStatus , Never > { $currentStatus. eraseToAnyPublisher ( ) }
85+ public func startObserving( ) { }
86+ public func stopObserving( ) { }
87+ public init ( ) { }
88+ }
89+
90+ public struct EmptyPOSAnalytics : POSAnalyticsProviding {
91+ public func track( event: WooAnalyticsEvent ) { }
92+ public func track( _ stat: WooAnalyticsStat , parameters: [ String : WooAnalyticsEventPropertyType ] = [ : ] ) { }
93+ public func track( _ stat: WooAnalyticsStat ) { }
94+ public func track( _ stat: WooFoundationCore . WooAnalyticsStat , parameters: [ String : WooAnalyticsEventPropertyType ] , error: any Error ) { }
95+ public init ( ) { }
96+ }
0 commit comments