Skip to content

Commit 888ac29

Browse files
authored
Merge pull request #18430 from wordpress-mobile/feature/18176-show_site_selector
Blogging Prompts Feature Introduction: show site selector
2 parents 797b570 + 422a425 commit 888ac29

1 file changed

Lines changed: 42 additions & 7 deletions

File tree

WordPress/Classes/ViewRelated/Feature Introduction/Blogging Prompts/BloggingPromptsIntroductionPresenter.swift

Lines changed: 42 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ class BloggingPromptsIntroductionPresenter: NSObject {
2020
return UINavigationController(rootViewController: vc)
2121
}()
2222

23+
private var siteSelectorNavigationController: UINavigationController?
24+
private var selectedBlog: Blog?
25+
2326
private lazy var accountSites: [Blog]? = {
2427
return AccountService(managedObjectContext: ContextManager.shared.mainContext).defaultWordPressComAccount()?.visibleBlogs
2528
}()
@@ -49,24 +52,52 @@ class BloggingPromptsIntroductionPresenter: NSObject {
4952
// MARK: - Action Handling
5053

5154
func primaryButtonSelected() {
52-
accountHasMultipleSites ? showSiteSelector() : showPostCreation()
55+
showSiteSelectorIfNeeded(completion: { [weak self] in
56+
self?.showPostCreation()
57+
})
5358
}
5459

5560
func secondaryButtonSelected() {
56-
accountHasMultipleSites ? showSiteSelector() : showRemindersScheduling()
61+
showSiteSelectorIfNeeded(completion: { [weak self] in
62+
self?.showRemindersScheduling()
63+
})
5764
}
5865

5966
}
6067

6168
private extension BloggingPromptsIntroductionPresenter {
6269

63-
func showSiteSelector() {
64-
// TODO: show site selector
65-
navigationController.dismiss(animated: true)
70+
func showSiteSelectorIfNeeded(completion: @escaping () -> Void) {
71+
guard accountHasMultipleSites else {
72+
completion()
73+
return
74+
}
75+
76+
let successHandler: BlogSelectorSuccessDotComHandler = { [weak self] (dotComID: NSNumber?) in
77+
self?.selectedBlog = self?.accountSites?.first(where: { $0.dotComID == dotComID })
78+
self?.siteSelectorNavigationController?.dismiss(animated: true)
79+
completion()
80+
}
81+
82+
let dismissHandler: BlogSelectorDismissHandler = {
83+
completion()
84+
}
85+
86+
let selectorViewController = BlogSelectorViewController(selectedBlogDotComID: nil,
87+
successHandler: successHandler,
88+
dismissHandler: dismissHandler)
89+
90+
selectorViewController.displaysOnlyDefaultAccountSites = true
91+
selectorViewController.dismissOnCompletion = false
92+
selectorViewController.dismissOnCancellation = true
93+
94+
let selectorNavigationController = UINavigationController(rootViewController: selectorViewController)
95+
self.navigationController.present(selectorNavigationController, animated: true)
96+
siteSelectorNavigationController = selectorNavigationController
6697
}
6798

6899
func showPostCreation() {
69-
guard let blog = accountSites?.first,
100+
guard let blog = blogToUse(),
70101
let presentingViewController = presentingViewController else {
71102
navigationController.dismiss(animated: true)
72103
return
@@ -85,7 +116,7 @@ private extension BloggingPromptsIntroductionPresenter {
85116
}
86117

87118
func showRemindersScheduling() {
88-
guard let blog = accountSites?.first,
119+
guard let blog = blogToUse(),
89120
let presentingViewController = presentingViewController else {
90121
navigationController.dismiss(animated: true)
91122
return
@@ -98,6 +129,10 @@ private extension BloggingPromptsIntroductionPresenter {
98129
})
99130
}
100131

132+
func blogToUse() -> Blog? {
133+
return accountHasMultipleSites ? selectedBlog : accountSites?.first
134+
}
135+
101136
func trackPostEditorShown(_ blog: Blog) {
102137
WPAppAnalytics.track(.editorCreatedPost,
103138
withProperties: [WPAppAnalyticsKeyTapSource: "blogging_prompts_feature_introduction", WPAppAnalyticsKeyPostType: "post"],

0 commit comments

Comments
 (0)