mirror of
https://github.com/TelegramMessenger/Telegram-iOS.git
synced 2026-07-06 03:33:41 +02:00
Fix audio file ref
This commit is contained in:
parent
ed6511a79e
commit
d4402d371a
1 changed files with 53 additions and 5 deletions
|
|
@ -599,6 +599,7 @@ public func makeAttachmentFileControllerImpl(
|
|||
updatedState.savedMusicExpanded = true
|
||||
return updatedState
|
||||
}
|
||||
expandImpl?()
|
||||
},
|
||||
expandRecentMusic: {
|
||||
updateState { state in
|
||||
|
|
@ -610,7 +611,13 @@ public func makeAttachmentFileControllerImpl(
|
|||
send: { message in
|
||||
if message.id.namespace == Namespaces.Message.Local {
|
||||
if let file = message.media.first(where: { $0 is TelegramMediaFile }) as? TelegramMediaFile {
|
||||
send([.standalone(media: file)], false, nil, nil)
|
||||
let _ = (context.engine.data.get(TelegramEngine.EngineData.Item.Peer.Peer(id: context.account.peerId))
|
||||
|> deliverOnMainQueue).start(next: { peer in
|
||||
guard let peer, let peerReference = PeerReference(peer._asPeer()) else {
|
||||
return
|
||||
}
|
||||
send([.savedMusic(peer: peerReference, media: file)], false, nil, nil)
|
||||
})
|
||||
dismissImpl?()
|
||||
}
|
||||
} else {
|
||||
|
|
@ -938,13 +945,54 @@ public func makeAttachmentFileControllerImpl(
|
|||
controller.mulitpleCompletion = { sendMode, _, _, caption in
|
||||
let _ = stateValue.with({ state in
|
||||
if let selectedMessageIds = state.selectedMessageIds {
|
||||
var mediaReferences: [AnyMediaReference] = []
|
||||
var remoteMessageIds: [MessageId] = []
|
||||
for id in selectedMessageIds {
|
||||
if let message = state.messageMap[id]?._asMessage(), let file = message.media.first(where: { $0 is TelegramMediaFile}) as? TelegramMediaFile {
|
||||
mediaReferences.append(.standalone(media: file))
|
||||
if let message = state.messageMap[id]?._asMessage() {
|
||||
if message.id.namespace == Namespaces.Message.Cloud {
|
||||
remoteMessageIds.append(message.id)
|
||||
}
|
||||
}
|
||||
}
|
||||
send(mediaReferences, sendMode == .silently, nil, caption)
|
||||
let _ = combineLatest(queue: Queue.mainQueue(),
|
||||
context.engine.data.get(TelegramEngine.EngineData.Item.Peer.Peer(id: context.account.peerId)),
|
||||
context.engine.messages.getMessagesLoadIfNecessary(remoteMessageIds, strategy: .cloud(skipLocal: true))
|
||||
|> `catch` { _ in
|
||||
return .single(.result([]))
|
||||
}
|
||||
|> mapToSignal { result -> Signal<[Message], NoError> in
|
||||
guard case let .result(result) = result else {
|
||||
return .complete()
|
||||
}
|
||||
return .single(result)
|
||||
}
|
||||
).start(next: { peer, remoteMessages in
|
||||
guard let peer, let peerReference = PeerReference(peer._asPeer()) else {
|
||||
return
|
||||
}
|
||||
var messageMap: [MessageId: Message] = [:]
|
||||
for message in remoteMessages {
|
||||
messageMap[message.id] = message
|
||||
}
|
||||
|
||||
var mediaReferences: [AnyMediaReference] = []
|
||||
|
||||
for id in selectedMessageIds {
|
||||
if var message = state.messageMap[id]?._asMessage() {
|
||||
if message.id.namespace == Namespaces.Message.Cloud, let remoteMessage = messageMap[message.id] {
|
||||
message = remoteMessage
|
||||
}
|
||||
if let file = message.media.first(where: { $0 is TelegramMediaFile}) as? TelegramMediaFile {
|
||||
if message.id.namespace == Namespaces.Message.Cloud {
|
||||
mediaReferences.append(.message(message: MessageReference(message), media: file))
|
||||
} else {
|
||||
mediaReferences.append(.savedMusic(peer: peerReference, media: file))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
send(mediaReferences, sendMode == .silently, nil, caption)
|
||||
})
|
||||
dismissImpl?()
|
||||
}
|
||||
})
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue