Various improvements

This commit is contained in:
Ilya Laktyushin
2025-04-05 19:18:54 +04:00
parent 13669eee96
commit 88e5ff8f6b
11 changed files with 120 additions and 74 deletions

View File

@@ -12,39 +12,48 @@ extension ChatControllerImpl {
context: self.context,
sourceNode: node,
gesture: gesture,
openPeer: { [weak self] peerId in
completion: { [weak self] peer, sourceFrame in
guard let self else {
return
}
let _ = (self.context.engine.data.get(TelegramEngine.EngineData.Item.Peer.Peer(id: peerId))
|> deliverOnMainQueue).start(next: { [weak self] peer in
guard let self else {
return
self.window?.forEachController({ controller in
if let controller = controller as? QuickShareToastScreen {
controller.dismissWithCommitAction()
}
self.openPeer(peer: peer, navigation: .chat(textInputState: nil, subject: nil, peekData: nil), fromMessage: nil)
})
},
completion: { [weak self] peerId in
guard let self else {
return
}
let enqueueMessage = StandaloneSendEnqueueMessage(
content: .forward(forward: StandaloneSendEnqueueMessage.Forward(
sourceId: id,
threadId: nil
)),
replyToMessageId: nil
let toastScreen = QuickShareToastScreen(
context: self.context,
peer: peer,
sourceFrame: sourceFrame,
action: { [weak self] action in
guard let self else {
return
}
switch action {
case .info:
self.openPeer(peer: peer, navigation: .chat(textInputState: nil, subject: nil, peekData: nil), fromMessage: nil)
case .commit:
let enqueueMessage = StandaloneSendEnqueueMessage(
content: .forward(forward: StandaloneSendEnqueueMessage.Forward(
sourceId: id,
threadId: nil
)),
replyToMessageId: nil
)
let _ = (standaloneSendEnqueueMessages(
accountPeerId: self.context.account.peerId,
postbox: self.context.account.postbox,
network: self.context.account.network,
stateManager: self.context.account.stateManager,
auxiliaryMethods: self.context.account.auxiliaryMethods,
peerId: peer.id,
threadId: nil,
messages: [enqueueMessage]
)).startStandalone()
}
}
)
let _ = (standaloneSendEnqueueMessages(
accountPeerId: self.context.account.peerId,
postbox: self.context.account.postbox,
network: self.context.account.network,
stateManager: self.context.account.stateManager,
auxiliaryMethods: self.context.account.auxiliaryMethods,
peerId: peerId,
threadId: nil,
messages: [enqueueMessage]
)).startStandalone()
self.present(toastScreen, in: .window(.root))
}
)
self.presentInGlobalOverlay(controller)