mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Paid media improvements
This commit is contained in:
parent
9ca023a472
commit
7d5d9ba7ba
@ -1040,8 +1040,13 @@ public class AttachmentController: ViewController {
|
||||
|
||||
public override var isMinimized: Bool {
|
||||
didSet {
|
||||
let transition = ContainedViewLayoutTransition.animated(duration: 0.2, curve: .easeInOut)
|
||||
transition.updateAlpha(node: self.node.dim, alpha: self.isMinimized ? 0.0 : 1.0)
|
||||
guard self.isMinimized != oldValue else {
|
||||
return
|
||||
}
|
||||
if !self.node.isDismissing {
|
||||
let transition = ContainedViewLayoutTransition.animated(duration: 0.2, curve: .easeInOut)
|
||||
transition.updateAlpha(node: self.node.dim, alpha: self.isMinimized ? 0.0 : 1.0)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -240,7 +240,7 @@ public func galleryItemForEntry(
|
||||
} else if let file = media as? TelegramMediaFile {
|
||||
if file.isVideo {
|
||||
let content: UniversalVideoContent
|
||||
let captureProtected = message.isCopyProtected() || message.containsSecretMedia || message.minAutoremoveOrClearTimeout == viewOnceTimeout
|
||||
let captureProtected = message.isCopyProtected() || message.containsSecretMedia || message.minAutoremoveOrClearTimeout == viewOnceTimeout || message.paidContent != nil
|
||||
if file.isAnimated {
|
||||
content = NativeVideoContent(id: .message(message.stableId, file.fileId), userLocation: .peer(message.id.peerId), fileReference: .message(message: MessageReference(message), media: file), imageReference: mediaImage.flatMap({ ImageMediaReference.message(message: MessageReference(message), media: $0) }), loopVideo: true, enableSound: false, tempFilePath: tempFilePath, captureProtected: captureProtected, storeAfterDownload: generateStoreAfterDownload?(message, file))
|
||||
} else {
|
||||
|
@ -258,6 +258,16 @@ final class ChatImageGalleryItemNode: ZoomableContentGalleryItemNode {
|
||||
|
||||
private var currentSpeechHolder: SpeechSynthesizerHolder?
|
||||
|
||||
override var baseNavigationController: () -> NavigationController? {
|
||||
didSet {
|
||||
if let _ = self.baseNavigationController() {
|
||||
self.moreBarButton.isHidden = false
|
||||
} else {
|
||||
self.moreBarButton.isHidden = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
init(context: AccountContext, presentationData: PresentationData, performAction: @escaping (GalleryControllerInteractionTapAction) -> Void, openActionOptions: @escaping (GalleryControllerInteractionTapAction, Message) -> Void, present: @escaping (ViewController, Any?) -> Void) {
|
||||
self.context = context
|
||||
self.presentationData = presentationData
|
||||
@ -356,7 +366,7 @@ final class ChatImageGalleryItemNode: ZoomableContentGalleryItemNode {
|
||||
self.translateToLanguage = translateToLanguage
|
||||
self.peerIsCopyProtected = peerIsCopyProtected
|
||||
self.isSecret = isSecret
|
||||
self.imageNode.captureProtected = message.id.peerId.namespace == Namespaces.Peer.SecretChat || message.isCopyProtected() || peerIsCopyProtected || isSecret
|
||||
self.imageNode.captureProtected = message.id.peerId.namespace == Namespaces.Peer.SecretChat || message.isCopyProtected() || peerIsCopyProtected || isSecret || message.paidContent != nil
|
||||
self.footerContentNode.setMessage(message, displayInfo: displayInfo, translateToLanguage: translateToLanguage, peerIsCopyProtected: peerIsCopyProtected)
|
||||
}
|
||||
|
||||
|
@ -1195,7 +1195,7 @@ final class UniversalVideoGalleryItemNode: ZoomableContentGalleryItemNode {
|
||||
|
||||
var hintSeekable = false
|
||||
if let contentInfo = item.contentInfo, case let .message(message, _) = contentInfo {
|
||||
if Namespaces.Message.allNonRegular.contains(message.id.namespace) {
|
||||
if Namespaces.Message.allNonRegular.contains(message.id.namespace) || message.id.namespace == Namespaces.Message.Local {
|
||||
disablePictureInPicture = true
|
||||
} else {
|
||||
let throttledSignal = videoNode.status
|
||||
@ -1443,7 +1443,7 @@ final class UniversalVideoGalleryItemNode: ZoomableContentGalleryItemNode {
|
||||
self.hasPictureInPicture = false
|
||||
}
|
||||
|
||||
if let contentInfo = item.contentInfo, case let .message(message, _) = contentInfo {
|
||||
if let contentInfo = item.contentInfo, case let .message(message, mediaIndex) = contentInfo {
|
||||
var file: TelegramMediaFile?
|
||||
for m in message.media {
|
||||
if let m = m as? TelegramMediaFile, m.isVideo {
|
||||
@ -1452,6 +1452,13 @@ final class UniversalVideoGalleryItemNode: ZoomableContentGalleryItemNode {
|
||||
} else if let m = m as? TelegramMediaWebpage, case let .Loaded(content) = m.content, let f = content.file, f.isVideo {
|
||||
file = f
|
||||
break
|
||||
} else if let paidContent = message.paidContent {
|
||||
let mediaIndex = mediaIndex ?? 0
|
||||
let media = paidContent.extendedMedia[mediaIndex]
|
||||
if case let .full(fullMedia) = media, let m = fullMedia as? TelegramMediaFile {
|
||||
file = m
|
||||
}
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
@ -1461,6 +1468,10 @@ final class UniversalVideoGalleryItemNode: ZoomableContentGalleryItemNode {
|
||||
} else if let file = file, !file.isAnimated {
|
||||
hasMoreButton = true
|
||||
}
|
||||
|
||||
if let _ = message.paidContent, message.id.namespace == Namespaces.Message.Local {
|
||||
hasMoreButton = false
|
||||
}
|
||||
|
||||
if hasMoreButton {
|
||||
let moreMenuItem = UIBarButtonItem(customDisplayNode: self.moreBarButton)!
|
||||
@ -2327,8 +2338,15 @@ final class UniversalVideoGalleryItemNode: ZoomableContentGalleryItemNode {
|
||||
}
|
||||
|
||||
switch contentInfo {
|
||||
case let .message(message, _):
|
||||
let gallery = GalleryController(context: context, source: .peerMessagesAtId(messageId: message.id, chatLocation: .peer(id: message.id.peerId), customTag: nil, chatLocationContextHolder: Atomic<ChatLocationContextHolder?>(value: nil)), playbackRate: playbackRate, replaceRootController: { controller, ready in
|
||||
case let .message(message, messageIndex):
|
||||
let source: GalleryControllerItemSource
|
||||
if let _ = message.paidContent {
|
||||
source = .standaloneMessage(message, messageIndex)
|
||||
} else {
|
||||
source = .peerMessagesAtId(messageId: message.id, chatLocation: .peer(id: message.id.peerId), customTag: nil, chatLocationContextHolder: Atomic<ChatLocationContextHolder?>(value: nil))
|
||||
}
|
||||
|
||||
let gallery = GalleryController(context: context, source: source, playbackRate: playbackRate, replaceRootController: { controller, ready in
|
||||
if let baseNavigationController = baseNavigationController {
|
||||
baseNavigationController.replaceTopController(controller, animated: false, ready: ready)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user