@@ -2,7 +2,7 @@ import UIKit
22import WordPressFlux
33import WordPressShared
44
5- @objc open class HomepageSettingsViewController : UITableViewController {
5+ @objc class HomepageSettingsViewController : UITableViewController {
66
77 fileprivate enum PageSelectionType {
88 case homepage
@@ -44,13 +44,15 @@ import WordPressShared
4444 ///
4545 /// - Parameter blog: The blog for which we want to configure Homepage settings
4646 ///
47- @objc public convenience init ( blog: Blog ) {
48- self . init ( style: . insetGrouped)
49-
47+ @objc init ( blog: Blog ) {
48+ self . coreDataStack = ContextManager . shared
5049 self . blog = blog
50+ self . postRepository = PostRepository ( coreDataStack: self . coreDataStack)
51+ super. init ( style: . insetGrouped)
52+ }
5153
52- let context = blog . managedObjectContext ?? ContextManager . shared . mainContext
53- postService = PostService ( managedObjectContext : context )
54+ required init ? ( coder : NSCoder ) {
55+ fatalError ( " init(coder:) has not been implemented " )
5456 }
5557
5658 open override func viewDidLoad( ) {
@@ -66,25 +68,23 @@ import WordPressShared
6668 ImmuTable . registerRows ( [ CheckmarkRow . self, NavigationItemRow . self, ActivityIndicatorRow . self] , tableView: tableView)
6769 reloadViewModel ( )
6870
69- fetchAllPages ( )
70- }
71-
72- private func fetchAllPages( ) {
73- let options = PostServiceSyncOptions ( )
74- options. number = 20
75-
76- postService. syncPosts ( ofType: . page, with: options, for: blog, success: { [ weak self] posts in
77- self ? . reloadViewModel ( )
78- } , failure: { _ in
79-
80- } )
71+ fetchAllPagesTask = postRepository. fetchAllPages ( statuses: [ ] , in: TaggedManagedObjectID ( blog) )
8172 }
8273
8374 open override func viewWillAppear( _ animated: Bool ) {
8475 super. viewWillAppear ( animated)
8576 animateDeselectionInteractively ( )
8677 }
8778
79+ open override func viewDidDisappear( _ animated: Bool ) {
80+ super. viewDidDisappear ( animated)
81+
82+ if self . navigationController == nil {
83+ fetchAllPagesTask? . cancel ( )
84+ fetchAllPagesTask = nil
85+ }
86+ }
87+
8888 // MARK: - Model
8989
9090 fileprivate func reloadViewModel( ) {
@@ -151,23 +151,23 @@ import WordPressShared
151151
152152 var selectedPagesRows : [ ImmuTableRow ] {
153153 let homepageID = blog. homepagePageID
154- let homepage = homepageID. flatMap { blog. lookupPost ( withID: $0, in: postService . managedObjectContext ) }
154+ let homepage = homepageID. flatMap { blog. lookupPost ( withID: $0, in: coreDataStack . mainContext ) }
155155 let homepageTitle = homepage? . titleForDisplay ( ) ?? " "
156156
157157 let postsPageID = blog. homepagePostsPageID
158- let postsPage = postsPageID. flatMap { blog. lookupPost ( withID: $0, in: postService . managedObjectContext ) }
158+ let postsPage = postsPageID. flatMap { blog. lookupPost ( withID: $0, in: coreDataStack . mainContext ) }
159159 let postsPageTitle = postsPage? . titleForDisplay ( ) ?? " "
160160
161161 let homepageRow = pageSelectionRow ( selectionType: . homepage,
162162 detail: homepageTitle,
163- selectedPostID: blog? . homepagePageID,
164- hiddenPostID: blog? . homepagePostsPageID,
163+ selectedPostID: blog. homepagePageID,
164+ hiddenPostID: blog. homepagePostsPageID,
165165 isInProgress: HomepageChange . isSelectedHomepage,
166166 changeForPost: { . selectedHomepage( $0) } )
167167 let postsPageRow = pageSelectionRow ( selectionType: . postsPage,
168168 detail: postsPageTitle,
169- selectedPostID: blog? . homepagePostsPageID,
170- hiddenPostID: blog? . homepagePageID,
169+ selectedPostID: blog. homepagePostsPageID,
170+ hiddenPostID: blog. homepagePageID,
171171 isInProgress: HomepageChange . isSelectedPostsPage,
172172 changeForPost: { . selectedPostsPage( $0) } )
173173 return [ homepageRow, postsPageRow]
@@ -304,9 +304,11 @@ import WordPressShared
304304 }
305305
306306 // MARK: - Private Properties
307- fileprivate var blog : Blog !
307+ private let coreDataStack : CoreDataStackSwift
308+ private let blog : Blog
309+ private let postRepository : PostRepository
308310
309- fileprivate var postService : PostService !
311+ private var fetchAllPagesTask : Task < [ TaggedManagedObjectID < Page > ] , Error > ?
310312
311313 /// Are we currently updating the homepage type?
312314 private var inProgressChange : HomepageChange ? = nil
0 commit comments