mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-01 12:17:53 +00:00
Various fixes
This commit is contained in:
parent
1e6c6d6091
commit
f8ab3d037e
@ -623,6 +623,9 @@ public protocol ChatController: ViewController {
|
|||||||
func hintPlayNextOutgoingGift()
|
func hintPlayNextOutgoingGift()
|
||||||
|
|
||||||
var isSendButtonVisible: Bool { get }
|
var isSendButtonVisible: Bool { get }
|
||||||
|
|
||||||
|
var isSelectingMessagesUpdated: ((Bool) -> Void)? { get set }
|
||||||
|
func cancelSelectingMessages()
|
||||||
}
|
}
|
||||||
|
|
||||||
public protocol ChatMessagePreviewItemNode: AnyObject {
|
public protocol ChatMessagePreviewItemNode: AnyObject {
|
||||||
|
|||||||
@ -968,7 +968,7 @@ public class ChatListControllerImpl: TelegramBaseController, ChatListController
|
|||||||
strongSelf.setInlineChatList(location: .forum(peerId: channel.id))
|
strongSelf.setInlineChatList(location: .forum(peerId: channel.id))
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if let threadId = threadId {
|
if case let .channel(channel) = peer, channel.flags.contains(.isForum), let threadId {
|
||||||
let _ = strongSelf.context.sharedContext.navigateToForumThread(context: strongSelf.context, peerId: peer.id, threadId: threadId, messageId: nil, navigationController: navigationController, activateInput: nil, keepStack: .never).start()
|
let _ = strongSelf.context.sharedContext.navigateToForumThread(context: strongSelf.context, peerId: peer.id, threadId: threadId, messageId: nil, navigationController: navigationController, activateInput: nil, keepStack: .never).start()
|
||||||
strongSelf.chatListDisplayNode.clearHighlightAnimated(true)
|
strongSelf.chatListDisplayNode.clearHighlightAnimated(true)
|
||||||
} else {
|
} else {
|
||||||
@ -1069,7 +1069,7 @@ public class ChatListControllerImpl: TelegramBaseController, ChatListController
|
|||||||
if case .chatList(.root) = strongSelf.location {
|
if case .chatList(.root) = strongSelf.location {
|
||||||
navigationAnimationOptions = .removeOnMasterDetails
|
navigationAnimationOptions = .removeOnMasterDetails
|
||||||
}
|
}
|
||||||
if let threadId = threadId {
|
if case let .channel(channel) = actualPeer, channel.flags.contains(.isForum), let threadId {
|
||||||
let _ = strongSelf.context.sharedContext.navigateToForumThread(context: strongSelf.context, peerId: peer.id, threadId: threadId, messageId: messageId, navigationController: navigationController, activateInput: nil, keepStack: .never).start()
|
let _ = strongSelf.context.sharedContext.navigateToForumThread(context: strongSelf.context, peerId: peer.id, threadId: threadId, messageId: messageId, navigationController: navigationController, activateInput: nil, keepStack: .never).start()
|
||||||
} else {
|
} else {
|
||||||
strongSelf.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(actualPeer), subject: .message(id: .id(messageId), highlight: true, timecode: nil), purposefulAction: {
|
strongSelf.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(actualPeer), subject: .message(id: .id(messageId), highlight: true, timecode: nil), purposefulAction: {
|
||||||
@ -1102,7 +1102,7 @@ public class ChatListControllerImpl: TelegramBaseController, ChatListController
|
|||||||
if case .chatList(.root) = strongSelf.location {
|
if case .chatList(.root) = strongSelf.location {
|
||||||
navigationAnimationOptions = .removeOnMasterDetails
|
navigationAnimationOptions = .removeOnMasterDetails
|
||||||
}
|
}
|
||||||
if let threadId = threadId {
|
if case let .channel(channel) = peer, channel.flags.contains(.isForum), let threadId {
|
||||||
let _ = strongSelf.context.sharedContext.navigateToForumThread(context: strongSelf.context, peerId: peer.id, threadId: threadId, messageId: nil, navigationController: navigationController, activateInput: nil, keepStack: .never).start()
|
let _ = strongSelf.context.sharedContext.navigateToForumThread(context: strongSelf.context, peerId: peer.id, threadId: threadId, messageId: nil, navigationController: navigationController, activateInput: nil, keepStack: .never).start()
|
||||||
} else {
|
} else {
|
||||||
strongSelf.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(peer), purposefulAction: { [weak self] in
|
strongSelf.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(peer), purposefulAction: { [weak self] in
|
||||||
|
|||||||
@ -492,7 +492,7 @@ open class GridNode: GridNodeScroller, UIScrollViewDelegate {
|
|||||||
|
|
||||||
let effectiveWidth = gridLayout.size.width - itemInsets.left - itemInsets.right
|
let effectiveWidth = gridLayout.size.width - itemInsets.left - itemInsets.right
|
||||||
|
|
||||||
let itemsInRow = Int(effectiveWidth / defaultItemSize.width)
|
let itemsInRow = max(1, Int(effectiveWidth / defaultItemSize.width))
|
||||||
let itemsInRowWidth = CGFloat(itemsInRow) * defaultItemSize.width
|
let itemsInRowWidth = CGFloat(itemsInRow) * defaultItemSize.width
|
||||||
let remainingWidth = max(0.0, effectiveWidth - itemsInRowWidth)
|
let remainingWidth = max(0.0, effectiveWidth - itemsInRowWidth)
|
||||||
|
|
||||||
|
|||||||
@ -713,6 +713,8 @@ private final class FeaturedStickersScreenNode: ViewControllerTracingNode {
|
|||||||
itemSize.width -= 60.0
|
itemSize.width -= 60.0
|
||||||
insets.left += 30.0
|
insets.left += 30.0
|
||||||
insets.right += 30.0
|
insets.right += 30.0
|
||||||
|
} else {
|
||||||
|
itemSize.width -= layout.safeInsets.left + layout.safeInsets.right
|
||||||
}
|
}
|
||||||
|
|
||||||
self.gridNode.transaction(GridNodeTransaction(deleteItems: [], insertItems: [], updateItems: [], scrollToItem: nil, updateLayout: GridNodeUpdateLayout(layout: GridNodeLayout(size: layout.size, insets: UIEdgeInsets(top: insets.top, left: insets.left + layout.safeInsets.left, bottom: insets.bottom + layout.safeInsets.bottom, right: insets.right + layout.safeInsets.right), preloadSize: 300.0, type: .fixed(itemSize: itemSize, fillWidth: nil, lineSpacing: 0.0, itemSpacing: nil)), transition: transition), itemTransition: .immediate, stationaryItems: .none, updateFirstIndexInSectionOffset: nil), completion: { _ in })
|
self.gridNode.transaction(GridNodeTransaction(deleteItems: [], insertItems: [], updateItems: [], scrollToItem: nil, updateLayout: GridNodeUpdateLayout(layout: GridNodeLayout(size: layout.size, insets: UIEdgeInsets(top: insets.top, left: insets.left + layout.safeInsets.left, bottom: insets.bottom + layout.safeInsets.bottom, right: insets.right + layout.safeInsets.right), preloadSize: 300.0, type: .fixed(itemSize: itemSize, fillWidth: nil, lineSpacing: 0.0, itemSpacing: nil)), transition: transition), itemTransition: .immediate, stationaryItems: .none, updateFirstIndexInSectionOffset: nil), completion: { _ in })
|
||||||
|
|||||||
@ -152,7 +152,7 @@ public final class HashtagSearchController: TelegramBaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override public func loadDisplayNode() {
|
override public func loadDisplayNode() {
|
||||||
self.displayNode = HashtagSearchControllerNode(context: self.context, peer: self.peer, query: self.query, navigationBar: self.navigationBar, navigationController: self.navigationController as? NavigationController)
|
self.displayNode = HashtagSearchControllerNode(context: self.context, controller: self, peer: self.peer, query: self.query, navigationBar: self.navigationBar, navigationController: self.navigationController as? NavigationController)
|
||||||
if let chatController = self.controllerNode.chatController {
|
if let chatController = self.controllerNode.chatController {
|
||||||
chatController.parentController = self
|
chatController.parentController = self
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,6 +9,9 @@ import SegmentedControlNode
|
|||||||
import ChatListSearchItemHeader
|
import ChatListSearchItemHeader
|
||||||
|
|
||||||
final class HashtagSearchControllerNode: ASDisplayNode {
|
final class HashtagSearchControllerNode: ASDisplayNode {
|
||||||
|
private let context: AccountContext
|
||||||
|
private weak var controller: HashtagSearchController?
|
||||||
|
|
||||||
private let navigationBar: NavigationBar?
|
private let navigationBar: NavigationBar?
|
||||||
|
|
||||||
private let segmentedControlNode: SegmentedControlNode
|
private let segmentedControlNode: SegmentedControlNode
|
||||||
@ -16,15 +19,16 @@ final class HashtagSearchControllerNode: ASDisplayNode {
|
|||||||
|
|
||||||
let chatController: ChatController?
|
let chatController: ChatController?
|
||||||
|
|
||||||
private let context: AccountContext
|
|
||||||
private let query: String
|
private let query: String
|
||||||
|
|
||||||
private var containerLayout: (ContainerViewLayout, CGFloat)?
|
private var containerLayout: (ContainerViewLayout, CGFloat)?
|
||||||
private var enqueuedTransitions: [(ChatListSearchContainerTransition, Bool)] = []
|
private var enqueuedTransitions: [(ChatListSearchContainerTransition, Bool)] = []
|
||||||
private var hasValidLayout = false
|
private var hasValidLayout = false
|
||||||
|
|
||||||
init(context: AccountContext, peer: EnginePeer?, query: String, navigationBar: NavigationBar?, navigationController: NavigationController?) {
|
init(context: AccountContext, controller: HashtagSearchController, peer: EnginePeer?, query: String, navigationBar: NavigationBar?, navigationController: NavigationController?) {
|
||||||
self.context = context
|
self.context = context
|
||||||
|
self.controller = controller
|
||||||
self.query = query
|
self.query = query
|
||||||
self.navigationBar = navigationBar
|
self.navigationBar = navigationBar
|
||||||
|
|
||||||
@ -74,6 +78,17 @@ final class HashtagSearchControllerNode: ASDisplayNode {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self.chatController?.isSelectingMessagesUpdated = { [weak self] isSelecting in
|
||||||
|
if let strongSelf = self {
|
||||||
|
let button: UIBarButtonItem? = isSelecting ? UIBarButtonItem(title: presentationData.strings.Common_Cancel, style: .done, target: self, action: #selector(strongSelf.cancelPressed)) : nil
|
||||||
|
strongSelf.controller?.navigationItem.setRightBarButton(button, animated: true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@objc private func cancelPressed() {
|
||||||
|
self.chatController?.cancelSelectingMessages()
|
||||||
}
|
}
|
||||||
|
|
||||||
func updateThemeAndStrings(theme: PresentationTheme, strings: PresentationStrings) {
|
func updateThemeAndStrings(theme: PresentationTheme, strings: PresentationStrings) {
|
||||||
|
|||||||
@ -1803,6 +1803,15 @@ public func channelVisibilityController(context: AccountContext, updatedPresenta
|
|||||||
|
|
||||||
var footerItem: ItemListControllerFooterItem?
|
var footerItem: ItemListControllerFooterItem?
|
||||||
|
|
||||||
|
var isGroup = false
|
||||||
|
if let peer = peer as? TelegramChannel {
|
||||||
|
if case .group = peer.info {
|
||||||
|
isGroup = true
|
||||||
|
}
|
||||||
|
} else if let _ = peer as? TelegramGroup {
|
||||||
|
isGroup = true
|
||||||
|
}
|
||||||
|
|
||||||
var rightNavigationButton: ItemListNavigationButton?
|
var rightNavigationButton: ItemListNavigationButton?
|
||||||
if case .revokeNames = mode {
|
if case .revokeNames = mode {
|
||||||
let count = Int32(publicChannelsToRevoke?.count ?? 0)
|
let count = Int32(publicChannelsToRevoke?.count ?? 0)
|
||||||
@ -1993,7 +2002,13 @@ public func channelVisibilityController(context: AccountContext, updatedPresenta
|
|||||||
|
|
||||||
_ = (ApplicationSpecificNotice.getSetPublicChannelLink(accountManager: context.sharedContext.accountManager) |> deliverOnMainQueue).start(next: { showAlert in
|
_ = (ApplicationSpecificNotice.getSetPublicChannelLink(accountManager: context.sharedContext.accountManager) |> deliverOnMainQueue).start(next: { showAlert in
|
||||||
if showAlert {
|
if showAlert {
|
||||||
presentControllerImpl?(textAlertController(context: context, updatedPresentationData: updatedPresentationData, title: nil, text: presentationData.strings.Group_Edit_PrivatePublicLinkAlert, actions: [TextAlertAction(type: .defaultAction, title: presentationData.strings.Common_Cancel, action: {}), TextAlertAction(type: .genericAction, title: presentationData.strings.Common_OK, action: invokeAction)]), nil)
|
let text: String
|
||||||
|
if isGroup {
|
||||||
|
text = presentationData.strings.Group_Edit_PrivatePublicLinkAlert
|
||||||
|
} else {
|
||||||
|
text = presentationData.strings.Channel_Edit_PrivatePublicLinkAlert
|
||||||
|
}
|
||||||
|
presentControllerImpl?(textAlertController(context: context, updatedPresentationData: updatedPresentationData, title: nil, text: text, actions: [TextAlertAction(type: .defaultAction, title: presentationData.strings.Common_Cancel, action: {}), TextAlertAction(type: .genericAction, title: presentationData.strings.Common_OK, action: invokeAction)]), nil)
|
||||||
} else {
|
} else {
|
||||||
invokeAction()
|
invokeAction()
|
||||||
}
|
}
|
||||||
@ -2014,15 +2029,6 @@ public func channelVisibilityController(context: AccountContext, updatedPresenta
|
|||||||
rightNavigationButton = ItemListNavigationButton(content: .none, style: .activity, enabled: true, action: {})
|
rightNavigationButton = ItemListNavigationButton(content: .none, style: .activity, enabled: true, action: {})
|
||||||
}
|
}
|
||||||
|
|
||||||
var isGroup = false
|
|
||||||
if let peer = peer as? TelegramChannel {
|
|
||||||
if case .group = peer.info {
|
|
||||||
isGroup = true
|
|
||||||
}
|
|
||||||
} else if let _ = peer as? TelegramGroup {
|
|
||||||
isGroup = true
|
|
||||||
}
|
|
||||||
|
|
||||||
let leftNavigationButton: ItemListNavigationButton?
|
let leftNavigationButton: ItemListNavigationButton?
|
||||||
switch mode {
|
switch mode {
|
||||||
case .initialSetup:
|
case .initialSetup:
|
||||||
|
|||||||
@ -13,6 +13,9 @@ import AccountContext
|
|||||||
public func autodownloadDataSizeString(_ size: Int64, decimalSeparator: String = ".") -> String {
|
public func autodownloadDataSizeString(_ size: Int64, decimalSeparator: String = ".") -> String {
|
||||||
if size >= 1024 * 1024 * 1024 {
|
if size >= 1024 * 1024 * 1024 {
|
||||||
var remainder = (size % (1024 * 1024 * 1024)) / (1024 * 1024 * 102)
|
var remainder = (size % (1024 * 1024 * 1024)) / (1024 * 1024 * 102)
|
||||||
|
if remainder == 10 {
|
||||||
|
remainder = 9
|
||||||
|
}
|
||||||
while remainder != 0 && remainder % 10 == 0 {
|
while remainder != 0 && remainder % 10 == 0 {
|
||||||
remainder /= 10
|
remainder /= 10
|
||||||
}
|
}
|
||||||
@ -24,6 +27,9 @@ public func autodownloadDataSizeString(_ size: Int64, decimalSeparator: String =
|
|||||||
}
|
}
|
||||||
} else if size >= 1024 * 1024 {
|
} else if size >= 1024 * 1024 {
|
||||||
var remainder = (size % (1024 * 1024)) / (1024 * 102)
|
var remainder = (size % (1024 * 1024)) / (1024 * 102)
|
||||||
|
if remainder == 10 {
|
||||||
|
remainder = 9
|
||||||
|
}
|
||||||
while remainder != 0 && remainder % 10 == 0 {
|
while remainder != 0 && remainder % 10 == 0 {
|
||||||
remainder /= 10
|
remainder /= 10
|
||||||
}
|
}
|
||||||
|
|||||||
@ -245,10 +245,11 @@ func cachedStickerPack(transaction: Transaction, reference: StickerPackReference
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
case let .name(shortName):
|
case let .name(shortName):
|
||||||
|
let shortName = shortName.lowercased()
|
||||||
for namespace in namespaces {
|
for namespace in namespaces {
|
||||||
for info in transaction.getItemCollectionsInfos(namespace: namespace) {
|
for info in transaction.getItemCollectionsInfos(namespace: namespace) {
|
||||||
if let info = info.1 as? StickerPackCollectionInfo {
|
if let info = info.1 as? StickerPackCollectionInfo {
|
||||||
if info.shortName == shortName {
|
if info.shortName.lowercased() == shortName {
|
||||||
let items = transaction.getItemCollectionItems(collectionId: info.id)
|
let items = transaction.getItemCollectionItems(collectionId: info.id)
|
||||||
if !items.isEmpty {
|
if !items.isEmpty {
|
||||||
return (info, items.compactMap { $0 as? StickerPackItem }, true)
|
return (info, items.compactMap { $0 as? StickerPackItem }, true)
|
||||||
|
|||||||
@ -513,6 +513,8 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
|||||||
var updatedClosedPinnedMessageId: ((MessageId) -> Void)?
|
var updatedClosedPinnedMessageId: ((MessageId) -> Void)?
|
||||||
var requestedUnpinAllMessages: ((Int, MessageId) -> Void)?
|
var requestedUnpinAllMessages: ((Int, MessageId) -> Void)?
|
||||||
|
|
||||||
|
public var isSelectingMessagesUpdated: ((Bool) -> Void)?
|
||||||
|
|
||||||
private let scrolledToMessageId = ValuePromise<ScrolledToMessageId?>(nil, ignoreRepeated: true)
|
private let scrolledToMessageId = ValuePromise<ScrolledToMessageId?>(nil, ignoreRepeated: true)
|
||||||
private var scrolledToMessageIdValue: ScrolledToMessageId? = nil {
|
private var scrolledToMessageIdValue: ScrolledToMessageId? = nil {
|
||||||
didSet {
|
didSet {
|
||||||
@ -11455,6 +11457,10 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
|||||||
self.recordingActivityPromise.set(recordingActivityValue)
|
self.recordingActivityPromise.set(recordingActivityValue)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (self.presentationInterfaceState.interfaceState.selectionState == nil) != (updatedChatPresentationInterfaceState.interfaceState.selectionState == nil) {
|
||||||
|
self.isSelectingMessagesUpdated?(updatedChatPresentationInterfaceState.interfaceState.selectionState != nil)
|
||||||
|
}
|
||||||
|
|
||||||
self.presentationInterfaceState = updatedChatPresentationInterfaceState
|
self.presentationInterfaceState = updatedChatPresentationInterfaceState
|
||||||
|
|
||||||
self.updateSlowmodeStatus()
|
self.updateSlowmodeStatus()
|
||||||
@ -11678,6 +11684,10 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
|||||||
}), in: .current)
|
}), in: .current)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public func cancelSelectingMessages() {
|
||||||
|
self.navigationButtonAction(.cancelMessageSelection)
|
||||||
|
}
|
||||||
|
|
||||||
private func navigationButtonAction(_ action: ChatNavigationButtonAction) {
|
private func navigationButtonAction(_ action: ChatNavigationButtonAction) {
|
||||||
switch action {
|
switch action {
|
||||||
case .spacer, .toggleInfoPanel:
|
case .spacer, .toggleInfoPanel:
|
||||||
|
|||||||
@ -2654,7 +2654,7 @@ class ChatControllerNode: ASDisplayNode, UIScrollViewDelegate {
|
|||||||
context: self.context,
|
context: self.context,
|
||||||
currentInputData: inputMediaNodeData,
|
currentInputData: inputMediaNodeData,
|
||||||
updatedInputData: self.inputMediaNodeDataPromise.get(),
|
updatedInputData: self.inputMediaNodeDataPromise.get(),
|
||||||
defaultToEmojiTab: !self.chatPresentationInterfaceState.interfaceState.effectiveInputState.inputText.string.isEmpty || self.openStickersBeginWithEmoji,
|
defaultToEmojiTab: !self.chatPresentationInterfaceState.interfaceState.effectiveInputState.inputText.string.isEmpty || self.chatPresentationInterfaceState.interfaceState.forwardMessageIds != nil || self.openStickersBeginWithEmoji,
|
||||||
controllerInteraction: self.controllerInteraction,
|
controllerInteraction: self.controllerInteraction,
|
||||||
interfaceInteraction: self.interfaceInteraction,
|
interfaceInteraction: self.interfaceInteraction,
|
||||||
chatPeerId: peerId
|
chatPeerId: peerId
|
||||||
|
|||||||
@ -354,14 +354,14 @@ func inputTextPanelStateForChatPresentationInterfaceState(_ chatPresentationInte
|
|||||||
|
|
||||||
let isTextEmpty = chatPresentationInterfaceState.interfaceState.composeInputState.inputText.length == 0
|
let isTextEmpty = chatPresentationInterfaceState.interfaceState.composeInputState.inputText.length == 0
|
||||||
|
|
||||||
if chatPresentationInterfaceState.interfaceState.forwardMessageIds == nil {
|
let hasForward = chatPresentationInterfaceState.interfaceState.forwardMessageIds != nil
|
||||||
if isTextEmpty && chatPresentationInterfaceState.hasScheduledMessages {
|
|
||||||
|
if isTextEmpty && chatPresentationInterfaceState.hasScheduledMessages && !hasForward {
|
||||||
accessoryItems.append(.scheduledMessages)
|
accessoryItems.append(.scheduledMessages)
|
||||||
}
|
}
|
||||||
|
|
||||||
var stickersEnabled = true
|
var stickersEnabled = true
|
||||||
|
var stickersAreEmoji = !isTextEmpty
|
||||||
let stickersAreEmoji = !isTextEmpty
|
|
||||||
|
|
||||||
if let peer = chatPresentationInterfaceState.renderedPeer?.peer as? TelegramChannel {
|
if let peer = chatPresentationInterfaceState.renderedPeer?.peer as? TelegramChannel {
|
||||||
if isTextEmpty, case .broadcast = peer.info, canSendMessagesToPeer(peer) {
|
if isTextEmpty, case .broadcast = peer.info, canSendMessagesToPeer(peer) {
|
||||||
@ -375,15 +375,18 @@ func inputTextPanelStateForChatPresentationInterfaceState(_ chatPresentationInte
|
|||||||
stickersEnabled = false
|
stickersEnabled = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if isTextEmpty && chatPresentationInterfaceState.hasBots && chatPresentationInterfaceState.hasBotCommands {
|
|
||||||
|
|
||||||
|
if isTextEmpty && chatPresentationInterfaceState.hasBots && chatPresentationInterfaceState.hasBotCommands && !hasForward {
|
||||||
accessoryItems.append(.commands)
|
accessoryItems.append(.commands)
|
||||||
}
|
}
|
||||||
|
|
||||||
if !canSendTextMessages {
|
if !canSendTextMessages {
|
||||||
if stickersEnabled && !stickersAreEmoji {
|
if stickersEnabled && !stickersAreEmoji && !hasForward {
|
||||||
accessoryItems.append(.input(isEnabled: true, inputMode: .stickers))
|
accessoryItems.append(.input(isEnabled: true, inputMode: .stickers))
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
stickersAreEmoji = stickersAreEmoji || hasForward
|
||||||
if stickersEnabled {
|
if stickersEnabled {
|
||||||
accessoryItems.append(.input(isEnabled: true, inputMode: stickersAreEmoji ? .emoji : .stickers))
|
accessoryItems.append(.input(isEnabled: true, inputMode: stickersAreEmoji ? .emoji : .stickers))
|
||||||
} else {
|
} else {
|
||||||
@ -394,7 +397,7 @@ func inputTextPanelStateForChatPresentationInterfaceState(_ chatPresentationInte
|
|||||||
if isTextEmpty, let message = chatPresentationInterfaceState.keyboardButtonsMessage, let _ = message.visibleButtonKeyboardMarkup, chatPresentationInterfaceState.interfaceState.messageActionsState.dismissedButtonKeyboardMessageId != message.id {
|
if isTextEmpty, let message = chatPresentationInterfaceState.keyboardButtonsMessage, let _ = message.visibleButtonKeyboardMarkup, chatPresentationInterfaceState.interfaceState.messageActionsState.dismissedButtonKeyboardMessageId != message.id {
|
||||||
accessoryItems.append(.botInput(isEnabled: true, inputMode: .bot))
|
accessoryItems.append(.botInput(isEnabled: true, inputMode: .bot))
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return ChatTextInputPanelState(accessoryItems: accessoryItems, contextPlaceholder: contextPlaceholder, mediaRecordingState: chatPresentationInterfaceState.inputTextPanelState.mediaRecordingState)
|
return ChatTextInputPanelState(accessoryItems: accessoryItems, contextPlaceholder: contextPlaceholder, mediaRecordingState: chatPresentationInterfaceState.inputTextPanelState.mediaRecordingState)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -162,10 +162,12 @@ func openResolvedUrlImpl(_ resolvedUrl: ResolvedUrl, context: AccountContext, ur
|
|||||||
}
|
}
|
||||||
dismissInput()
|
dismissInput()
|
||||||
navigationController?.pushViewController(controller)
|
navigationController?.pushViewController(controller)
|
||||||
case let .gameStart(peerId, game):
|
case let .gameStart(botPeerId, game):
|
||||||
let controller = context.sharedContext.makePeerSelectionController(PeerSelectionControllerParams(context: context, filter: [.onlyManageable, .excludeDisabled, .excludeRecent, .doNotSearchMessages], hasContactSelector: false, title: presentationData.strings.Bot_AddToChat_Title, selectForumThreads: true))
|
let controller = context.sharedContext.makePeerSelectionController(PeerSelectionControllerParams(context: context, filter: [.onlyManageable, .excludeDisabled, .excludeRecent, .doNotSearchMessages], hasContactSelector: false, title: presentationData.strings.Bot_AddToChat_Title, selectForumThreads: true))
|
||||||
controller.peerSelected = { [weak controller] peer, _ in
|
controller.peerSelected = { [weak controller] peer, _ in
|
||||||
let peerId = peer.id
|
let _ = peer.id
|
||||||
|
let _ = botPeerId
|
||||||
|
let _ = game
|
||||||
let presentationData = context.sharedContext.currentPresentationData.with { $0 }
|
let presentationData = context.sharedContext.currentPresentationData.with { $0 }
|
||||||
let text: String
|
let text: String
|
||||||
if let peer = peer as? TelegramUser {
|
if let peer = peer as? TelegramUser {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user