mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2026-01-07 05:25:12 +00:00
Fix multimessage forwarding from search
This commit is contained in:
@@ -3654,7 +3654,44 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
||||
transformedMessages = strongSelf.transformEnqueueMessages(messages)
|
||||
}
|
||||
|
||||
let _ = (enqueueMessages(account: strongSelf.context.account, peerId: peerId, messages: transformedMessages)
|
||||
var forwardedMessages: [[EnqueueMessage]] = []
|
||||
var forwardSourcePeerIds = Set<PeerId>()
|
||||
for message in transformedMessages {
|
||||
if case let .forward(source, _, _) = message {
|
||||
forwardSourcePeerIds.insert(source.peerId)
|
||||
|
||||
var added = false
|
||||
if var last = forwardedMessages.last {
|
||||
if let currentMessage = last.first, case let .forward(currentSource, _, _) = currentMessage, currentSource.peerId == source.peerId {
|
||||
last.append(message)
|
||||
added = true
|
||||
}
|
||||
}
|
||||
if !added {
|
||||
forwardedMessages.append([message])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let signal: Signal<[MessageId?], NoError>
|
||||
if forwardSourcePeerIds.count > 1 {
|
||||
var signals: [Signal<[MessageId?], NoError>] = []
|
||||
for messagesGroup in forwardedMessages {
|
||||
signals.append(enqueueMessages(account: strongSelf.context.account, peerId: peerId, messages: messagesGroup))
|
||||
}
|
||||
signal = combineLatest(signals)
|
||||
|> map { results in
|
||||
var ids: [MessageId?] = []
|
||||
for result in results {
|
||||
ids.append(contentsOf: result)
|
||||
}
|
||||
return ids
|
||||
}
|
||||
} else {
|
||||
signal = enqueueMessages(account: strongSelf.context.account, peerId: peerId, messages: transformedMessages)
|
||||
}
|
||||
|
||||
let _ = (signal
|
||||
|> deliverOnMainQueue).start(next: { messageIds in
|
||||
if let strongSelf = self {
|
||||
if strongSelf.presentationInterfaceState.isScheduledMessages {
|
||||
|
||||
Reference in New Issue
Block a user