mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-08-01 07:57:01 +00:00
Fix story layout loop crash
This commit is contained in:
parent
6f85bca2d1
commit
37d932a0e9
@ -43,7 +43,7 @@ public final class StoryContentItem: Equatable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
open class View: UIView {
|
open class View: UIView {
|
||||||
open func setProgressMode(_ progressMode: ProgressMode) {
|
open func setProgressMode(_ progressMode: ProgressMode, emitEvents: Bool) {
|
||||||
}
|
}
|
||||||
|
|
||||||
open func rewind() {
|
open func rewind() {
|
||||||
|
@ -278,17 +278,17 @@ final class StoryItemContentComponent: Component {
|
|||||||
|
|
||||||
self.videoPlaybackStatus = status
|
self.videoPlaybackStatus = status
|
||||||
if !self.isSeeking {
|
if !self.isSeeking {
|
||||||
self.updateVideoPlaybackProgress()
|
self.updateVideoPlaybackProgress(emitUpdate: true)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override func setProgressMode(_ progressMode: StoryContentItem.ProgressMode) {
|
override func setProgressMode(_ progressMode: StoryContentItem.ProgressMode, emitEvents: Bool) {
|
||||||
if self.progressMode != progressMode {
|
if self.progressMode != progressMode {
|
||||||
self.progressMode = progressMode
|
self.progressMode = progressMode
|
||||||
self.updateProgressMode(update: true)
|
self.updateProgressMode(update: emitEvents)
|
||||||
|
|
||||||
if let component = self.component, !self.overlaysView.bounds.isEmpty {
|
if let component = self.component, !self.overlaysView.bounds.isEmpty {
|
||||||
self.updateOverlays(component: component, size: self.overlaysView.bounds.size, synchronousLoad: false, transition: .immediate)
|
self.updateOverlays(component: component, size: self.overlaysView.bounds.size, synchronousLoad: false, transition: .immediate)
|
||||||
@ -336,7 +336,7 @@ final class StoryItemContentComponent: Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
self.initializeVideoIfReady(update: update)
|
self.initializeVideoIfReady(update: update)
|
||||||
self.updateVideoPlaybackProgress()
|
self.updateVideoPlaybackProgress(emitUpdate: update)
|
||||||
self.updateProgressTimer()
|
self.updateProgressTimer()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -363,7 +363,7 @@ final class StoryItemContentComponent: Component {
|
|||||||
|
|
||||||
if case .file = self.currentMessageMedia {
|
if case .file = self.currentMessageMedia {
|
||||||
if !self.isSeeking {
|
if !self.isSeeking {
|
||||||
self.updateVideoPlaybackProgress()
|
self.updateVideoPlaybackProgress(emitUpdate: true)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if !self.markedAsSeen {
|
if !self.markedAsSeen {
|
||||||
@ -420,7 +420,7 @@ final class StoryItemContentComponent: Component {
|
|||||||
return effectiveDuration
|
return effectiveDuration
|
||||||
}
|
}
|
||||||
|
|
||||||
private func updateVideoPlaybackProgress(_ scrubbingTimestamp: Double? = nil) {
|
private func updateVideoPlaybackProgress(_ scrubbingTimestamp: Double? = nil, emitUpdate: Bool) {
|
||||||
guard let videoPlaybackStatus = self.videoPlaybackStatus else {
|
guard let videoPlaybackStatus = self.videoPlaybackStatus else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -509,7 +509,9 @@ final class StoryItemContentComponent: Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let clippedProgress = max(0.0, min(1.0, currentProgress))
|
let clippedProgress = max(0.0, min(1.0, currentProgress))
|
||||||
self.environment?.presentationProgressUpdated(clippedProgress, isBuffering, false)
|
if emitUpdate {
|
||||||
|
self.environment?.presentationProgressUpdated(clippedProgress, isBuffering, false)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
|
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
|
||||||
@ -549,7 +551,7 @@ final class StoryItemContentComponent: Component {
|
|||||||
videoNode.seek(timestamp)
|
videoNode.seek(timestamp)
|
||||||
}
|
}
|
||||||
self.isSeeking = true
|
self.isSeeking = true
|
||||||
self.updateVideoPlaybackProgress(timestamp)
|
self.updateVideoPlaybackProgress(timestamp, emitUpdate: true)
|
||||||
}
|
}
|
||||||
|
|
||||||
func seekEnded() {
|
func seekEnded() {
|
||||||
|
@ -1641,7 +1641,7 @@ public final class StoryItemSetContainerComponent: Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if let view = view as? StoryContentItem.View {
|
if let view = view as? StoryContentItem.View {
|
||||||
view.setProgressMode(itemProgressMode)
|
view.setProgressMode(itemProgressMode, emitEvents: false)
|
||||||
}
|
}
|
||||||
|
|
||||||
var isChannel = false
|
var isChannel = false
|
||||||
@ -1871,7 +1871,7 @@ public final class StoryItemSetContainerComponent: Component {
|
|||||||
if id != centralId {
|
if id != centralId {
|
||||||
itemMode = .pause
|
itemMode = .pause
|
||||||
}
|
}
|
||||||
view.setProgressMode(itemMode)
|
view.setProgressMode(itemMode, emitEvents: true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user