From 23e08917c9fd4cafc6f8a32d887ebab2ea435857 Mon Sep 17 00:00:00 2001 From: Ali <> Date: Tue, 7 Jul 2020 22:08:47 +0400 Subject: [PATCH] Use thumbnail video status if possible --- .../Sources/NativeVideoContent.swift | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/submodules/TelegramUniversalVideoContent/Sources/NativeVideoContent.swift b/submodules/TelegramUniversalVideoContent/Sources/NativeVideoContent.swift index 9ae5df8bbf..d4b4126d58 100644 --- a/submodules/TelegramUniversalVideoContent/Sources/NativeVideoContent.swift +++ b/submodules/TelegramUniversalVideoContent/Sources/NativeVideoContent.swift @@ -104,8 +104,16 @@ private final class NativeVideoContentNode: ASDisplayNode, UniversalVideoContent private var initializedStatus = false private let _status = Promise() + private let _thumbnailStatus = Promise(nil) var status: Signal { - return self._status.get() + return combineLatest(self._thumbnailStatus.get(), self._status.get()) + |> map { thumbnailStatus, status in + if let thumbnailStatus = thumbnailStatus { + return thumbnailStatus + } else { + return status + } + } } private let _bufferingStatus = Promise<(IndexSet, Int)?>() @@ -183,7 +191,7 @@ private final class NativeVideoContentNode: ASDisplayNode, UniversalVideoContent self.addSubnode(self.imageNode) self.addSubnode(self.playerNode) self._status.set(combineLatest(self.dimensionsPromise.get(), self.player.status) - |> map { [weak self] dimensions, status in + |> map { dimensions, status in return MediaPlayerStatus(generationTimestamp: status.generationTimestamp, duration: status.duration, dimensions: dimensions, timestamp: status.timestamp, baseRate: status.baseRate, seekId: status.seekId, status: status.status, soundEnabled: status.soundEnabled) }) @@ -249,6 +257,11 @@ private final class NativeVideoContentNode: ASDisplayNode, UniversalVideoContent self.thumbnailNode = thumbnailNode thumbnailPlayer.attachPlayerNode(thumbnailNode) + self._thumbnailStatus.set(thumbnailPlayer.status + |> map { status in + return MediaPlayerStatus(generationTimestamp: status.generationTimestamp, duration: status.duration, dimensions: CGSize(), timestamp: status.timestamp, baseRate: status.baseRate, seekId: status.seekId, status: status.status, soundEnabled: status.soundEnabled) + }) + self.addSubnode(thumbnailNode) thumbnailNode.frame = self.playerNode.frame