Skip to content

Commit 72571ae

Browse files
committed
Preselect dates on the range time picker
1 parent b8ba233 commit 72571ae

File tree

3 files changed

+29
-7
lines changed

3 files changed

+29
-7
lines changed

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,7 @@ struct AnalyticsTimeRangeCard: View {
3838
ServiceLocator.analytics.track(event: .AnalyticsHub.dateRangeOptionSelected(selection.tracksIdentifier))
3939
}
4040
.sheet(isPresented: $showCustomRangeSelectionView) {
41-
// TODO: Pass real dates here
42-
RangedDatePicker() { start, end in
41+
RangedDatePicker(startDate: selectionType.startDate, endDate: selectionType.endDate) { start, end in
4342
showTimeRangeSelectionView = false // Dismiss the initial sheet for a smooth transition
4443
self.selectionType = .custom(start: start, end: end)
4544
}

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

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ struct AnalyticsHubRangeAdapter {
88

99
/// Converts an `AnalyticsHubTimeRangeSelection.SelectionType` range into a `AnalyticsTimeRangeCard.Range`.
1010
///
11-
fileprivate static func timeCardRange(from analyticsHubRange: AnalyticsHubTimeRangeSelection.SelectionType) -> AnalyticsTimeRangeCard.Range {
11+
static func timeCardRange(from analyticsHubRange: AnalyticsHubTimeRangeSelection.SelectionType) -> AnalyticsTimeRangeCard.Range {
1212
switch analyticsHubRange {
1313
case .custom:
1414
return .custom
@@ -37,7 +37,7 @@ struct AnalyticsHubRangeAdapter {
3737

3838
/// Converts an `AnalyticsTimeRangeCard.Range` into a `AnalyticsHubTimeRangeSelection.SelectionType` range.
3939
///
40-
fileprivate static func analyticsHubRange(from timeCardRange: AnalyticsTimeRangeCard.Range) -> AnalyticsHubTimeRangeSelection.SelectionType {
40+
static func analyticsHubRange(from timeCardRange: AnalyticsTimeRangeCard.Range) -> AnalyticsHubTimeRangeSelection.SelectionType {
4141
switch timeCardRange {
4242
case .custom:
4343
return .custom(start: Date(), end: Date())
@@ -179,6 +179,17 @@ struct AnalyticsHubRangeAdapter {
179179
return TracksIdentifier.yearToDate
180180
}
181181
}
182+
183+
/// Extracts the dates from an analytics hub range custom type.
184+
///
185+
static func customDates(from analyticsHubRange: AnalyticsHubTimeRangeSelection.SelectionType) -> (start: Date, end: Date)? {
186+
switch analyticsHubRange {
187+
case let .custom(startDate, endDate):
188+
return (startDate, endDate)
189+
default:
190+
return nil
191+
}
192+
}
182193
}
183194

184195
// MARK: Constants
@@ -241,4 +252,16 @@ extension AnalyticsHubTimeRangeSelection.SelectionType {
241252
var asTimeCardRange: AnalyticsTimeRangeCard.Range {
242253
AnalyticsHubRangeAdapter.timeCardRange(from: self)
243254
}
255+
256+
/// Extracts the start date from custom range type.
257+
///
258+
var startDate: Date? {
259+
AnalyticsHubRangeAdapter.customDates(from: self)?.start
260+
}
261+
262+
/// Extracts the end date from custom range type.
263+
///
264+
var endDate: Date? {
265+
AnalyticsHubRangeAdapter.customDates(from: self)?.end
266+
}
244267
}

WooCommerce/Classes/ViewRelated/ReusableViews/SwiftUI Components/RangedDatePicker.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ struct RangedDatePicker: View {
2222

2323
/// Custom `init` to provide intial start and end dates.
2424
///
25-
init(startDate: Date = Date(), endDate: Date = Date(), datesSelected: ((_ start: Date, _ end: Date) -> Void)? = nil) {
26-
self._startDate = State(initialValue: startDate)
27-
self._endDate = State(initialValue: endDate)
25+
init(startDate: Date? = nil, endDate: Date? = nil, datesSelected: ((_ start: Date, _ end: Date) -> Void)? = nil) {
26+
self._startDate = State(initialValue: startDate ?? Date())
27+
self._endDate = State(initialValue: endDate ?? Date())
2828
self.datesSelected = datesSelected
2929
}
3030

0 commit comments

Comments
 (0)