Skip to content

Commit bc6201c

Browse files
committed
Make selectedSite param required for AlamofireNetwork init
1 parent 7b5f2dc commit bc6201c

30 files changed

+165
-67
lines changed

Modules/Sources/NetworkingCore/Network/AlamofireNetwork.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,11 +67,12 @@ public class AlamofireNetwork: Network {
6767
/// - Parameters:
6868
/// - credentials: Authentication credentials for requests.
6969
/// - selectedSite: Publisher for site selection changes.
70+
/// This is necessary if you wish to enable network switching to direct requests while authenticated with WPCOM for better performance.
7071
/// - sessionManager: Optional pre-configured session manager.
7172
/// - ensuresSessionManagerIsInitialized: If true, the session is always set during initialization immediately to avoid lazy initialization race conditions.
7273
/// Defaults to false for backward compatibility. Set to true when making concurrent requests immediately after initialization.
7374
public required init(credentials: Credentials?,
74-
selectedSite: AnyPublisher<JetpackSite?, Never>? = nil,
75+
selectedSite: AnyPublisher<JetpackSite?, Never>?,
7576
userDefaults: UserDefaults = .standard,
7677
sessionManager: Alamofire.Session? = nil,
7778
ensuresSessionManagerIsInitialized: Bool = false) {
@@ -121,6 +122,7 @@ public class AlamofireNetwork: Network {
121122
requestAuthenticator.updateAuthenticator(DefaultRequestAuthenticator(credentials: credentials))
122123
requestAuthenticator.delegate = nil
123124
updateAuthenticationMode(.jetpackTunnel)
125+
subscription = nil
124126
}
125127
}
126128

Modules/Sources/Yosemite/PointOfSale/Coupons/PointOfSaleCouponFetchStrategyFactory.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import class WooFoundation.CurrencySettings
33
import protocol Storage.StorageManagerType
44
import class Networking.CouponsRemote
55
import class Networking.AlamofireNetwork
6+
import struct Combine.AnyPublisher
7+
import struct NetworkingCore.JetpackSite
68

79
public struct PointOfSaleCouponFetchStrategyFactory {
810
private let siteID: Int64
@@ -13,8 +15,9 @@ public struct PointOfSaleCouponFetchStrategyFactory {
1315
public init(siteID: Int64,
1416
currencySettings: CurrencySettings,
1517
credentials: Credentials?,
18+
selectedSite: AnyPublisher<JetpackSite?, Never>,
1619
storage: StorageManagerType) {
17-
let network = AlamofireNetwork(credentials: credentials)
20+
let network = AlamofireNetwork(credentials: credentials, selectedSite: selectedSite)
1821
let remote = CouponsRemote(network: network)
1922
self.siteID = siteID
2023
self.currencySettings = currencySettings

Modules/Sources/Yosemite/PointOfSale/Coupons/PointOfSaleCouponService.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import class WooFoundation.CurrencyFormatter
55
import class WooFoundation.CurrencySettings
66
import Storage
77
import enum Alamofire.AFError
8+
import struct Combine.AnyPublisher
9+
import struct NetworkingCore.JetpackSite
810

911
public protocol PointOfSaleCouponServiceProtocol {
1012
func provideLocalPointOfSaleCoupons(fetchStrategy: PointOfSaleCouponFetchStrategy) async throws -> [POSItem]
@@ -30,8 +32,9 @@ public final class PointOfSaleCouponService: PointOfSaleCouponServiceProtocol {
3032
public convenience init(siteID: Int64,
3133
currencySettings: CurrencySettings,
3234
credentials: Credentials?,
35+
selectedSite: AnyPublisher<JetpackSite?, Never>,
3336
storage: StorageManagerType) {
34-
let network = AlamofireNetwork(credentials: credentials)
37+
let network = AlamofireNetwork(credentials: credentials, selectedSite: selectedSite)
3538
self.init(siteID: siteID,
3639
currencySettings: currencySettings,
3740
settingStoreMethods: SettingStoreMethods(storageManager: storage, network: network),

Modules/Sources/Yosemite/PointOfSale/Eligibility/POSSystemStatusService.swift

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import Foundation
22
import Networking
33
import Storage
4+
import struct Combine.AnyPublisher
45

56
public protocol POSSystemStatusServiceProtocol {
67
/// Loads WooCommerce plugin and POS feature switch value remotely for eligibility checks.
@@ -27,8 +28,10 @@ public final class POSSystemStatusService: POSSystemStatusServiceProtocol {
2728
private let storageManager: StorageManagerType
2829
private let pluginsService: PluginsServiceProtocol
2930

30-
public init(credentials: Credentials?, storageManager: StorageManagerType) {
31-
let network = AlamofireNetwork(credentials: credentials)
31+
public init(credentials: Credentials?,
32+
selectedSite: AnyPublisher<JetpackSite?, Never>,
33+
storageManager: StorageManagerType) {
34+
let network = AlamofireNetwork(credentials: credentials, selectedSite: selectedSite)
3235
self.remote = SystemStatusRemote(network: network)
3336
self.storageManager = storageManager
3437
self.pluginsService = PluginsService(storageManager: storageManager)

Modules/Sources/Yosemite/PointOfSale/Items/PointOfSaleBarcodeScanService.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import class Networking.ProductsRemote
44
import class WooFoundation.CurrencySettings
55
import class Networking.AlamofireNetwork
66
import enum Networking.NetworkError
7+
import struct Combine.AnyPublisher
8+
import struct NetworkingCore.JetpackSite
79

810
public protocol PointOfSaleBarcodeScanServiceProtocol {
911
func getItem(barcode: String) async throws(PointOfSaleBarcodeScanError) -> POSItem
@@ -40,8 +42,9 @@ public final class PointOfSaleBarcodeScanService: PointOfSaleBarcodeScanServiceP
4042

4143
public convenience init(siteID: Int64,
4244
credentials: Credentials?,
45+
selectedSite: AnyPublisher<JetpackSite?, Never>,
4346
currencySettings: CurrencySettings) {
44-
let network = AlamofireNetwork(credentials: credentials)
47+
let network = AlamofireNetwork(credentials: credentials, selectedSite: selectedSite)
4548
self.init(siteID: siteID,
4649
productsRemote: ProductsRemote(network: network),
4750
currencySettings: currencySettings)

Modules/Sources/Yosemite/PointOfSale/Items/PointOfSaleItemFetchStrategyFactory.swift

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ import Foundation
22
import class Networking.ProductsRemote
33
import class Networking.ProductVariationsRemote
44
import class Networking.AlamofireNetwork
5+
import struct Combine.AnyPublisher
6+
import struct NetworkingCore.JetpackSite
57

68
public protocol PointOfSaleItemFetchStrategyFactoryProtocol {
79
func defaultStrategy(analytics: POSItemFetchAnalyticsTracking) -> PointOfSalePurchasableItemFetchStrategy
@@ -18,9 +20,10 @@ public final class PointOfSaleItemFetchStrategyFactory: PointOfSaleItemFetchStra
1820
private let variationsRemote: ProductVariationsRemote
1921

2022
public init(siteID: Int64,
21-
credentials: Credentials?) {
23+
credentials: Credentials?,
24+
selectedSite: AnyPublisher<JetpackSite?, Never>? = nil) {
2225
self.siteID = siteID
23-
let network = AlamofireNetwork(credentials: credentials)
26+
let network = AlamofireNetwork(credentials: credentials, selectedSite: selectedSite)
2427
self.productsRemote = ProductsRemote(network: network)
2528
self.variationsRemote = ProductVariationsRemote(network: network)
2629
}

Modules/Sources/Yosemite/PointOfSale/OrderList/PointOfSaleOrderListFetchStrategyFactory.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ import Foundation
22
import class Networking.AlamofireNetwork
33
import class Networking.OrdersRemote
44
import class WooFoundationCore.CurrencyFormatter
5+
import struct Combine.AnyPublisher
6+
import struct NetworkingCore.JetpackSite
57

68
public protocol PointOfSaleOrderListFetchStrategyFactoryProtocol {
79
func defaultStrategy() -> PointOfSaleOrderListFetchStrategy
@@ -15,9 +17,10 @@ public final class PointOfSaleOrderListFetchStrategyFactory: PointOfSaleOrderLis
1517

1618
public init(siteID: Int64,
1719
credentials: Credentials?,
20+
selectedSite: AnyPublisher<JetpackSite?, Never>,
1821
currencyFormatter: CurrencyFormatter) {
1922
self.siteID = siteID
20-
let network = AlamofireNetwork(credentials: credentials)
23+
let network = AlamofireNetwork(credentials: credentials, selectedSite: selectedSite)
2124
self.ordersRemote = OrdersRemote(network: network)
2225
self.currencyFormatter = currencyFormatter
2326
}

Modules/Sources/Yosemite/Tools/POS/POSCatalogFullSyncService.swift

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import protocol Networking.POSCatalogSyncRemoteProtocol
33
import class Networking.AlamofireNetwork
44
import class Networking.POSCatalogSyncRemote
55
import Storage
6+
import struct Combine.AnyPublisher
7+
import struct NetworkingCore.JetpackSite
68

79
// TODO - remove the periphery ignore comment when the catalog is integrated with POS.
810
// periphery:ignore
@@ -30,12 +32,17 @@ public final class POSCatalogFullSyncService: POSCatalogFullSyncServiceProtocol
3032
private let persistenceService: POSCatalogPersistenceServiceProtocol
3133
private let batchedLoader: BatchedRequestLoader
3234

33-
public convenience init?(credentials: Credentials?, batchSize: Int = 2, grdbManager: GRDBManagerProtocol) {
35+
public convenience init?(credentials: Credentials?,
36+
selectedSite: AnyPublisher<JetpackSite?, Never>,
37+
batchSize: Int = 2,
38+
grdbManager: GRDBManagerProtocol) {
3439
guard let credentials else {
3540
DDLogError("⛔️ Could not create POSCatalogFullSyncService due missing credentials")
3641
return nil
3742
}
38-
let network = AlamofireNetwork(credentials: credentials, ensuresSessionManagerIsInitialized: true)
43+
let network = AlamofireNetwork(credentials: credentials,
44+
selectedSite: selectedSite,
45+
ensuresSessionManagerIsInitialized: true)
3946
let syncRemote = POSCatalogSyncRemote(network: network)
4047
let persistenceService = POSCatalogPersistenceService(grdbManager: grdbManager)
4148
self.init(syncRemote: syncRemote, batchSize: batchSize, persistenceService: persistenceService)

Modules/Sources/Yosemite/Tools/POS/POSCatalogIncrementalSyncService.swift

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import protocol Networking.POSCatalogSyncRemoteProtocol
33
import class Networking.AlamofireNetwork
44
import class Networking.POSCatalogSyncRemote
55
import protocol Storage.GRDBManagerProtocol
6+
import struct NetworkingCore.JetpackSite
7+
import struct Combine.AnyPublisher
68

79
// TODO - remove the periphery ignore comment when the service is integrated with POS.
810
// periphery:ignore
@@ -22,12 +24,17 @@ public final class POSCatalogIncrementalSyncService: POSCatalogIncrementalSyncSe
2224
private let persistenceService: POSCatalogPersistenceServiceProtocol
2325
private let batchedLoader: BatchedRequestLoader
2426

25-
public convenience init?(credentials: Credentials?, batchSize: Int = 1, grdbManager: GRDBManagerProtocol) {
27+
public convenience init?(credentials: Credentials?,
28+
selectedSite: AnyPublisher<JetpackSite?, Never>,
29+
batchSize: Int = 1,
30+
grdbManager: GRDBManagerProtocol) {
2631
guard let credentials else {
2732
DDLogError("⛔️ Could not create POSCatalogIncrementalSyncService due missing credentials")
2833
return nil
2934
}
30-
let network = AlamofireNetwork(credentials: credentials, ensuresSessionManagerIsInitialized: true)
35+
let network = AlamofireNetwork(credentials: credentials,
36+
selectedSite: selectedSite,
37+
ensuresSessionManagerIsInitialized: true)
3138
let syncRemote = POSCatalogSyncRemote(network: network)
3239
let persistenceService = POSCatalogPersistenceService(grdbManager: grdbManager)
3340
self.init(syncRemote: syncRemote, batchSize: batchSize, persistenceService: persistenceService)

Modules/Sources/Yosemite/Tools/POS/POSOrderService.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ import Foundation
22
import Networking
33
import class WooFoundation.CurrencyFormatter
44
import enum WooFoundation.CurrencyCode
5+
import struct Combine.AnyPublisher
6+
import struct NetworkingCore.JetpackSite
57

68
public protocol POSOrderServiceProtocol {
79
/// Syncs order based on the cart.
@@ -17,12 +19,12 @@ public final class POSOrderService: POSOrderServiceProtocol {
1719
private let siteID: Int64
1820
private let ordersRemote: POSOrdersRemoteProtocol
1921

20-
public convenience init?(siteID: Int64, credentials: Credentials?) {
22+
public convenience init?(siteID: Int64, credentials: Credentials?, selectedSite: AnyPublisher<JetpackSite?, Never>) {
2123
guard let credentials else {
2224
DDLogError("⛔️ Could not create POSOrderService due to not finding credentials")
2325
return nil
2426
}
25-
let network = AlamofireNetwork(credentials: credentials)
27+
let network = AlamofireNetwork(credentials: credentials, selectedSite: selectedSite)
2628
self.init(siteID: siteID,
2729
ordersRemote: OrdersRemote(network: network))
2830
}

0 commit comments

Comments
 (0)