Skip to content

Commit

Permalink
Refresh stats after switching back to the app (#23643)
Browse files Browse the repository at this point in the history
* Stats: Refresh current tab when view controller is not updated

Relates to #23604.

* Move adding observer code to viewWillAppear to match the removing code

Relates to #23604.
  • Loading branch information
crazytonyli authored Oct 3, 2024
1 parent d30b801 commit 2f9b9a2
Show file tree
Hide file tree
Showing 7 changed files with 27 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ class SiteStatsInsightsTableViewController: SiteStatsBaseTableViewController, St
viewModel?.removeListeners()
}

private func refreshInsights(forceRefresh: Bool = false) {
func refreshInsights(forceRefresh: Bool = false) {
viewModel?.refreshInsights(forceRefresh: forceRefresh)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,15 @@ final class SiteStatsPeriodTableViewController: SiteStatsBaseTableViewController
}
}

func refreshData() {
guard viewIsVisible() else {
refreshControl.endRefreshing()
return
}
addViewModelListeners()
viewModel.refreshTrafficOverviewData(withDate: datePickerViewModel.date, forPeriod: datePickerViewModel.period)
}

}

// MARK: - Private Extension
Expand Down Expand Up @@ -190,15 +199,6 @@ private extension SiteStatsPeriodTableViewController {
refreshData()
}

func refreshData() {
guard viewIsVisible() else {
refreshControl.endRefreshing()
return
}
addViewModelListeners()
viewModel.refreshTrafficOverviewData(withDate: datePickerViewModel.date, forPeriod: datePickerViewModel.period)
}

func applyTableUpdates() {
tableHandler.diffableDataSource.apply(viewModel.tableViewSnapshot(), animatingDifferences: false)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,11 @@ class PostStatsTableViewController: UITableViewController, StoryboardLoadable {
ImmuTable.registerRows(tableRowTypes(), tableView: tableView)
initViewModel()
trackAccessEvent()
addWillEnterForegroundObserver()
}

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
addWillEnterForegroundObserver()
JetpackFeaturesRemovalCoordinator.presentOverlayIfNeeded(in: self, source: .stats)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,10 @@ class SiteStatsDetailTableViewController: UITableViewController, StoryboardLoada
ImmuTable.registerRows(tableRowTypes(), tableView: tableView)
tableView.register(SiteStatsTableHeaderView.defaultNib,
forHeaderFooterViewReuseIdentifier: SiteStatsTableHeaderView.defaultNibName)
}

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
addWillEnterForegroundObserver()
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,10 @@ class SiteStatsInsightsDetailsTableViewController: SiteStatsBaseTableViewControl
refreshControl.addTarget(self, action: #selector(refreshData), for: .valueChanged)
tableView.estimatedSectionHeaderHeight = SiteStatsTableHeaderView.estimatedHeight
ImmuTable.registerRows(tableRowTypes(), tableView: tableView)
}

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
addWillEnterForegroundObserver()
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,13 +104,13 @@ class SiteStatsDashboardViewController: UIViewController {
setupFilterBar()
restoreSelectedDateFromUserDefaults()
restoreSelectedTabFromUserDefaults()
addWillEnterForegroundObserver()
configureNavBar()
view.accessibilityIdentifier = "stats-dashboard"
}

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
addWillEnterForegroundObserver()
JetpackFeaturesRemovalCoordinator.presentOverlayIfNeeded(in: self, source: .stats)
}

Expand Down Expand Up @@ -244,18 +244,24 @@ private extension SiteStatsDashboardViewController {
pageViewController?.setViewControllers([insightsTableViewController],
direction: .forward,
animated: false)
} else {
insightsTableViewController.refreshInsights()
}
case .traffic:
if oldSelectedTab != .traffic || pageViewControllerIsEmpty {
pageViewController?.setViewControllers([trafficTableViewController],
direction: .forward,
animated: false)
} else {
trafficTableViewController.refreshData()
}
case .subscribers:
if oldSelectedTab != .subscribers || pageViewControllerIsEmpty {
pageViewController?.setViewControllers([subscribersViewController],
direction: .forward,
animated: false)
} else {
subscribersViewController.refreshData()
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ final class StatsSubscribersViewController: SiteStatsBaseTableViewController {
cancellables = []
}

@objc private func refreshData() {
@objc func refreshData() {
viewModel.refreshData()

DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
Expand Down

0 comments on commit 2f9b9a2

Please sign in to comment.