@@ -11,6 +11,7 @@ final class StatsViewModel: ObservableObject, CardConfigurationDelegate {
1111 updateViewModelsDateRange ( )
1212 if !isNavigationStackLocked {
1313 saveSelectedDateRangePreset ( )
14+ saveSelectedComparisonPeriod ( )
1415 }
1516 if !dateRange. isAdjacent ( to: oldValue) {
1617 clearNavigationStack ( )
@@ -30,6 +31,7 @@ final class StatsViewModel: ObservableObject, CardConfigurationDelegate {
3031 private let userDefaults : UserDefaults
3132 private static let configurationKey = " JetpackStatsTrafficConfiguration "
3233 private static let dateRangePresetKey = " JetpackStatsSelectedDateRangePreset "
34+ private static let comparisonPeriodKey = " JetpackStatsComparisonPeriod "
3335 private static let versionKey = " JetpackStatsVersionKey "
3436
3537 init ( context: StatsContext , userDefaults: UserDefaults = . standard) {
@@ -39,7 +41,11 @@ final class StatsViewModel: ObservableObject, CardConfigurationDelegate {
3941 Self . performMigrations ( userDefaults: userDefaults, context: context)
4042
4143 let preset = Self . loadDateRangePreset ( from: userDefaults)
42- self . dateRange = context. calendar. makeDateRange ( for: preset ?? . last7Days)
44+ let comparison = Self . loadComparisonPeriod ( from: userDefaults)
45+ self . dateRange = context. calendar. makeDateRange (
46+ for: preset ?? . last7Days,
47+ comparison: comparison ?? . precedingPeriod
48+ )
4349
4450 let configuraiton = Self . getConfiguration ( from: userDefaults)
4551 self . trafficCardConfiguration = configuraiton ?? Self . makeDefaultConfiguration ( context: context)
@@ -314,6 +320,18 @@ final class StatsViewModel: ObservableObject, CardConfigurationDelegate {
314320 return preset
315321 }
316322
323+ private func saveSelectedComparisonPeriod( ) {
324+ userDefaults. set ( dateRange. comparison. rawValue, forKey: Self . comparisonPeriodKey)
325+ }
326+
327+ private static func loadComparisonPeriod( from userDefaults: UserDefaults ) -> DateRangeComparisonPeriod ? {
328+ guard let rawValue = userDefaults. string ( forKey: Self . comparisonPeriodKey) ,
329+ let comparisonPeriod = DateRangeComparisonPeriod ( rawValue: rawValue) else {
330+ return nil
331+ }
332+ return comparisonPeriod
333+ }
334+
317335 // MARK: - Reset Settings
318336
319337 /// Resets all persistently stored settings including card configuration and date range preset
@@ -324,6 +342,9 @@ final class StatsViewModel: ObservableObject, CardConfigurationDelegate {
324342 // Reset date range preset
325343 userDefaults. removeObject ( forKey: Self . dateRangePresetKey)
326344
345+ // Reset comparison period
346+ userDefaults. removeObject ( forKey: Self . comparisonPeriodKey)
347+
327348 // Reset date range to default
328349 dateRange = context. calendar. makeDateRange ( for: . last7Days)
329350 }
0 commit comments