Fix ad to same chat navigation

This commit is contained in:
Ali 2023-04-12 23:29:33 +04:00
parent c7803123e8
commit 32245285db

View File

@ -4298,22 +4298,28 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
switch adAttribute.target { switch adAttribute.target {
case let .peer(id, messageId, startParam): case let .peer(id, messageId, startParam):
let navigationData: ChatControllerInteractionNavigateToPeer if case let .peer(currentPeerId) = self.chatLocation, currentPeerId == id {
if let bot = message.author as? TelegramUser, bot.botInfo != nil, let startParam = startParam { if let messageId {
navigationData = .withBotStartPayload(ChatControllerInitialBotStart(payload: startParam, behavior: .interactive)) self.navigateToMessage(from: nil, to: .id(messageId, nil), rememberInStack: false)
}
} else { } else {
var subject: ChatControllerSubject? let navigationData: ChatControllerInteractionNavigateToPeer
if let messageId = messageId { if let bot = message.author as? TelegramUser, bot.botInfo != nil, let startParam = startParam {
subject = .message(id: .id(messageId), highlight: true, timecode: nil) navigationData = .withBotStartPayload(ChatControllerInitialBotStart(payload: startParam, behavior: .interactive))
} else {
var subject: ChatControllerSubject?
if let messageId = messageId {
subject = .message(id: .id(messageId), highlight: true, timecode: nil)
}
navigationData = .chat(textInputState: nil, subject: subject, peekData: nil)
} }
navigationData = .chat(textInputState: nil, subject: subject, peekData: nil) let _ = (self.context.engine.data.get(TelegramEngine.EngineData.Item.Peer.Peer(id: id))
|> deliverOnMainQueue).start(next: { [weak self] peer in
if let self, let peer = peer {
self.openPeer(peer: peer, navigation: navigationData, fromMessage: nil)
}
})
} }
let _ = (self.context.engine.data.get(TelegramEngine.EngineData.Item.Peer.Peer(id: id))
|> deliverOnMainQueue).start(next: { [weak self] peer in
if let self, let peer = peer {
self.openPeer(peer: peer, navigation: navigationData, fromMessage: nil)
}
})
case let .join(_, joinHash): case let .join(_, joinHash):
self.controllerInteraction?.openJoinLink(joinHash) self.controllerInteraction?.openJoinLink(joinHash)
} }