Skip to content

Commit 1718654

Browse files
committed
Merge branch 'trunk' into woomob-1142-woo-poshistorical-orders-order-list-designer-ui
2 parents 5bf18fd + 4053558 commit 1718654

File tree

124 files changed

+1473
-21925
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

124 files changed

+1473
-21925
lines changed

Modules/Sources/NetworkingCore/Model/OrderItem.swift

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,18 @@ public struct OrderItem: Codable, Equatable, Hashable, Sendable, GeneratedFakeab
127127
forKey: .attributes)
128128
.first(where: { $0.key == "_pao_ids" })?.value ?? []
129129

130-
// Order item product image
131-
let image = try container.decodeIfPresent(OrderItemProductImage.self, forKey: .image)
130+
// Order item product image can be either a string URL or an object with src field
131+
// Use failsafeDecodeIfPresent with alternative types to handle both formats gracefully
132+
let image: OrderItemProductImage? = {
133+
if let imageObject = container.failsafeDecodeIfPresent(OrderItemProductImage.self, forKey: .image) {
134+
return imageObject
135+
}
136+
if let urlString = container.failsafeDecodeIfPresent(stringForKey: .image),
137+
!urlString.isEmpty {
138+
return OrderItemProductImage(src: urlString)
139+
}
140+
return nil
141+
}()
132142

133143
// Product Bundle extension properties:
134144
// If the order item is part of a product bundle, `bundledBy` is the parent order item (product bundle).
@@ -240,16 +250,20 @@ private struct OrderItemProductAddOnContainer: Decodable {
240250
// MARK: - Order Item Product Image
241251
//
242252
public struct OrderItemProductImage: Codable, Equatable, Hashable, Sendable {
243-
public let src: String?
253+
public let src: String
254+
255+
public init(src: String) {
256+
self.src = src
257+
}
244258

245259
public init(from decoder: Decoder) throws {
246260
let container = try decoder.container(keyedBy: CodingKeys.self)
247-
self.src = try? container.decodeIfPresent(String.self, forKey: .src)
261+
self.src = try container.decode(String.self, forKey: .src)
248262
}
249263

250264
public func encode(to encoder: Encoder) throws {
251265
var container = encoder.container(keyedBy: CodingKeys.self)
252-
try container.encodeIfPresent(src, forKey: .src)
266+
try container.encode(src, forKey: .src)
253267
}
254268

255269
private enum CodingKeys: String, CodingKey {

Modules/Sources/NetworkingCore/Network/AlamofireNetwork.swift

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,8 @@ public class AlamofireNetwork: Network {
3434
/// authentication mode for requests
3535
public private(set) var authenticationMode: RequestAuthenticationMode?
3636

37-
/// Lazy-initialized session manager. Use ensuresSessionManagerIsInitialized=true to avoid race conditions with concurrent requests.
38-
private lazy var alamofireSession: Alamofire.Session = {
39-
let sessionConfiguration = URLSessionConfiguration.default
40-
let sessionManager = makeSession(configuration: sessionConfiguration)
41-
return sessionManager
42-
}()
37+
/// Session manager used for Alamofire requests.
38+
private let alamofireSession: Alamofire.Session
4339

4440
private let credentials: Credentials?
4541

@@ -71,14 +67,11 @@ public class AlamofireNetwork: Network {
7167
/// - selectedSite: Publisher for site selection changes.
7268
/// This is necessary if you wish to enable network switching to direct requests while authenticated with WPCOM for better performance.
7369
/// - sessionManager: Optional pre-configured session manager.
74-
/// - ensuresSessionManagerIsInitialized: If true, the session is always set during initialization immediately to avoid lazy initialization race conditions.
75-
/// Defaults to false for backward compatibility. Set to true when making concurrent requests immediately after initialization.
7670
public required init(credentials: Credentials?,
7771
selectedSite: AnyPublisher<JetpackSite?, Never>?,
7872
appPasswordSupportState: AnyPublisher<Bool, Never>?,
7973
userDefaults: UserDefaults = .standard,
80-
sessionManager: Alamofire.Session? = nil,
81-
ensuresSessionManagerIsInitialized: Bool = false) {
74+
sessionManager: Alamofire.Session? = nil) {
8275
self.credentials = credentials
8376
self.selectedSite = selectedSite
8477
self.userDefaults = userDefaults
@@ -96,11 +89,12 @@ public class AlamofireNetwork: Network {
9689
}()
9790
return RequestConverter(siteAddress: siteAddress)
9891
}()
99-
self.requestAuthenticator = RequestProcessor(requestAuthenticator: DefaultRequestAuthenticator(credentials: credentials))
92+
let requestAuthenticator = RequestProcessor(requestAuthenticator: DefaultRequestAuthenticator(credentials: credentials))
93+
self.requestAuthenticator = requestAuthenticator
10094
if let sessionManager {
10195
self.alamofireSession = sessionManager
102-
} else if ensuresSessionManagerIsInitialized {
103-
self.alamofireSession = makeSession(configuration: URLSessionConfiguration.default)
96+
} else {
97+
self.alamofireSession = Alamofire.Session(configuration: .default, interceptor: requestAuthenticator)
10498
}
10599

106100
let authenticationMode: RequestAuthenticationMode? = {
@@ -294,12 +288,6 @@ private extension AlamofireNetwork {
294288
}
295289
}
296290

297-
/// Creates a session manager with request retrier and adapter
298-
///
299-
func makeSession(configuration sessionConfiguration: URLSessionConfiguration) -> Alamofire.Session {
300-
Alamofire.Session(configuration: sessionConfiguration, interceptor: requestAuthenticator)
301-
}
302-
303291
/// Updates `requestConverter` and `requestAuthenticator` when selected site changes
304292
///
305293
func observeSelectedSite(_ selectedSite: AnyPublisher<JetpackSite?, Never>) {

Modules/Sources/Storage/Model/MIGRATIONS.md

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -238,96 +238,96 @@ This file documents changes in the WCiOS Storage data model. Please explain any
238238
- @rachelmcr 2022-12-15
239239
- Added `SiteSummaryStats` entity.
240240

241-
## Model 79 (Release 11.7.0.0)
241+
## Model 79 (Release 11.7.0.0) - Deleted
242242
- @rachelmcr 2022-12-12
243243
- Added `views` attribute to `SiteVisitStatsItem` entity.
244244

245-
## Model 78 (Release 11.4.0.0)
245+
## Model 78 (Release 11.4.0.0) - Deleted
246246
- @rachelmcr 2022-11-18
247247
- Added `averageOrderValue` attribute to `OrderStatsV4Totals` entity.
248248

249-
## Model 77 (Release 11.2.0.0)
249+
## Model 77 (Release 11.2.0.0) - Deleted
250250
- @ealeksandrov 2022-11-07
251251
- Added `frameNonce` attribute to `Site` entity.
252252

253-
## Model 76 (Release 11.0.0.0)
253+
## Model 76 (Release 11.0.0.0) - Deleted
254254
- @ealeksandrov 2022-10-26
255255
- Added `loginURL` attribute to `Site` entity.
256256

257-
## Model 75 (Release 10.9.0.0)
257+
## Model 75 (Release 10.9.0.0) - Deleted
258258
- @iamgabrielma 2022-10-17
259259
- Added `siteID` attribute to `Customer` entity.
260260
- Added `siteID` attribute to `CustomerSearchResult` entity.
261261
- Added `keyword` attribute to `CustomerSearchResult` entity.
262262
- Removed `customerID` attribute from `CustomerSearchResult` entity.
263263
- Added `WooCommerceModelV74toV75` mapping model.
264264

265-
## Model 74 (Release 10.8.0.0)
265+
## Model 74 (Release 10.8.0.0) - Deleted
266266
- @iamgabrielma 2022-10-12
267267
- Added `Customer` entity.
268268
- Added `CustomerSearchResult` entity.
269269

270-
## Model 73 (Release 10.6.0.0)
270+
## Model 73 (Release 10.6.0.0) - Deleted
271271
- @jaclync 2022-09-14
272272
- Added `filterKey` attribute to `ProductSearchResults` entity.
273273

274-
## Model 72 (Release 9.6.0.0)
274+
## Model 72 (Release 9.6.0.0) - Deleted
275275
- @joshheald 2022-08-19
276276
- Added `instructions` attribute to `PaymentGateway` entity.
277277

278-
## Model 71 (Release 9.6.0.0)
278+
## Model 71 (Release 9.6.0.0) - Deleted
279279
- @rachelmcr 2022-07-07
280280
- Added `OrderMetaData` entity.
281281
- Added `customFields` to-many relationship from `Order` to `OrderMetaData`.
282282

283-
## Model 70 (Release 9.5.0.0)
283+
## Model 70 (Release 9.5.0.0) - Deleted
284284
- @toupper 2022-06-22
285285
- Update `OrderItemRefund` entity to include the `refundedItemID` property.
286286

287-
## Model 69 (Release 9.4.0.0)
287+
## Model 69 (Release 9.4.0.0) - Deleted
288288
- @ecarrion 2022-06-08
289289
- Update `Order` entity to include the `needsProcessing`, `needsPayment`, and `isEditable` properties.
290290

291-
## Model 68 (Release 9.2.0.0)
291+
## Model 68 (Release 9.2.0.0) - Deleted
292292
- @pmusolino 2022-05-05
293293
- Update `Coupon` entity and make `usageLimit`, `usageLimitPerUser` and `limitUsageToXItems` properties as optional with default value equal to `null`.
294294

295-
## Model 67 (Release 8.9.0.0)
295+
## Model 67 (Release 8.9.0.0) - Deleted
296296
- @ecarrion 2022-04-06
297297
- Update `Order` entity to include the `paymentURL` property.
298298

299-
## Model 66 (Release 8.8.0.0)
299+
## Model 66 (Release 8.8.0.0) - Deleted
300300
- @pmusolino 2022-03-09
301301
- Update `Order`'s `items` relationship to be ordered.
302302

303-
## Model 65 (Release 8.6.0.0)
303+
## Model 65 (Release 8.6.0.0) - Deleted
304304
- @joshheald 2022-02-14
305305
- Added `WCPayCharge` entity.
306306
- Added `WCPayCardPresentPaymentDetails` entity.
307307
- Added `WCPayCardPaymentDetails` entity.
308308
- Added `WCPayCardPresentReceiptDetails` entity.
309309

310-
## Model 64 (Release 8.6.0.0)
310+
## Model 64 (Release 8.6.0.0) - Deleted
311311
- @pmusolino 2022-02-09
312312
- Added `InboxNote` entity.
313313
- Added `InboxAction` entity.
314314
- Added `actions` relationship from `InboxNote` to `[InboxAction]`.
315315

316-
## Model 63 (Release 8.5.0.0)
316+
## Model 63 (Release 8.5.0.0) - Deleted
317317
- @joshheald 2022-01-31
318318
- Added `chargeID` attribute to `Order` entity.
319319

320-
## Model 62 (Release 8.5.0.0)
320+
## Model 62 (Release 8.5.0.0) - Deleted
321321
- @itsmeichigo 2022-01-25
322322
- Added `CouponSearchResult` entity.
323323
- Added `searchResults` relationship from `Coupon` to `CouponSearchResult`.
324324

325-
## Model 61 (Release 8.4.0.0)
325+
## Model 61 (Release 8.4.0.0) - Deleted
326326
- @selanthiraiyan 2022-01-13
327327
- Added `OrderTaxLine` entity.
328328
- Added `taxes` relationship from `Order` to `OrderTaxLine`.
329329

330-
## Model 60 (Release 8.3.0.0)
330+
## Model 60 (Release 8.3.0.0) - Deleted
331331
- @ecarrion 2021-12-22
332332
- Added `OrderKey` attribute to `Order` entity.
333333

0 commit comments

Comments
 (0)