mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-04 01:20:12 +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 backwardPadding: Int
|
||||||
private var forwardPadding: 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.
|
/// The gallery attachments to include, so that a gallery only contributes the media being browsed.
|
||||||
private let allowedGalleryItemTypes: [TimelineAllowedGalleryItemType]?
|
private let allowedGalleryItemTypes: [TimelineAllowedGalleryItemType]?
|
||||||
|
|||||||
+7
-5
@@ -243,11 +243,13 @@ class TimelineMediaPreviewController: QLPreviewController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private func handleUpdatedItems() {
|
private func handleUpdatedItems() {
|
||||||
if currentPreviewItem is TimelineMediaPreviewItem.Loading {
|
guard let displayedItem = currentPreviewItem as? TimelineMediaPreviewItem.Loading else { return }
|
||||||
let dataSource = context.viewState.dataSource
|
|
||||||
if dataSource.previewController(self, previewItemAt: currentPreviewItemIndex) is TimelineMediaPreviewItem.Media {
|
// The index may now hold a media, or a different placeholder having reached the end of
|
||||||
refreshCurrentPreviewItem() // This will trigger loadCurrentItem automatically.
|
// 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