Skip to content

Commit 86f10d1

Browse files
authored
Merge pull request #8304 from woocommerce/issue/8199-empty-state
2 parents 3332b19 + 2a51b29 commit 86f10d1

File tree

5 files changed

+39
-13
lines changed

5 files changed

+39
-13
lines changed

WooCommerce/Classes/ViewRelated/Dashboard/Analytics Hub/AnalyticsHubViewModel.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,8 @@ private extension AnalyticsHubViewModel {
234234
static func productCard(currentPeriodStats: OrderStatsV4?,
235235
previousPeriodStats: OrderStatsV4?,
236236
itemsSoldStats: TopEarnerStats?) -> AnalyticsProductCardViewModel {
237-
let showSyncError = currentPeriodStats == nil || previousPeriodStats == nil
237+
let showStatsError = currentPeriodStats == nil || previousPeriodStats == nil
238+
let showItemsSoldError = itemsSoldStats == nil
238239
let itemsSold = StatsDataTextFormatter.createItemsSoldText(orderStats: currentPeriodStats)
239240
let itemsSoldDelta = StatsDataTextFormatter.createOrderItemsSoldDelta(from: previousPeriodStats, to: currentPeriodStats)
240241

@@ -243,7 +244,8 @@ private extension AnalyticsHubViewModel {
243244
deltaBackgroundColor: Constants.deltaColor(for: itemsSoldDelta.direction),
244245
itemsSoldData: itemSoldRows(from: itemsSoldStats),
245246
isRedacted: false,
246-
showSyncError: showSyncError)
247+
showStatsError: showStatsError,
248+
showItemsSoldError: showItemsSoldError)
247249
}
248250

249251
/// Helper functions to create `TopPerformersRow.Data` items rom the provided `TopEarnerStats`.

WooCommerce/Classes/ViewRelated/Dashboard/Analytics Hub/AnalyticsProductCard.swift

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,13 @@ struct AnalyticsProductCard: View {
2222
///
2323
let isRedacted: Bool
2424

25-
/// Indicates if there was an error loading the data for the card
25+
/// Indicates if there was an error loading stats part of the card.
2626
///
27-
let showSyncError: Bool
27+
let showStatsError: Bool
28+
29+
/// Indicates if there was an error loading items sold part of the card.
30+
///
31+
let showItemsSoldError: Bool
2832

2933
var body: some View {
3034
VStack(alignment: .leading) {
@@ -50,7 +54,7 @@ struct AnalyticsProductCard: View {
5054
.shimmering(active: isRedacted)
5155
}
5256

53-
if showSyncError {
57+
if showStatsError {
5458
Text(Localization.noProducts)
5559
.foregroundColor(Color(.text))
5660
.subheadlineStyle()
@@ -62,6 +66,14 @@ struct AnalyticsProductCard: View {
6266
.padding(.top, Layout.columnSpacing)
6367
.redacted(reason: isRedacted ? .placeholder : [])
6468
.shimmering(active: isRedacted)
69+
70+
if showItemsSoldError {
71+
Text(Localization.noItemsSold)
72+
.foregroundColor(Color(.text))
73+
.subheadlineStyle()
74+
.frame(maxWidth: .infinity, alignment: .leading)
75+
.padding(.top, Layout.columnSpacing)
76+
}
6577
}
6678
.padding(Layout.cardPadding)
6779
}
@@ -74,6 +86,8 @@ private extension AnalyticsProductCard {
7486
static let itemsSold = NSLocalizedString("Items Sold", comment: "Title for the items sold column on the products card on the analytics hub screen.")
7587
static let noProducts = NSLocalizedString("Unable to load product analytics",
7688
comment: "Text displayed when there is an error loading product stats data.")
89+
static let noItemsSold = NSLocalizedString("Unable to load product items sold analytics",
90+
comment: "Text displayed when there is an error loading items sold stats data.")
7791
}
7892

7993
enum Layout {
@@ -98,15 +112,17 @@ struct AnalyticsProductCardPreviews: PreviewProvider {
98112
.init(imageURL: imageURL, name: "Bird Of Paradise", details: "Net Sales: $23.50", value: "2"),
99113
],
100114
isRedacted: false,
101-
showSyncError: false)
115+
showStatsError: false,
116+
showItemsSoldError: false)
102117
.previewLayout(.sizeThatFits)
103118

104119
AnalyticsProductCard(itemsSold: "-",
105120
delta: "0%",
106121
deltaBackgroundColor: .withColorStudio(.gray, shade: .shade0),
107122
itemsSoldData: [],
108123
isRedacted: false,
109-
showSyncError: true)
124+
showStatsError: true,
125+
showItemsSoldError: true)
110126
.previewLayout(.sizeThatFits)
111127
.previewDisplayName("No data")
112128
}

WooCommerce/Classes/ViewRelated/Dashboard/Analytics Hub/AnalyticsProductCardViewModel.swift

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,13 @@ struct AnalyticsProductCardViewModel {
2525
///
2626
let isRedacted: Bool
2727

28-
/// Indicates if there was an error loading the data for the card
28+
/// Indicates if there was an error loading stats part of the card.
2929
///
30-
let showSyncError: Bool
30+
let showStatsError: Bool
31+
32+
/// Indicates if there was an error loading items sold part of the card.
33+
///
34+
let showItemsSoldError: Bool
3135
}
3236

3337
extension AnalyticsProductCardViewModel {
@@ -41,7 +45,8 @@ extension AnalyticsProductCardViewModel {
4145
deltaBackgroundColor: .lightGray,
4246
itemsSoldData: [.init(imageURL: nil, name: "Product Name", details: "Net Sales", value: "$5678")],
4347
isRedacted: true,
44-
showSyncError: false)
48+
showStatsError: false,
49+
showItemsSoldError: false)
4550
}
4651

4752
}
@@ -55,6 +60,8 @@ extension AnalyticsProductCard {
5560
self.deltaBackgroundColor = viewModel.deltaBackgroundColor
5661
self.itemsSoldData = viewModel.itemsSoldData
5762
self.isRedacted = viewModel.isRedacted
58-
self.showSyncError = viewModel.showSyncError
63+
self.showStatsError = viewModel.showStatsError
64+
self.showItemsSoldError = viewModel.showItemsSoldError
65+
5966
}
6067
}

WooCommerce/Classes/ViewRelated/Dashboard/MyStore/TopPerformersView.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ struct TopPerformersView: View {
3232
Spacer()
3333
Text(valueTitle)
3434
}
35+
.font(.subheadline.bold())
3536
.foregroundColor(Color(.text))
36-
.subheadlineStyle()
3737
.padding(.bottom, Layout.tableSpacing)
3838

3939
// Rows

WooCommerce/WooCommerceTests/ViewRelated/Dashboard/Analytics Hub/AnalyticsHubViewModelTests.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,8 @@ final class AnalyticsHubViewModelTests: XCTestCase {
6161
// Then
6262
XCTAssertTrue(vm.revenueCard.showSyncError)
6363
XCTAssertTrue(vm.ordersCard.showSyncError)
64-
XCTAssertTrue(vm.productCard.showSyncError)
64+
XCTAssertTrue(vm.productCard.showStatsError)
65+
XCTAssertTrue(vm.productCard.showItemsSoldError)
6566
}
6667

6768
func test_cards_viewmodels_redacted_while_updating_from_network() async {

0 commit comments

Comments
 (0)