Skip to content

Commit 5f4ad85

Browse files
committed
Refactor description generation functions to computed properties
1 parent e456e6d commit 5f4ad85

File tree

3 files changed

+29
-27
lines changed

3 files changed

+29
-27
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -203,8 +203,8 @@ private extension AnalyticsHubViewModel {
203203

204204
static func timeRangeCard(timeRangeSelection: AnalyticsHubTimeRangeSelection) -> AnalyticsTimeRangeCardViewModel {
205205
return AnalyticsTimeRangeCardViewModel(selectedRangeTitle: timeRangeSelection.rangeSelectionDescription,
206-
currentRangeSubtitle: timeRangeSelection.generateCurrentRangeDescription(),
207-
previousRangeSubtitle: timeRangeSelection.generatePreviousRangeDescription())
206+
currentRangeSubtitle: timeRangeSelection.currentRangeDescription,
207+
previousRangeSubtitle: timeRangeSelection.previousRangeDescription)
208208
}
209209
}
210210

WooCommerce/Classes/ViewRelated/Dashboard/Analytics Hub/Time Range/AnalyticsHubTimeRange.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ struct AnalyticsHubTimeRange {
44
let start: Date
55
let end: Date
66

7-
func generateDescription(simplified: Bool, calendar: Calendar) -> String {
7+
func formatToString(simplified: Bool, calendar: Calendar) -> String {
88
if simplified {
99
return DateFormatter.Stats.analyticsHubDayMonthYearFormatter.string(from: start)
1010
}

WooCommerce/Classes/ViewRelated/Dashboard/Analytics Hub/Time Range/AnalyticsHubTimeRangeSelection.swift

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,30 @@ import Yosemite
77
public class AnalyticsHubTimeRangeSelection {
88
private let currentTimeRange: AnalyticsHubTimeRange?
99
private let previousTimeRange: AnalyticsHubTimeRange?
10-
private let currentRangeDescription: String?
11-
private let previousRangeDescription: String?
10+
private let formattedCurrentRangeText: String?
11+
private let formattedPreviousRangeText: String?
1212
let rangeSelectionDescription: String
1313

14+
/// Provide a date description of the current time range set internally.
15+
/// - Returns the Time range in a UI friendly format. If the current time range is not available,
16+
/// then returns an presentable error message.
17+
var currentRangeDescription: String {
18+
guard let currentTimeRangeDescription = formattedCurrentRangeText else {
19+
return Localization.noCurrentPeriodAvailable
20+
}
21+
return currentTimeRangeDescription
22+
}
23+
24+
/// Generates a date description of the previous time range set internally.
25+
/// - Returns the Time range in a UI friendly format. If the previous time range is not available,
26+
/// then returns an presentable error message.
27+
var previousRangeDescription: String {
28+
guard let previousTimeRangeDescription = formattedPreviousRangeText else {
29+
return Localization.noPreviousPeriodAvailable
30+
}
31+
return previousTimeRangeDescription
32+
}
33+
1434
//TODO: abandon usage of the ISO 8601 Calendar and build one based on the Site calendar configuration
1535
init(selectionType: SelectionType,
1636
currentDate: Date = Date(),
@@ -35,8 +55,10 @@ public class AnalyticsHubTimeRangeSelection {
3555
self.previousTimeRange = previousTimeRange
3656

3757
let simplifiedDescription = selectionType == .today
38-
self.currentRangeDescription = currentTimeRange?.generateDescription(simplified: simplifiedDescription, calendar: calendar)
39-
self.previousRangeDescription = previousTimeRange?.generateDescription(simplified: simplifiedDescription, calendar: calendar)
58+
self.formattedCurrentRangeText = currentTimeRange?.formatToString(simplified: simplifiedDescription,
59+
calendar: calendar)
60+
self.formattedPreviousRangeText = previousTimeRange?.formatToString(simplified: simplifiedDescription,
61+
calendar: calendar)
4062
self.rangeSelectionDescription = selectionType.description
4163
}
4264

@@ -59,26 +81,6 @@ public class AnalyticsHubTimeRangeSelection {
5981
}
6082
return previousTimeRange
6183
}
62-
63-
/// Generates a date description of the previous time range set internally.
64-
/// - Returns the Time range in a UI friendly format. If the previous time range is not available,
65-
/// then returns an presentable error message.
66-
func generateCurrentRangeDescription() -> String {
67-
guard let currentTimeRangeDescription = currentRangeDescription else {
68-
return Localization.noCurrentPeriodAvailable
69-
}
70-
return currentTimeRangeDescription
71-
}
72-
73-
/// Generates a date description of the previous time range set internally.
74-
/// - Returns the Time range in a UI friendly format. If the previous time range is not available,
75-
/// then returns an presentable error message.
76-
func generatePreviousRangeDescription() -> String {
77-
guard let previousTimeRangeDescription = previousRangeDescription else {
78-
return Localization.noPreviousPeriodAvailable
79-
}
80-
return previousTimeRangeDescription
81-
}
8284
}
8385

8486
// MARK: - Time Range Selection Type

0 commit comments

Comments
 (0)