From 1a852fd26a235a10ef498fd6b8e13d4e8b49fa28 Mon Sep 17 00:00:00 2001 From: overtake Date: Wed, 27 Dec 2017 13:57:01 +0400 Subject: [PATCH] reply --- .../ManagedSecretChatOutgoingOperations.swift | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/TelegramCore/ManagedSecretChatOutgoingOperations.swift b/TelegramCore/ManagedSecretChatOutgoingOperations.swift index e408668ce7..53b3403089 100644 --- a/TelegramCore/ManagedSecretChatOutgoingOperations.swift +++ b/TelegramCore/ManagedSecretChatOutgoingOperations.swift @@ -454,9 +454,22 @@ private func decryptedAttributes46(_ attributes: [TelegramMediaFileAttribute]) - private func boxedDecryptedMessage(message: Message, globallyUniqueId: Int64, uploadedFile: SecretChatOutgoingFile?, layer: SecretChatLayer) -> BoxedDecryptedMessage { var media: Media? = message.media.first var messageAutoremoveTimeout: Int32 = 0 + var replyGlobalId:Int64? = nil + var flags:Int32 = 0 + for attribute in message.attributes { + if let attribute = attribute as? ReplyMessageAttribute { + if let message = message.associatedMessages[attribute.messageId] { + replyGlobalId = message.globallyUniqueId + flags |= (1 << 3) + break + } + } + } + for attribute in message.attributes { if let attribute = attribute as? AutoremoveTimeoutMessageAttribute { messageAutoremoveTimeout = attribute.timeout + break } } @@ -473,8 +486,8 @@ private func boxedDecryptedMessage(message: Message, globallyUniqueId: Int64, up return .layer8(.decryptedMessage(randomId: globallyUniqueId, randomBytes: randomBytes, message: message.text, media: decryptedMedia)) case .layer46: let decryptedMedia = SecretApi46.DecryptedMessageMedia.decryptedMessageMediaPhoto(thumb: Buffer(), thumbW: 90, thumbH: 90, w: Int32(largestRepresentation.dimensions.width), h: Int32(largestRepresentation.dimensions.height), size: uploadedFile.size, key: Buffer(data: uploadedFile.key.aesKey), iv: Buffer(data: uploadedFile.key.aesIv), caption: "") - - return .layer46(.decryptedMessage(flags: (1 << 9), randomId: globallyUniqueId, ttl: messageAutoremoveTimeout, message: message.text, media: decryptedMedia, entities: nil, viaBotName: nil, replyToRandomId: nil)) + flags |= (1 << 9) + return .layer46(.decryptedMessage(flags: flags, randomId: globallyUniqueId, ttl: messageAutoremoveTimeout, message: message.text, media: decryptedMedia, entities: nil, viaBotName: nil, replyToRandomId: replyGlobalId)) } } else if let file = media as? TelegramMediaFile { switch layer { @@ -514,7 +527,8 @@ private func boxedDecryptedMessage(message: Message, globallyUniqueId: Int64, up } if let decryptedMedia = decryptedMedia { - return .layer46(.decryptedMessage(flags: (1 << 9), randomId: globallyUniqueId, ttl: messageAutoremoveTimeout, message: message.text, media: decryptedMedia, entities: nil, viaBotName: nil, replyToRandomId: nil)) + flags |= (1 << 9) + return .layer46(.decryptedMessage(flags: flags, randomId: globallyUniqueId, ttl: messageAutoremoveTimeout, message: message.text, media: decryptedMedia, entities: nil, viaBotName: nil, replyToRandomId: replyGlobalId)) } } } @@ -528,7 +542,7 @@ private func boxedDecryptedMessage(message: Message, globallyUniqueId: Int64, up return .layer8(.decryptedMessage(randomId: globallyUniqueId, randomBytes: randomBytes, message: message.text, media: .decryptedMessageMediaEmpty)) case .layer46: - return .layer46(.decryptedMessage(flags: 0, randomId: globallyUniqueId, ttl: messageAutoremoveTimeout, message: message.text, media: .decryptedMessageMediaEmpty, entities: nil, viaBotName: nil, replyToRandomId: nil)) + return .layer46(.decryptedMessage(flags: flags, randomId: globallyUniqueId, ttl: messageAutoremoveTimeout, message: message.text, media: .decryptedMessageMediaEmpty, entities: nil, viaBotName: nil, replyToRandomId: replyGlobalId)) } }