@@ -8,7 +8,7 @@ protocol PostsCardView: AnyObject {
88 func removeIfNeeded( )
99}
1010
11- enum PostsListSection {
11+ enum PostsListSection : CaseIterable {
1212 case posts
1313 case error
1414 case loading
@@ -40,7 +40,7 @@ class PostsCardViewModel: NSObject {
4040 didSet {
4141 if oldValue != currentState {
4242 forceReloadSnapshot ( )
43- trackCardDisaplyedIfNeeded ( )
43+ trackCardDisplayedIfNeeded ( )
4444 }
4545 }
4646 }
@@ -259,7 +259,7 @@ private extension PostsCardViewModel {
259259 return false
260260 }
261261
262- func trackCardDisaplyedIfNeeded ( ) {
262+ func trackCardDisplayedIfNeeded ( ) {
263263 switch currentState {
264264 case . posts:
265265 BlogDashboardAnalytics . shared. track ( . dashboardCardShown, properties: [ " type " : " post " , " sub_type " : status. rawValue] )
@@ -336,12 +336,12 @@ extension PostsCardViewModel: NSFetchedResultsControllerDelegate {
336336
337337 private func createSnapshot( currentSnapshot: Snapshot , postsSnapshot: PostsSnapshot ) -> Snapshot {
338338 var snapshot = Snapshot ( )
339+ snapshot. appendSections ( PostsListSection . allCases)
339340 switch currentState {
340341 case . posts:
341342 var adjustedPostsSnapshot = postsSnapshot
342343 adjustedPostsSnapshot. deleteItems ( adjustedPostsSnapshot. itemIdentifiers. enumerated ( ) . filter { $0. offset > fetchedResultsController. fetchRequest. fetchLimit - 1 } . map { $0. element } )
343344 let postItems : [ PostsListItem ] = adjustedPostsSnapshot. itemIdentifiers. map { . post( $0) }
344- snapshot. appendSections ( [ . posts] )
345345 snapshot. appendItems ( postItems, toSection: . posts)
346346
347347 let reloadIdentifiers : [ PostsListItem ] = snapshot. itemIdentifiers. compactMap { item in
@@ -358,21 +358,18 @@ extension PostsCardViewModel: NSFetchedResultsControllerDelegate {
358358 snapshot. reloadItems ( reloadIdentifiers)
359359
360360 case . error:
361- snapshot. appendSections ( [ . error] )
362361 snapshot. appendItems ( [ . error] , toSection: . error)
363362
364363 case . loading:
365364 let items : [ PostsListItem ] = ( 0 ..< Constants . numberOfPosts) . map { . ghost( $0) }
366- snapshot. appendSections ( [ . loading] )
367365 snapshot. appendItems ( items, toSection: . loading)
368366 }
369367 return snapshot
370368 }
371369
372370 private func applySnapshot( _ snapshot: Snapshot , to dataSource: DataSource ) {
373- let shouldAnimate = view? . tableView. numberOfSections != 0 && view? . tableView. numberOfRows ( inSection: 0 ) != 0
374371 dataSource. defaultRowAnimation = . fade
375- dataSource. apply ( snapshot, animatingDifferences: shouldAnimate , completion: nil )
372+ dataSource. apply ( snapshot, animatingDifferences: true , completion: nil )
376373 view? . tableView. allowsSelection = currentState == . posts
377374 }
378375}
0 commit comments