@@ -17,6 +17,10 @@ class MySiteViewController: UIViewController, NoResultsViewHost {
1717 }
1818 }
1919
20+ private var isShowingDashboard : Bool {
21+ return segmentedControl. selectedSegmentIndex == Section . dashboard. rawValue
22+ }
23+
2024 private lazy var scrollView : UIScrollView = {
2125 let scrollView = UIScrollView ( )
2226 scrollView. translatesAutoresizingMaskIntoConstraints = false
@@ -41,8 +45,10 @@ class MySiteViewController: UIViewController, NoResultsViewHost {
4145 } ( )
4246
4347 private lazy var segmentedControl : UISegmentedControl = {
44- let segmentedControl = UISegmentedControl ( )
48+ let segmentedControl = UISegmentedControl ( items : Section . allCases . map { $0 . title } )
4549 segmentedControl. translatesAutoresizingMaskIntoConstraints = false
50+ segmentedControl. addTarget ( self , action: #selector( segmentedControlValueChanged ( _: ) ) , for: . valueChanged)
51+ segmentedControl. selectedSegmentIndex = 0
4652 return segmentedControl
4753 } ( )
4854
@@ -82,6 +88,7 @@ class MySiteViewController: UIViewController, NoResultsViewHost {
8288
8389 addSitePickerIfNeeded ( for: newBlog)
8490 showBlogDetails ( for: newBlog)
91+ updateSegmentedControl ( for: newBlog)
8592 }
8693
8794 get {
@@ -114,7 +121,6 @@ class MySiteViewController: UIViewController, NoResultsViewHost {
114121 setupView ( )
115122 setupConstraints ( )
116123 setupNavigationItem ( )
117- setupSegmentedControl ( )
118124 subscribeToPostSignupNotifications ( )
119125 subscribeToModelChanges ( )
120126 }
@@ -156,16 +162,13 @@ class MySiteViewController: UIViewController, NoResultsViewHost {
156162 NotificationCenter . default. addObserver ( self , selector: #selector( showAddSelfHostedSite) , name: . addSelfHosted, object: nil )
157163 }
158164
159- private func setupSegmentedControl( ) {
160- segmentedControlContainerView. isHidden = !FeatureFlag. mySiteDashboard. enabled
161-
162- segmentedControl. removeAllSegments ( )
163- Section . allCases. forEach { section in
164- segmentedControl. insertSegment ( withTitle: section. title, at: section. rawValue, animated: false )
165+ private func updateSegmentedControl( for blog: Blog ) {
166+ guard FeatureFlag . mySiteDashboard. enabled else {
167+ return
165168 }
166- segmentedControl. selectedSegmentIndex = 0
167169
168- segmentedControl. addTarget ( self , action: #selector( segmentedControlValueChanged ( _: ) ) , for: . valueChanged)
170+ // The segmented control should be hidden if the blog is not a WP.com/Atomic/Jetpack site, or if the device is an iPad
171+ segmentedControlContainerView. isHidden = !blog. isAccessibleThroughWPCom ( ) || UIDevice . isPad ( )
169172 }
170173
171174 private func setupView( ) {
@@ -288,6 +291,7 @@ class MySiteViewController: UIViewController, NoResultsViewHost {
288291
289292 addSitePickerIfNeeded ( for: mainBlog)
290293 showBlogDetails ( for: mainBlog)
294+ updateSegmentedControl ( for: mainBlog)
291295 }
292296
293297 @objc
@@ -575,7 +579,18 @@ class MySiteViewController: UIViewController, NoResultsViewHost {
575579 let sitePickerViewController = SitePickerViewController ( blog: blog, meScenePresenter: meScenePresenter)
576580
577581 sitePickerViewController. onBlogSwitched = { [ weak self] blog in
578- self ? . updateChildViewController ( for: blog)
582+
583+ guard let self = self else {
584+ return
585+ }
586+
587+ if !blog. isAccessibleThroughWPCom ( ) && self . isShowingDashboard {
588+ self . segmentedControl. selectedSegmentIndex = Section . siteMenu. rawValue
589+ self . segmentedControl. sendActions ( for: . valueChanged)
590+ }
591+
592+ self . updateSegmentedControl ( for: blog)
593+ self . updateChildViewController ( for: blog)
579594 }
580595
581596 return sitePickerViewController
@@ -589,6 +604,7 @@ class MySiteViewController: UIViewController, NoResultsViewHost {
589604 switch section {
590605 case . siteMenu:
591606 blogDetailsViewController? . blog = blog
607+ blogDetailsViewController? . showInitialDetailsForBlog ( )
592608 blogDetailsViewController? . tableView. reloadData ( )
593609 blogDetailsViewController? . preloadMetadata ( )
594610 case . dashboard:
0 commit comments