diff --git a/Tusker/Screens/Timeline/TimelineTableViewController.swift b/Tusker/Screens/Timeline/TimelineTableViewController.swift index 254bd845..b5423d0b 100644 --- a/Tusker/Screens/Timeline/TimelineTableViewController.swift +++ b/Tusker/Screens/Timeline/TimelineTableViewController.swift @@ -168,7 +168,7 @@ class TimelineTableViewController: DiffableTimelineLikeTableViewController Void) { + override func loadOlderItems(currentSnapshot: @escaping () -> Snapshot, completion: @escaping (LoadResult) -> Void) { guard let older = older else { completion(.failure(.noOlder)) return @@ -176,12 +176,12 @@ class TimelineTableViewController: DiffableTimelineLikeTableViewController Void) { + override func loadNewerItems(currentSnapshot: @escaping () -> Snapshot, completion: @escaping (LoadResult) -> Void) { guard let newer = newer else { completion(.failure(.noNewer)) return @@ -228,7 +228,7 @@ class TimelineTableViewController: DiffableTimelineLikeTableViewController Snapshot = { + let snapshot = self.dataSource.snapshot() + + for section in self.timelineContentSections() { + if snapshot.indexOfSection(section) != nil, + let first = snapshot.itemIdentifiers(inSection: section).first { + firstItem = first + break + } } + + return snapshot } - loadNewerItems(currentSnapshot: snapshot) { result in + loadNewerItems(currentSnapshot: currentSnapshot) { result in DispatchQueue.main.async { self.refreshControl?.endRefreshing() self.state = .loaded @@ -231,8 +235,8 @@ class DiffableTimelineLikeTableViewController Void) { + func loadOlderItems(currentSnapshot: @escaping () -> Snapshot, completion: @escaping (LoadResult) -> Void) { fatalError("loadOlderItesm(completion:) must be implemented by subclasses") } - func loadNewerItems(currentSnapshot: Snapshot, completion: @escaping (LoadResult) -> Void) { + func loadNewerItems(currentSnapshot: @escaping () -> Snapshot, completion: @escaping (LoadResult) -> Void) { fatalError("loadNewerItems(completion:) must be implemented by subclasses") }