Skip to content

Commit aa9f683

Browse files
authored
[Shipping labels] Use WooShippingAddress for addresses across Woo Shipping flow (#15206)
2 parents 0af088f + edb4689 commit aa9f683

File tree

12 files changed

+151
-151
lines changed

12 files changed

+151
-151
lines changed

Networking/Networking/Remote/WooShippingRemote.swift

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ public protocol WooShippingRemoteProtocol {
1010
completion: @escaping (Result<WooShippingCreatePackageResponse, Error>) -> Void)
1111
func loadLabelRates(siteID: Int64,
1212
orderID: Int64,
13-
originAddress: ShippingLabelAddress,
14-
destinationAddress: ShippingLabelAddress,
13+
originAddress: WooShippingAddress,
14+
destinationAddress: WooShippingAddress,
1515
packages: [ShippingLabelPackageSelected],
1616
completion: @escaping (Result<[ShippingLabelCarriersAndRates], Error>) -> Void)
1717
func loadPackages(siteID: Int64,
@@ -20,8 +20,8 @@ public protocol WooShippingRemoteProtocol {
2020
completion: @escaping (Result<WooShippingAccountSettings, Error>) -> Void)
2121
func purchaseShippingLabel(siteID: Int64,
2222
orderID: Int64,
23-
originAddress: ShippingLabelAddress,
24-
destinationAddress: ShippingLabelAddress,
23+
originAddress: WooShippingAddress,
24+
destinationAddress: WooShippingAddress,
2525
package: WooShippingPackagePurchase,
2626
completion: @escaping (Result<[ShippingLabelPurchase], Error>) -> Void)
2727
func checkLabelStatus(siteID: Int64,
@@ -36,7 +36,7 @@ public protocol WooShippingRemoteProtocol {
3636
func loadOriginAddresses(siteID: Int64,
3737
completion: @escaping (Result<[WooShippingOriginAddress], Error>) -> Void)
3838
func addressValidation(siteID: Int64,
39-
address: ShippingLabelAddress,
39+
address: WooShippingAddress,
4040
completion: @escaping (Result<WooShippingAddressValidationSuccess, Error>) -> Void)
4141
func updateOriginAddress(siteID: Int64,
4242
address: WooShippingOriginAddress,
@@ -125,8 +125,8 @@ public final class WooShippingRemote: Remote, WooShippingRemoteProtocol {
125125
/// - completion: Closure to be executed upon completion.
126126
public func loadLabelRates(siteID: Int64,
127127
orderID: Int64,
128-
originAddress: ShippingLabelAddress,
129-
destinationAddress: ShippingLabelAddress,
128+
originAddress: WooShippingAddress,
129+
destinationAddress: WooShippingAddress,
130130
packages: [ShippingLabelPackageSelected],
131131
completion: @escaping (Result<[ShippingLabelCarriersAndRates], Error>) -> Void) {
132132
do {
@@ -206,8 +206,8 @@ public final class WooShippingRemote: Remote, WooShippingRemoteProtocol {
206206
/// - completion: Closure to be executed upon completion.
207207
public func purchaseShippingLabel(siteID: Int64,
208208
orderID: Int64,
209-
originAddress: ShippingLabelAddress,
210-
destinationAddress: ShippingLabelAddress,
209+
originAddress: WooShippingAddress,
210+
destinationAddress: WooShippingAddress,
211211
package: WooShippingPackagePurchase,
212212
completion: @escaping (Result<[ShippingLabelPurchase], Error>) -> Void) {
213213
do {
@@ -304,7 +304,7 @@ public final class WooShippingRemote: Remote, WooShippingRemoteProtocol {
304304
/// - address: The address that should be verified.
305305
/// - completion: Closure to be executed upon completion.
306306
public func addressValidation(siteID: Int64,
307-
address: ShippingLabelAddress,
307+
address: WooShippingAddress,
308308
completion: @escaping (Result<WooShippingAddressValidationSuccess, Error>) -> Void) {
309309
do {
310310
let parameters = [

Networking/NetworkingTests/Remote/WooShippingRemoteTests.swift

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,8 @@ final class WooShippingRemoteTests: XCTestCase {
135135
let result: Result<[ShippingLabelCarriersAndRates], Error> = waitFor { promise in
136136
remote.loadLabelRates(siteID: self.sampleSiteID,
137137
orderID: self.sampleOrderID,
138-
originAddress: ShippingLabelAddress.fake(), destinationAddress: ShippingLabelAddress.fake(),
138+
originAddress: WooShippingAddress.fake(),
139+
destinationAddress: WooShippingAddress.fake(),
139140
packages: [ShippingLabelPackageSelected.fake()]) { (result) in
140141
promise(result)
141142
}
@@ -155,7 +156,8 @@ final class WooShippingRemoteTests: XCTestCase {
155156
let result: Result<[ShippingLabelCarriersAndRates], Error> = waitFor { promise in
156157
remote.loadLabelRates(siteID: self.sampleSiteID,
157158
orderID: self.sampleOrderID,
158-
originAddress: ShippingLabelAddress.fake(), destinationAddress: ShippingLabelAddress.fake(),
159+
originAddress: WooShippingAddress.fake(),
160+
destinationAddress: WooShippingAddress.fake(),
159161
packages: [ShippingLabelPackageSelected.fake()]) { result in
160162
promise(result)
161163
}
@@ -270,8 +272,8 @@ final class WooShippingRemoteTests: XCTestCase {
270272
let result: Result<[ShippingLabelPurchase], Error> = waitFor { promise in
271273
remote.purchaseShippingLabel(siteID: self.sampleSiteID,
272274
orderID: self.sampleOrderID,
273-
originAddress: ShippingLabelAddress.fake(),
274-
destinationAddress: ShippingLabelAddress.fake(),
275+
originAddress: WooShippingAddress.fake(),
276+
destinationAddress: WooShippingAddress.fake(),
275277
package: WooShippingPackagePurchase.fake()) { result in
276278
promise(result)
277279
}
@@ -291,8 +293,8 @@ final class WooShippingRemoteTests: XCTestCase {
291293
let result: Result<[ShippingLabelPurchase], Error> = waitFor { promise in
292294
remote.purchaseShippingLabel(siteID: self.sampleSiteID,
293295
orderID: self.sampleOrderID,
294-
originAddress: ShippingLabelAddress.fake(),
295-
destinationAddress: ShippingLabelAddress.fake(),
296+
originAddress: WooShippingAddress.fake(),
297+
destinationAddress: WooShippingAddress.fake(),
296298
package: WooShippingPackagePurchase.fake()) { result in
297299
promise(result)
298300
}
@@ -426,7 +428,7 @@ final class WooShippingRemoteTests: XCTestCase {
426428
// When
427429
let result: Result<WooShippingAddressValidationSuccess, Error> = waitFor { promise in
428430
remote.addressValidation(siteID: self.sampleSiteID,
429-
address: ShippingLabelAddress.fake()) { result in
431+
address: WooShippingAddress.fake()) { result in
430432
promise(result)
431433
}
432434
}
@@ -447,7 +449,7 @@ final class WooShippingRemoteTests: XCTestCase {
447449
// When
448450
let result: Result<WooShippingAddressValidationSuccess, Error> = waitFor { promise in
449451
remote.addressValidation(siteID: self.sampleSiteID,
450-
address: ShippingLabelAddress.fake()) { result in
452+
address: WooShippingAddress.fake()) { result in
451453
promise(result)
452454
}
453455
}
@@ -468,7 +470,7 @@ final class WooShippingRemoteTests: XCTestCase {
468470
// When
469471
let result: Result<WooShippingAddressValidationSuccess, Error> = waitFor { promise in
470472
remote.addressValidation(siteID: self.sampleSiteID,
471-
address: ShippingLabelAddress.fake()) { result in
473+
address: WooShippingAddress.fake()) { result in
472474
promise(result)
473475
}
474476
}

WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShipping Package and Rate Selection/WooShippingServiceViewModel.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ import Yosemite
33
final class WooShippingServiceViewModel: ObservableObject {
44
private let siteID: Int64
55
private let orderID: Int64
6-
private let originAddress: ShippingLabelAddress?
7-
private let destinationAddress: ShippingLabelAddress?
6+
private let originAddress: WooShippingAddress?
7+
private let destinationAddress: WooShippingAddress?
88
private let stores: StoresManager
99

1010
/// Whether the destination address is present and with non-empty fields.
@@ -36,8 +36,8 @@ final class WooShippingServiceViewModel: ObservableObject {
3636
let onSelectRate: ((_ selectedRate: WooShippingSelectedRate) -> Void)?
3737

3838
init(order: Order,
39-
originAddress: ShippingLabelAddress?,
40-
destinationAddress: ShippingLabelAddress?,
39+
originAddress: WooShippingAddress?,
40+
destinationAddress: WooShippingAddress?,
4141
stores: StoresManager = ServiceLocator.stores,
4242
onSelectRate: ((_ selectedRate: WooShippingSelectedRate) -> Void)? = nil) {
4343
self.siteID = order.siteID

WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShippingAddresses/WooShippingEditAddressViewModel.swift

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -269,15 +269,15 @@ final class WooShippingEditAddressViewModel: ObservableObject, Identifiable {
269269
/// Validates the address remotely.
270270
@MainActor
271271
func remotelyValidateAddress() async {
272-
let addressToValidate = ShippingLabelAddress(company: company.value,
273-
name: name.value,
274-
phone: phone.value,
275-
country: country.value,
276-
state: state.value,
277-
address1: address.value,
278-
address2: "",
279-
city: city.value,
280-
postcode: postalCode.value)
272+
let addressToValidate = WooShippingAddress(company: company.value,
273+
name: name.value,
274+
phone: phone.value,
275+
country: country.value,
276+
state: state.value,
277+
address1: address.value,
278+
address2: "",
279+
city: city.value,
280+
postcode: postalCode.value)
281281
do {
282282
let validation = try await remotelyValidateAddress(addressToValidate)
283283
normalizeAddressVM = WooShippingNormalizeAddressViewModel(enteredAddress: validation.originalAddress,
@@ -459,7 +459,7 @@ private extension WooShippingEditAddressViewModel {
459459

460460
/// Remotely validates the provided address.
461461
@MainActor
462-
func remotelyValidateAddress(_ address: ShippingLabelAddress) async throws -> WooShippingAddressValidationSuccess {
462+
func remotelyValidateAddress(_ address: WooShippingAddress) async throws -> WooShippingAddressValidationSuccess {
463463
try await withCheckedThrowingContinuation { continuation in
464464
isLoading = true
465465
let action = WooShippingAction.validateAddress(siteID: siteID,

WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShippingAddresses/WooShippingOriginAddress+Woo.swift

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,14 @@ extension WooShippingOriginAddress {
1414
[fullName, company].compactMap { $0.isEmpty ? nil : $0 }.joined(separator: "\n")
1515
}
1616

17-
/// Returns the first and last name combined.
18-
/// If only one name is present, that name is returned.
17+
/// Returns the First + LastName combined according to language rules and Locale.
18+
///
1919
var fullName: String {
20-
[firstName, lastName].compactMap { $0.isEmpty ? nil : $0 }.joined(separator: " ")
20+
var components = PersonNameComponents()
21+
components.givenName = firstName
22+
components.familyName = lastName
23+
24+
return PersonNameComponentsFormatter.localizedString(from: components, style: .medium, options: [])
2125
}
2226

2327
/// Returns the two Address Lines combined (if there are, effectively, two lines).

0 commit comments

Comments
 (0)