Hide public timeline description when user begins scrolling rather than

after cell moves offscreen

Fixes description getting dismissed prematurely on iOS 14 and hitching
when the cell moves offscreen
This commit is contained in:
Shadowfacts 2021-08-15 22:29:14 -04:00
parent e6e5554edf
commit 1e54235ff5
2 changed files with 8 additions and 12 deletions

View File

@ -252,18 +252,13 @@ class TimelineTableViewController: DiffableTimelineLikeTableViewController<Timel
}
}
override func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) {
if let item = dataSource.itemIdentifier(for: indexPath),
case .publicTimelineDescription(local: _) = item {
// trying to remove cells right in didEndDisplaying crashes in UIKit
DispatchQueue.main.async {
self.tableView.contentOffset.y -= cell.bounds.height
var snapshot = self.dataSource.snapshot()
snapshot.deleteItems([item])
self.dataSource.apply(snapshot) {
}
}
override func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
super.scrollViewWillBeginDragging(scrollView)
if isShowingTimelineDescription {
var snapshot = self.dataSource.snapshot()
snapshot.deleteSections([.header])
self.dataSource.apply(snapshot, animatingDifferences: true)
}
}

View File

@ -117,6 +117,7 @@ class DiffableTimelineLikeTableViewController<Section: Hashable & CaseIterable,
case let .success(snapshot):
self.dataSource.apply(snapshot, animatingDifferences: false)
self.state = .loaded
case let .failure(.client(error)):
self.state = .unloaded
var config = ToastConfiguration(title: "Error Loading")