Spoiler improvements

This commit is contained in:
Ilya Laktyushin
2022-12-26 13:36:22 +04:00
parent 96f40088e3
commit 1ff6ef1a39
11 changed files with 94 additions and 55 deletions

View File

@@ -423,6 +423,7 @@ private func uploadedMediaImageContent(network: Network, postbox: Postbox, trans
ttlSeconds = autoclearMessageAttribute.timeout
}
var stickers: [Api.InputDocument]?
var hasSpoiler = false
for attribute in attributes {
if let attribute = attribute as? EmbeddedMediaStickersMessageAttribute {
var stickersValue: [Api.InputDocument] = []
@@ -437,6 +438,7 @@ private func uploadedMediaImageContent(network: Network, postbox: Postbox, trans
}
} else if let _ = attribute as? MediaSpoilerMessageAttribute {
flags |= 1 << 2
hasSpoiler = true
}
}
return postbox.transaction { transaction -> Api.InputPeer? in
@@ -461,6 +463,9 @@ private func uploadedMediaImageContent(network: Network, postbox: Postbox, trans
flags |= 1 << 0
ttlSeconds = autoclearMessageAttribute.timeout
}
if hasSpoiler {
flags |= 1 << 1
}
return maybeCacheUploadedResource(postbox: postbox, key: referenceKey, result: .content(PendingMessageUploadedContentAndReuploadInfo(content: .media(.inputMediaPhoto(flags: flags, id: .inputPhoto(id: id, accessHash: accessHash, fileReference: Buffer(data: fileReference)), ttlSeconds: ttlSeconds), text), reuploadInfo: nil)), media: mediaImage)
}
default:
@@ -727,6 +732,7 @@ private func uploadedMediaFileContent(network: Network, postbox: Postbox, auxili
if case let .done(file, thumbnail) = fileAndThumbnailResult {
var flags: Int32 = 0
var hasSpoiler = false
var thumbnailFile: Api.InputFile?
if case let .file(file) = thumbnail {
thumbnailFile = file
@@ -743,6 +749,7 @@ private func uploadedMediaFileContent(network: Network, postbox: Postbox, auxili
ttlSeconds = attribute.timeout
} else if let _ = attribute as? MediaSpoilerMessageAttribute {
flags |= 1 << 5
hasSpoiler = true
}
}
@@ -791,7 +798,11 @@ private func uploadedMediaFileContent(network: Network, postbox: Postbox, auxili
switch result {
case let .messageMediaDocument(_, document, _):
if let document = document, let mediaFile = telegramMediaFileFromApiDocument(document), let resource = mediaFile.resource as? CloudDocumentMediaResource, let fileReference = resource.fileReference {
return maybeCacheUploadedResource(postbox: postbox, key: referenceKey, result: .content(PendingMessageUploadedContentAndReuploadInfo(content: .media(.inputMediaDocument(flags: 0, id: .inputDocument(id: resource.fileId, accessHash: resource.accessHash, fileReference: Buffer(data: fileReference)), ttlSeconds: nil, query: nil), text), reuploadInfo: nil)), media: mediaFile)
var flags: Int32 = 0
if hasSpoiler {
flags |= (1 << 1)
}
return maybeCacheUploadedResource(postbox: postbox, key: referenceKey, result: .content(PendingMessageUploadedContentAndReuploadInfo(content: .media(.inputMediaDocument(flags: flags, id: .inputDocument(id: resource.fileId, accessHash: resource.accessHash, fileReference: Buffer(data: fileReference)), ttlSeconds: nil, query: nil), text), reuploadInfo: nil)), media: mediaFile)
}
default:
break