@@ -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
6168private 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