Skip to content

Commit c5c3fce

Browse files
authored
Shipping Label: Rename views and properties for shipment items (#15422)
2 parents 19507c6 + 3c9155c commit c5c3fce

File tree

7 files changed

+80
-80
lines changed

7 files changed

+80
-80
lines changed
Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ import Yosemite
22
import SwiftUI
33

44
/// Displays a single collapsible shipment item row or grouped parent and child shipment item rows
5-
struct CollapsibleShipmentCard: View {
5+
struct CollapsibleShipmentItemCard: View {
66
@State private var isCollapsed: Bool = true
77

8-
private let viewModel: CollapsibleShipmentCardViewModel
8+
private let viewModel: CollapsibleShipmentItemCardViewModel
99

10-
init(viewModel: CollapsibleShipmentCardViewModel) {
10+
init(viewModel: CollapsibleShipmentItemCardViewModel) {
1111
self.viewModel = viewModel
1212
}
1313

@@ -22,15 +22,15 @@ struct CollapsibleShipmentCard: View {
2222

2323
if !isCollapsed {
2424
VStack(spacing: 0) {
25-
ForEach(Array(viewModel.childShipmentRows.enumerated()), id: \.element.id) { index, item in
25+
ForEach(Array(viewModel.childItemRows.enumerated()), id: \.element.id) { index, item in
2626
VStack(spacing: 0) {
2727
Divider()
2828

29-
SelectableShipmentRow(viewModel: item)
29+
SelectableShipmentItemRow(viewModel: item)
3030
.padding(.leading, Layout.horizontalPadding * 2)
3131
.padding(.trailing, Layout.horizontalPadding)
3232
.padding(.vertical, Layout.verticalPadding)
33-
.background(backgroundForChildShipmentRow(isFinalRow: index == viewModel.childShipmentRows.count - 1))
33+
.background(backgroundForChildShipmentRow(isFinalRow: index == viewModel.childItemRows.count - 1))
3434
}
3535
}
3636
}
@@ -41,19 +41,19 @@ struct CollapsibleShipmentCard: View {
4141
}
4242
}
4343

44-
private extension CollapsibleShipmentCard {
44+
private extension CollapsibleShipmentItemCard {
4545
@ViewBuilder
4646
var mainShipmentRow: some View {
47-
if viewModel.childShipmentRows.isEmpty {
48-
SelectableShipmentRow(viewModel: viewModel.mainShipmentRow)
47+
if viewModel.childItemRows.isEmpty {
48+
SelectableShipmentItemRow(viewModel: viewModel.mainItemRow)
4949
} else {
5050
Button(action: {
5151
withAnimation {
5252
isCollapsed.toggle()
5353
}
5454
}, label: {
5555
ZStack(alignment: .topTrailing) {
56-
SelectableShipmentRow(viewModel: viewModel.mainShipmentRow)
56+
SelectableShipmentItemRow(viewModel: viewModel.mainItemRow)
5757
.contentShape(Rectangle())
5858

5959
Image(uiImage: isCollapsed ? .chevronDownImage : .chevronUpImage)
@@ -86,7 +86,7 @@ private extension CollapsibleShipmentCard {
8686
}
8787
}
8888

89-
private extension CollapsibleShipmentCard {
89+
private extension CollapsibleShipmentItemCard {
9090
enum Layout {
9191
static let borderCornerRadius: CGFloat = 8
9292
static let borderWidth: CGFloat = 0.5
Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,30 +2,30 @@ import SwiftUI
22
import WooFoundation
33
import Yosemite
44

5-
/// View model for `CollapsibleShipmentCard`.
6-
final class CollapsibleShipmentCardViewModel: ObservableObject, Identifiable {
5+
/// View model for `CollapsibleShipmentItemCard`.
6+
final class CollapsibleShipmentItemCardViewModel: ObservableObject, Identifiable {
77
let id = UUID()
88

9-
/// The main shipment row.
10-
let mainShipmentRow: SelectableShipmentRowViewModel
9+
/// The main item row.
10+
let mainItemRow: SelectableShipmentItemRowViewModel
1111

1212
/// Child shipment rows, if the shipment has more than one quantity
13-
let childShipmentRows: [SelectableShipmentRowViewModel]
13+
let childItemRows: [SelectableShipmentItemRowViewModel]
1414

1515
var onSelectionChange: (() -> Void)?
1616

17-
var selectedShipmentIds: [String] {
18-
if mainShipmentRow.selected {
19-
if childShipmentRows.isNotEmpty {
20-
return childShipmentRows.map { $0.shipmentId }
17+
var selectedItemIds: [String] {
18+
if mainItemRow.selected {
19+
if childItemRows.isNotEmpty {
20+
return childItemRows.map { $0.itemID }
2121
} else {
22-
return [mainShipmentRow.shipmentId]
22+
return [mainItemRow.itemID]
2323
}
2424
}
2525

26-
return childShipmentRows
26+
return childItemRows
2727
.filter { $0.selected }
28-
.map(\.shipmentId)
28+
.map(\.itemID)
2929
}
3030

3131
init(parentShipmentId: String,
@@ -37,41 +37,41 @@ final class CollapsibleShipmentCardViewModel: ObservableObject, Identifiable {
3737
let childShippingItem = WooShippingItemRowViewModel(item: ShippingLabelPackageItem(copy: item, quantity: 1.0),
3838
currency: currency)
3939

40-
self.mainShipmentRow = SelectableShipmentRowViewModel(shipmentId: parentShipmentId,
40+
self.mainItemRow = SelectableShipmentItemRowViewModel(itemID: parentShipmentId,
4141
isSelectable: true,
4242
item: mainShippingItem,
4343
showQuantity: true)
44-
self.childShipmentRows = childShipmentIds.map({
45-
SelectableShipmentRowViewModel(shipmentId: $0,
46-
isSelectable: true,
47-
item: childShippingItem,
48-
showQuantity: false)
44+
self.childItemRows = childShipmentIds.map({
45+
SelectableShipmentItemRowViewModel(itemID: $0,
46+
isSelectable: true,
47+
item: childShippingItem,
48+
showQuantity: false)
4949
})
5050

5151
observeSelection()
5252
}
5353

5454
func selectAll() {
55-
mainShipmentRow.setSelected(true)
56-
childShipmentRows.forEach({ $0.setSelected(true) })
55+
mainItemRow.setSelected(true)
56+
childItemRows.forEach({ $0.setSelected(true) })
5757
onSelectionChange?()
5858
}
5959
}
6060

61-
private extension CollapsibleShipmentCardViewModel {
61+
private extension CollapsibleShipmentItemCardViewModel {
6262
func observeSelection() {
63-
mainShipmentRow.onSelectedChange = { [weak self] row in
63+
mainItemRow.onSelectedChange = { [weak self] row in
6464
guard let self else { return }
6565

66-
childShipmentRows.forEach({ $0.setSelected(row.selected) })
66+
childItemRows.forEach({ $0.setSelected(row.selected) })
6767
onSelectionChange?()
6868
}
6969

70-
childShipmentRows.forEach({
70+
childItemRows.forEach({
7171
$0.onSelectedChange = { [weak self] row in
7272
guard let self else { return }
7373

74-
mainShipmentRow.setSelected(false)
74+
mainItemRow.setSelected(false)
7575
onSelectionChange?()
7676
}
7777
})
Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ import Yosemite
22
import SwiftUI
33

44
/// Row for a selectable shipment item to ship with the Woo Shipping extension.
5-
struct SelectableShipmentRow: View {
6-
@ObservedObject private var viewModel: SelectableShipmentRowViewModel
5+
struct SelectableShipmentItemRow: View {
6+
@ObservedObject private var viewModel: SelectableShipmentItemRowViewModel
77

8-
init(viewModel: SelectableShipmentRowViewModel) {
8+
init(viewModel: SelectableShipmentItemRowViewModel) {
99
self.viewModel = viewModel
1010
}
1111

@@ -53,7 +53,7 @@ struct SelectableShipmentRow: View {
5353
}
5454
}
5555

56-
private extension SelectableShipmentRow {
56+
private extension SelectableShipmentItemRow {
5757
@ViewBuilder
5858
func selectionCircle(selected: Bool) -> some View {
5959
if selected {
@@ -75,7 +75,7 @@ private extension SelectableShipmentRow {
7575
}
7676
}
7777

78-
private extension SelectableShipmentRow {
78+
private extension SelectableShipmentItemRow {
7979
enum Layout {
8080
static let horizontalSpacing: CGFloat = 16
8181
static let imageSize: CGFloat = 56.0
@@ -85,12 +85,12 @@ private extension SelectableShipmentRow {
8585
}
8686

8787
#Preview {
88-
SelectableShipmentRow(viewModel: SelectableShipmentRowViewModel(shipmentId: "123",
89-
isSelectable: false,
90-
item: WooShippingItemRowViewModel(imageUrl: nil,
91-
quantityLabel: "3",
92-
name: "Little Nap Brazil 250g",
93-
detailsLabel: "15×10×8cm • Espresso",
94-
weightLabel: "275g",
95-
priceLabel: "$60.00")))
88+
SelectableShipmentItemRow(viewModel: SelectableShipmentItemRowViewModel(itemID: "123",
89+
isSelectable: false,
90+
item: WooShippingItemRowViewModel(imageUrl: nil,
91+
quantityLabel: "3",
92+
name: "Little Nap Brazil 250g",
93+
detailsLabel: "15×10×8cm • Espresso",
94+
weightLabel: "275g",
95+
priceLabel: "$60.00")))
9696
}
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import WooFoundation
33
import Yosemite
44

55
/// View model for `SelectableShipmentRow`.
6-
final class SelectableShipmentRowViewModel: ObservableObject, Identifiable {
6+
final class SelectableShipmentItemRowViewModel: ObservableObject, Identifiable {
77
let id = UUID()
88

99
let item: WooShippingItemRowViewModel
@@ -12,17 +12,17 @@ final class SelectableShipmentRowViewModel: ObservableObject, Identifiable {
1212

1313
let isSelectable: Bool
1414

15-
let shipmentId: String
15+
let itemID: String
1616

1717
let showQuantity: Bool
1818

19-
var onSelectedChange: ((SelectableShipmentRowViewModel) -> Void)?
19+
var onSelectedChange: ((SelectableShipmentItemRowViewModel) -> Void)?
2020

21-
init(shipmentId: String,
21+
init(itemID: String,
2222
isSelectable: Bool,
2323
item: WooShippingItemRowViewModel,
2424
showQuantity: Bool = true) {
25-
self.shipmentId = shipmentId
25+
self.itemID = itemID
2626
self.isSelectable = isSelectable
2727
self.item = item
2828
self.showQuantity = showQuantity

WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShipping Split Shipments/WooShippingSplitShipmentsDetailView.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ struct WooShippingSplitShipmentsDetailView: View {
2121

2222
VStack(spacing: Layout.verticalSpacing) {
2323
ForEach(viewModel.shipmentCardViewModels) { item in
24-
CollapsibleShipmentCard(viewModel: item)
24+
CollapsibleShipmentItemCard(viewModel: item)
2525
}
2626
}
2727
}

WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShipping Split Shipments/WooShippingSplitShipmentsViewModel.swift

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ final class WooShippingSplitShipmentsViewModel: ObservableObject {
2626
"\(itemsWeightLabel)\(itemsPriceLabel)"
2727
}
2828

29-
let shipmentCardViewModels: [CollapsibleShipmentCardViewModel]
29+
let shipmentCardViewModels: [CollapsibleShipmentItemCardViewModel]
3030

3131
@Published private(set) var moveToNoticeViewModel: MoveToShipmentNoticeViewModel?
3232

@@ -48,7 +48,7 @@ final class WooShippingSplitShipmentsViewModel: ObservableObject {
4848
self.shippingSettingsService = shippingSettingsService
4949

5050
self.shipmentCardViewModels = {
51-
var viewModels = [CollapsibleShipmentCardViewModel]()
51+
var viewModels = [CollapsibleShipmentItemCardViewModel]()
5252
for item in items {
5353
// TODO: #15303 Set IDs based on web logic
5454
let childShipmentIds: [String] = {
@@ -64,10 +64,10 @@ final class WooShippingSplitShipmentsViewModel: ObservableObject {
6464
return children
6565
}()
6666

67-
let viewModel = CollapsibleShipmentCardViewModel(parentShipmentId: "\(item.productOrVariationID)",
68-
childShipmentIds: childShipmentIds,
69-
item: item,
70-
currency: order.currency)
67+
let viewModel = CollapsibleShipmentItemCardViewModel(parentShipmentId: "\(item.productOrVariationID)",
68+
childShipmentIds: childShipmentIds,
69+
item: item,
70+
currency: order.currency)
7171
viewModels.append(viewModel)
7272
}
7373
return viewModels
@@ -111,7 +111,7 @@ private extension WooShippingSplitShipmentsViewModel {
111111

112112
func showMoveToNotice() {
113113
let selectedItemsCount = {
114-
shipmentCardViewModels.map { $0.selectedShipmentIds.count }.reduce(0, +)
114+
shipmentCardViewModels.map { $0.selectedItemIds.count }.reduce(0, +)
115115
}()
116116

117117
guard selectedItemsCount > 0 else {

0 commit comments

Comments
 (0)