Skip to content

Commit b0ee9be

Browse files
committed
Move ProductImageThumbnail to WooFoundation
1 parent 2096791 commit b0ee9be

File tree

10 files changed

+44
-33
lines changed

10 files changed

+44
-33
lines changed

Modules/Package.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,10 @@ let package = Package(
179179
),
180180
.target(
181181
name: "WooFoundation",
182-
dependencies: ["WooFoundationCore"]
182+
dependencies: [
183+
"WooFoundationCore",
184+
.product(name: "Kingfisher", package: "Kingfisher")
185+
]
183186
),
184187
.target(
185188
name: "WooFoundationCore",
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import SwiftUI
22
import Kingfisher
33

4-
struct ProductImageThumbnail<Placeholder: View>: View {
4+
public struct ProductImageThumbnail<Placeholder: View>: View {
55
private let productImageURL: URL?
66
private let productImageSize: CGFloat
77
private let scale: CGFloat
@@ -25,13 +25,13 @@ struct ProductImageThumbnail<Placeholder: View>: View {
2525
)
2626
}
2727

28-
init(productImageURL: URL?,
29-
productImageSize: CGFloat,
30-
scale: CGFloat,
31-
productImageCornerRadius: CGFloat = 0,
32-
foregroundColor: Color,
33-
cachesOriginalImage: Bool = false,
34-
@ViewBuilder placeholder: () -> Placeholder) {
28+
public init(productImageURL: URL?,
29+
productImageSize: CGFloat,
30+
scale: CGFloat,
31+
productImageCornerRadius: CGFloat = 0,
32+
foregroundColor: Color,
33+
cachesOriginalImage: Bool = false,
34+
@ViewBuilder placeholder: () -> Placeholder) {
3535
self.productImageURL = productImageURL
3636
self.productImageSize = productImageSize
3737
self.scale = scale
@@ -41,7 +41,7 @@ struct ProductImageThumbnail<Placeholder: View>: View {
4141
self.placeholder = placeholder()
4242
}
4343

44-
var body: some View {
44+
public var body: some View {
4545
KFImage
4646
.url(productImageURL)
4747
.cacheOriginalImage(cachesOriginalImage)
@@ -57,22 +57,3 @@ struct ProductImageThumbnail<Placeholder: View>: View {
5757
.accessibilityHidden(true)
5858
}
5959
}
60-
61-
// Convenience initializer that maintains the default behavior.
62-
extension ProductImageThumbnail where Placeholder == Image {
63-
init(productImageURL: URL?,
64-
productImageSize: CGFloat,
65-
scale: CGFloat,
66-
productImageCornerRadius: CGFloat = 0,
67-
foregroundColor: Color,
68-
cachesOriginalImage: Bool = false) {
69-
self.init(productImageURL: productImageURL,
70-
productImageSize: productImageSize,
71-
scale: scale,
72-
productImageCornerRadius: productImageCornerRadius,
73-
foregroundColor: foregroundColor,
74-
cachesOriginalImage: cachesOriginalImage) {
75-
Image(uiImage: .productPlaceholderImage)
76-
}
77-
}
78-
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import SwiftUI
2+
import struct WooFoundation.ProductImageThumbnail
3+
4+
// Convenience initializer that maintains the default behavior.
5+
extension ProductImageThumbnail where Placeholder == Image {
6+
init(productImageURL: URL?,
7+
productImageSize: CGFloat,
8+
scale: CGFloat,
9+
productImageCornerRadius: CGFloat = 0,
10+
foregroundColor: Color,
11+
cachesOriginalImage: Bool = false) {
12+
self.init(productImageURL: productImageURL,
13+
productImageSize: productImageSize,
14+
scale: scale,
15+
productImageCornerRadius: productImageCornerRadius,
16+
foregroundColor: foregroundColor,
17+
cachesOriginalImage: cachesOriginalImage) {
18+
Image(uiImage: .productPlaceholderImage)
19+
}
20+
}
21+
}

WooCommerce/Classes/POS/Presentation/Reusable Views/POSItemImageView.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import SwiftUI
2+
import struct WooFoundation.ProductImageThumbnail
23

34
enum POSItemImageState {
45
case normal

WooCommerce/Classes/ViewRelated/Orders/Order Creation/CollapsibleProductCard.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import Yosemite
22
import SwiftUI
3+
import struct WooFoundation.ProductImageThumbnail
34

45
/// Displays a single collapsible product row or grouped parent and child product rows
56
struct CollapsibleProductCard: View {

WooCommerce/Classes/ViewRelated/Orders/Order Creation/ProductsSection/ProductDiscountView.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import SwiftUI
22
import Yosemite
3+
import struct WooFoundation.ProductImageThumbnail
34

45
struct ProductDiscountView: View {
56
private let viewModel: ProductDiscountViewModel

WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShipping Items Section/WooShippingItemRow.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import SwiftUI
2+
import struct WooFoundation.ProductImageThumbnail
23

34
/// Row for an item to ship with the Woo Shipping extension.
45
struct WooShippingItemRow: View {

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import Yosemite
22
import SwiftUI
3+
import struct WooFoundation.ProductImageThumbnail
34

45
/// Row for a selectable shipment item to ship with the Woo Shipping extension.
56
struct SelectableShipmentItemRow: View {

WooCommerce/Classes/ViewRelated/Products/ProductSelector/ProductRow.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import SwiftUI
2+
import struct WooFoundation.ProductImageThumbnail
23

34
/// Represent a single product or variation row in the Product section of a New Order or in the ProductSelectorView
45
///

WooCommerce/WooCommerce.xcodeproj/project.pbxproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
01058DD22E4273F2002FADD1 /* UIKitBarcodeObserverTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01058DD12E4273F2002FADD1 /* UIKitBarcodeObserverTests.swift */; };
2828
010F7D872E79B39E002B02EA /* POSFormattableAmountTextFieldAdaptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 010F7D862E79B39E002B02EA /* POSFormattableAmountTextFieldAdaptor.swift */; };
2929
010F7D8B2E79B763002B02EA /* POSCouponCreationSheetAdaptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 010F7D8A2E79B763002B02EA /* POSCouponCreationSheetAdaptor.swift */; };
30+
010F7D8D2E7A8447002B02EA /* ProductImageThumbnail+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 010F7D8C2E7A8447002B02EA /* ProductImageThumbnail+Extensions.swift */; };
3031
011D396F2D09FCD200DB1445 /* CardPresentModalLocationRequired.swift in Sources */ = {isa = PBXBuildFile; fileRef = 011D396E2D09FCCB00DB1445 /* CardPresentModalLocationRequired.swift */; };
3132
011D39712D0A324200DB1445 /* LocationServiceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 011D39702D0A324100DB1445 /* LocationServiceTests.swift */; };
3233
011D7A332CEC877A0007C187 /* CardPresentModalNonRetryableErrorEmailSent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 011D7A322CEC87770007C187 /* CardPresentModalNonRetryableErrorEmailSent.swift */; };
@@ -1644,7 +1645,6 @@
16441645
68A38DF52B293B030090C263 /* MockProductListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68A38DF42B293B030090C263 /* MockProductListViewModel.swift */; };
16451646
68A5221B2BA1804900A6A584 /* PluginDetailsViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68A5221A2BA1804900A6A584 /* PluginDetailsViewModelTests.swift */; };
16461647
68A905012ACCFC13004C71D3 /* CollapsibleProductCard.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68A905002ACCFC13004C71D3 /* CollapsibleProductCard.swift */; };
1647-
68AC9D292ACE598B0042F784 /* ProductImageThumbnail.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68AC9D282ACE598B0042F784 /* ProductImageThumbnail.swift */; };
16481648
68AF3C3B2D01481C006F1ED2 /* POSReceiptEligibilityBanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68AF3C3A2D01481A006F1ED2 /* POSReceiptEligibilityBanner.swift */; };
16491649
68B3BA262D9147480000B2F2 /* AISettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68B3BA252D9147440000B2F2 /* AISettingsView.swift */; };
16501650
68B681162D9257810098D5CD /* PointOfSaleCouponsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68B681152D92577F0098D5CD /* PointOfSaleCouponsController.swift */; };
@@ -3239,6 +3239,7 @@
32393239
01058DD12E4273F2002FADD1 /* UIKitBarcodeObserverTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIKitBarcodeObserverTests.swift; sourceTree = "<group>"; };
32403240
010F7D862E79B39E002B02EA /* POSFormattableAmountTextFieldAdaptor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = POSFormattableAmountTextFieldAdaptor.swift; sourceTree = "<group>"; };
32413241
010F7D8A2E79B763002B02EA /* POSCouponCreationSheetAdaptor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = POSCouponCreationSheetAdaptor.swift; sourceTree = "<group>"; };
3242+
010F7D8C2E7A8447002B02EA /* ProductImageThumbnail+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ProductImageThumbnail+Extensions.swift"; sourceTree = "<group>"; };
32423243
011D396E2D09FCCB00DB1445 /* CardPresentModalLocationRequired.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardPresentModalLocationRequired.swift; sourceTree = "<group>"; };
32433244
011D39702D0A324100DB1445 /* LocationServiceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationServiceTests.swift; sourceTree = "<group>"; };
32443245
011D7A322CEC87770007C187 /* CardPresentModalNonRetryableErrorEmailSent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardPresentModalNonRetryableErrorEmailSent.swift; sourceTree = "<group>"; };
@@ -4842,7 +4843,6 @@
48424843
68A38DF42B293B030090C263 /* MockProductListViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockProductListViewModel.swift; sourceTree = "<group>"; };
48434844
68A5221A2BA1804900A6A584 /* PluginDetailsViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PluginDetailsViewModelTests.swift; sourceTree = "<group>"; };
48444845
68A905002ACCFC13004C71D3 /* CollapsibleProductCard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CollapsibleProductCard.swift; sourceTree = "<group>"; };
4845-
68AC9D282ACE598B0042F784 /* ProductImageThumbnail.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProductImageThumbnail.swift; sourceTree = "<group>"; };
48464846
68AF3C3A2D01481A006F1ED2 /* POSReceiptEligibilityBanner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = POSReceiptEligibilityBanner.swift; sourceTree = "<group>"; };
48474847
68B3BA252D9147440000B2F2 /* AISettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AISettingsView.swift; sourceTree = "<group>"; };
48484848
68B681152D92577F0098D5CD /* PointOfSaleCouponsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PointOfSaleCouponsController.swift; sourceTree = "<group>"; };
@@ -12147,6 +12147,7 @@
1214712147
CE1CCB4C20572444000EE3AC /* Extensions */ = {
1214812148
isa = PBXGroup;
1214912149
children = (
12150+
010F7D8C2E7A8447002B02EA /* ProductImageThumbnail+Extensions.swift */,
1215012151
016582EC2E7897B3001DBB6F /* String+Helpers.swift */,
1215112152
2D88C1102DF883BD00A6FB2C /* AttributedString+Helpers.swift */,
1215212153
2004E2DB2C08E95B00D62521 /* ViewControllerPresenting.swift */,
@@ -13403,7 +13404,6 @@
1340313404
CC53FB3427551A6E00C4CA4F /* ProductRow.swift */,
1340413405
CC53FB39275697B000C4CA4F /* ProductRowViewModel.swift */,
1340513406
B9B7E2E529FBF96100F9CED1 /* ProductSelectorViewModelTracker.swift */,
13406-
68AC9D282ACE598B0042F784 /* ProductImageThumbnail.swift */,
1340713407
02DFD5032B20486C0048CD70 /* ProductStepper.swift */,
1340813408
02DFD5052B2048C50048CD70 /* ProductStepperViewModel.swift */,
1340913409
02FE734A2B21613D00CD486B /* ProductWithQuantityStepperView.swift */,
@@ -16013,7 +16013,6 @@
1601316013
262A098B2628C51D0033AD20 /* OrderAddOnListViewModel.swift in Sources */,
1601416014
0262DA5323A238460029AF30 /* UnitInputTableViewCell.swift in Sources */,
1601516015
D8EE9692264D328A0033B2F9 /* LegacyReceiptViewController.swift in Sources */,
16016-
68AC9D292ACE598B0042F784 /* ProductImageThumbnail.swift in Sources */,
1601716016
CE4FE7D82B7D306200F66DD5 /* MultiSelectionReorderableList.swift in Sources */,
1601816017
CE6E110D2C91E5FF00563DD4 /* WooShippingItems.swift in Sources */,
1601916018
029106BE2BE2868F00C2248B /* CollapsibleOrderFormCardBorder.swift in Sources */,
@@ -16371,6 +16370,7 @@
1637116370
95B6C6102D9DADAA00E1A661 /* WPComLoginGravatarView.swift in Sources */,
1637216371
028FF8E32AA1E1C60038964F /* ProductDetailsCellViewModel+AddOns.swift in Sources */,
1637316372
DEC2962726C17AD8005A056B /* ShippingLabelCustomsForm+Localization.swift in Sources */,
16373+
010F7D8D2E7A8447002B02EA /* ProductImageThumbnail+Extensions.swift in Sources */,
1637416374
26A630FE253F63C300CBC3B1 /* RefundableOrderItem.swift in Sources */,
1637516375
CEE006052077D1280079161F /* SummaryTableViewCell.swift in Sources */,
1637616376
DEE215342D1297CD004A11F3 /* UserDefaults+EditStoreList.swift in Sources */,

0 commit comments

Comments
 (0)