@@ -22,7 +22,7 @@ final class StoreStatsV4PeriodViewController: UIViewController {
2222
2323 var siteVisitStatsMode : SiteVisitStatsMode = . default {
2424 didSet {
25- updateSiteVisitStats ( mode : siteVisitStatsMode)
25+ viewModel . siteVisitStatsMode = siteVisitStatsMode
2626 }
2727 }
2828
@@ -154,6 +154,8 @@ final class StoreStatsV4PeriodViewController: UIViewController {
154154 observeSelectedBarIndex ( )
155155 observeTimeRangeBarViewModel ( )
156156 observeReloadChartAnimated ( )
157+ observeVisitorStatsViewState ( )
158+ observeConversionStatsViewState ( )
157159 }
158160
159161 override func viewWillAppear( _ animated: Bool ) {
@@ -204,8 +206,6 @@ private extension StoreStatsV4PeriodViewController {
204206 self . visitorsDataOrRedactedView. isHighlighted = isHighlighted
205207 self . conversionDataOrRedactedView. isHighlighted = isHighlighted
206208 self . revenueData. textColor = textColor
207-
208- self . updateSiteVisitStatsAndConversionRate ( selectedIndex: selectedIndex)
209209 } . store ( in: & cancellables)
210210 }
211211
@@ -220,6 +220,22 @@ private extension StoreStatsV4PeriodViewController {
220220 self ? . reloadChart ( animateChart: animated)
221221 } . store ( in: & cancellables)
222222 }
223+
224+ func observeVisitorStatsViewState( ) {
225+ viewModel. visitorStatsViewState
226+ . sink { [ weak self] viewState in
227+ guard let self = self , self . visitorsDataOrRedactedView != nil else { return }
228+ self . visitorsDataOrRedactedView. state = viewState
229+ } . store ( in: & cancellables)
230+ }
231+
232+ func observeConversionStatsViewState( ) {
233+ viewModel. conversionStatsViewState
234+ . sink { [ weak self] viewState in
235+ guard let self = self , self . conversionDataOrRedactedView != nil else { return }
236+ self . conversionDataOrRedactedView. state = viewState
237+ } . store ( in: & cancellables)
238+ }
223239}
224240
225241// MARK: - Public Interface
@@ -301,9 +317,6 @@ private extension StoreStatsV4PeriodViewController {
301317 // Data
302318 updateStatsDataToDefaultStyles ( )
303319
304- // Visibility
305- updateSiteVisitStats ( mode: siteVisitStatsMode)
306-
307320 // Accessibility elements
308321 xAxisAccessibilityView. isAccessibilityElement = true
309322 xAxisAccessibilityView. accessibilityTraits = . staticText
@@ -400,14 +413,6 @@ private extension StoreStatsV4PeriodViewController {
400413 }
401414}
402415
403- // MARK: - UI Updates
404- //
405- private extension StoreStatsV4PeriodViewController {
406- func updateSiteVisitStats( mode: SiteVisitStatsMode ) {
407- reloadSiteVisitUI ( )
408- }
409- }
410-
411416// MARK: - ChartViewDelegate Conformance (Charts)
412417//
413418extension StoreStatsV4PeriodViewController : ChartViewDelegate {
@@ -433,36 +438,6 @@ private extension StoreStatsV4PeriodViewController {
433438 func updateUI( selectedBarIndex selectedIndex: Int ? ) {
434439 viewModel. selectedIntervalIndex = selectedIndex
435440 }
436-
437- /// Updates visitor and conversion stats based on the selected bar index.
438- ///
439- /// - Parameter selectedIndex: the index of interval data for the bar chart. Nil if no bar is selected.
440- func updateSiteVisitStatsAndConversionRate( selectedIndex: Int ? ) {
441- let mode : SiteVisitStatsMode
442-
443- // Hides site visit stats for "today" when an interval bar is selected.
444- if timeRange == . today, selectedIndex != nil {
445- mode = . hidden
446- } else {
447- mode = siteVisitStatsMode
448- }
449-
450- updateSiteVisitStats ( mode: mode)
451-
452- switch siteVisitStatsMode {
453- case . hidden, . redactedDueToJetpack:
454- break
455- case . default:
456- guard selectedIndex != nil else {
457- reloadSiteVisitUI ( )
458- return
459- }
460- guard visitorsDataOrRedactedView != nil else {
461- return
462- }
463- visitorsDataOrRedactedView. state = . data
464- }
465- }
466441}
467442
468443// MARK: - IAxisValueFormatter Conformance (Charts)
@@ -571,7 +546,6 @@ private extension StoreStatsV4PeriodViewController {
571546
572547 func reloadAllFields( animateChart: Bool = true ) {
573548 viewModel. selectedIntervalIndex = nil
574- reloadSiteVisitUI ( )
575549 reloadChart ( animateChart: animateChart)
576550
577551 view. accessibilityElements = [ ordersTitle as Any ,
@@ -587,17 +561,6 @@ private extension StoreStatsV4PeriodViewController {
587561 chartAccessibilityView as Any ]
588562 }
589563
590- func reloadSiteVisitUI( ) {
591- switch siteVisitStatsMode {
592- case . hidden:
593- visitorsDataOrRedactedView. state = . redacted
594- case . redactedDueToJetpack:
595- visitorsDataOrRedactedView. state = . redactedDueToJetpack
596- case . default:
597- visitorsDataOrRedactedView. state = . data
598- }
599- }
600-
601564 func reloadChart( animateChart: Bool = true ) {
602565 guard lineChartView != nil else {
603566 return
0 commit comments