From ee60bf5910d2d6760070d0ddd24cd2ee0cf26963 Mon Sep 17 00:00:00 2001 From: Alexander Danilov <> Date: Wed, 19 Jun 2019 10:11:59 +0300 Subject: [PATCH 1/2] dismiss keyboard buttons immediately after button pressed --- TelegramUI/ChatButtonKeyboardInputNode.swift | 2 ++ 1 file changed, 2 insertions(+) diff --git a/TelegramUI/ChatButtonKeyboardInputNode.swift b/TelegramUI/ChatButtonKeyboardInputNode.swift index 9c5d42db..7c87cbf5 100644 --- a/TelegramUI/ChatButtonKeyboardInputNode.swift +++ b/TelegramUI/ChatButtonKeyboardInputNode.swift @@ -157,6 +157,8 @@ final class ChatButtonKeyboardInputNode: ChatInputNode { } @objc func buttonPressed(_ button: ASButtonNode) { + self.controllerInteraction.updateInputMode({ _ in ChatInputMode.none }) + if let button = button as? ChatButtonKeyboardInputButtonNode, let markupButton = button.button { switch markupButton.action { case .text: From b819d9ad3b1601dbf49f858e756e83a4d1054821 Mon Sep 17 00:00:00 2001 From: Alexander Danilov <> Date: Wed, 19 Jun 2019 10:13:30 +0300 Subject: [PATCH 2/2] refactoring --- TelegramUI/ChatButtonKeyboardInputNode.swift | 88 ++++++++++---------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/TelegramUI/ChatButtonKeyboardInputNode.swift b/TelegramUI/ChatButtonKeyboardInputNode.swift index 7c87cbf5..4ec6a8ab 100644 --- a/TelegramUI/ChatButtonKeyboardInputNode.swift +++ b/TelegramUI/ChatButtonKeyboardInputNode.swift @@ -157,56 +157,56 @@ final class ChatButtonKeyboardInputNode: ChatInputNode { } @objc func buttonPressed(_ button: ASButtonNode) { + guard let markupButton = (button as? ChatButtonKeyboardInputButtonNode)?.button else { return } + self.controllerInteraction.updateInputMode({ _ in ChatInputMode.none }) - if let button = button as? ChatButtonKeyboardInputButtonNode, let markupButton = button.button { - switch markupButton.action { - case .text: - self.controllerInteraction.sendMessage(markupButton.title) - case let .url(url): - self.controllerInteraction.openUrl(url, true, nil) - case .requestMap: - self.controllerInteraction.shareCurrentLocation() - case .requestPhone: - self.controllerInteraction.shareAccountContact() - case .openWebApp: - if let message = self.message { - self.controllerInteraction.requestMessageActionCallback(message.id, nil, true) + switch markupButton.action { + case .text: + self.controllerInteraction.sendMessage(markupButton.title) + case let .url(url): + self.controllerInteraction.openUrl(url, true, nil) + case .requestMap: + self.controllerInteraction.shareCurrentLocation() + case .requestPhone: + self.controllerInteraction.shareAccountContact() + case .openWebApp: + if let message = self.message { + self.controllerInteraction.requestMessageActionCallback(message.id, nil, true) + } + case let .callback(data): + if let message = self.message { + self.controllerInteraction.requestMessageActionCallback(message.id, data, false) + } + case let .switchInline(samePeer, query): + if let message = message { + var botPeer: Peer? + + var found = false + for attribute in message.attributes { + if let attribute = attribute as? InlineBotMessageAttribute, let peerId = attribute.peerId { + botPeer = message.peers[peerId] + found = true + } } - case let .callback(data): - if let message = self.message { - self.controllerInteraction.requestMessageActionCallback(message.id, data, false) + if !found { + botPeer = message.author } - case let .switchInline(samePeer, query): - if let message = message { - var botPeer: Peer? - - var found = false - for attribute in message.attributes { - if let attribute = attribute as? InlineBotMessageAttribute, let peerId = attribute.peerId { - botPeer = message.peers[peerId] - found = true - } - } - if !found { - botPeer = message.author - } - - var peerId: PeerId? - if samePeer { - peerId = message.id.peerId - } - if let botPeer = botPeer, let addressName = botPeer.addressName { - self.controllerInteraction.openPeer(peerId, .chat(textInputState: ChatTextInputState(inputText: NSAttributedString(string: "@\(addressName) \(query)")), messageId: nil), nil) - } + + var peerId: PeerId? + if samePeer { + peerId = message.id.peerId } - case .payment: - break - case let .urlAuth(url, buttonId): - if let message = self.message { - self.controllerInteraction.requestMessageActionUrlAuth(url, message.id, buttonId) + if let botPeer = botPeer, let addressName = botPeer.addressName { + self.controllerInteraction.openPeer(peerId, .chat(textInputState: ChatTextInputState(inputText: NSAttributedString(string: "@\(addressName) \(query)")), messageId: nil), nil) } - } + } + case .payment: + break + case let .urlAuth(url, buttonId): + if let message = self.message { + self.controllerInteraction.requestMessageActionUrlAuth(url, message.id, buttonId) + } } } }