mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-02 21:33:26 +00:00
Fix for pagination getting stuck when swiping preview items
This commit is contained in:
@@ -33,7 +33,14 @@ class TimelineMediaPreviewDataSource: NSObject, QLPreviewControllerDataSource {
|
||||
private var backwardPadding: Int
|
||||
private var forwardPadding: Int
|
||||
|
||||
var paginationState: TimelinePaginationState
|
||||
/// Reaching the end of the timeline changes which placeholder an index shows, so a change
|
||||
/// needs to be published too, not only the arrival of new items.
|
||||
var paginationState: TimelinePaginationState {
|
||||
didSet {
|
||||
guard paginationState != oldValue else { return }
|
||||
previewItemsPaginationPublisher.send()
|
||||
}
|
||||
}
|
||||
|
||||
/// The gallery attachments to include, so that a gallery only contributes the media being browsed.
|
||||
private let allowedGalleryItemTypes: [TimelineAllowedGalleryItemType]?
|
||||
|
||||
+7
-5
@@ -243,11 +243,13 @@ class TimelineMediaPreviewController: QLPreviewController {
|
||||
}
|
||||
|
||||
private func handleUpdatedItems() {
|
||||
if currentPreviewItem is TimelineMediaPreviewItem.Loading {
|
||||
let dataSource = context.viewState.dataSource
|
||||
if dataSource.previewController(self, previewItemAt: currentPreviewItemIndex) is TimelineMediaPreviewItem.Media {
|
||||
refreshCurrentPreviewItem() // This will trigger loadCurrentItem automatically.
|
||||
}
|
||||
guard let displayedItem = currentPreviewItem as? TimelineMediaPreviewItem.Loading else { return }
|
||||
|
||||
// The index may now hold a media, or a different placeholder having reached the end of
|
||||
// the timeline, in which case what's on display is stale.
|
||||
let dataSource = context.viewState.dataSource
|
||||
if dataSource.previewController(self, previewItemAt: currentPreviewItemIndex) as AnyObject !== displayedItem {
|
||||
refreshCurrentPreviewItem() // This will trigger loadCurrentItem automatically.
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user