import Foundation import UIKit import AsyncDisplayKit import TelegramCore import Postbox import AccountContext import ChatPresentationInterfaceState import ChatControllerInteraction import ChatInputNode import ChatEntityKeyboardInputNode import ChatInputPanelNode import ChatButtonKeyboardInputNode func inputNodeForChatPresentationIntefaceState(_ chatPresentationInterfaceState: ChatPresentationInterfaceState, context: AccountContext, currentNode: ChatInputNode?, interfaceInteraction: ChatPanelInterfaceInteraction?, controllerInteraction: ChatControllerInteraction, inputPanelNode: ChatInputPanelNode?, makeMediaInputNode: () -> ChatInputNode?) -> ChatInputNode? { if let inputPanelNode = inputPanelNode, !(inputPanelNode is ChatTextInputPanelNode) { return nil } switch chatPresentationInterfaceState.inputMode { case .media: if let currentNode = currentNode as? ChatEntityKeyboardInputNode { return currentNode } else if let inputMediaNode = makeMediaInputNode() { inputMediaNode.interfaceInteraction = interfaceInteraction return inputMediaNode } else { return nil } case .inputButtons: if chatPresentationInterfaceState.forceInputCommandsHidden { return nil } else { if let currentNode = currentNode as? ChatButtonKeyboardInputNode { return currentNode } else { let inputNode = ChatButtonKeyboardInputNode(context: context, controllerInteraction: controllerInteraction) inputNode.interfaceInteraction = interfaceInteraction return inputNode } } case .none, .text: return nil } }