mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-22 22:25:57 +00:00
[Temp] New input pane
This commit is contained in:
@@ -917,8 +917,8 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
||||
transitionCompletion()
|
||||
}, presentStickers: { [weak self] completion in
|
||||
if let strongSelf = self {
|
||||
let controller = DrawingStickersScreen(context: strongSelf.context, selectSticker: { fileReference, node, rect in
|
||||
completion(fileReference.media, fileReference.media.isAnimatedSticker || fileReference.media.isVideoSticker, node.view, rect)
|
||||
let controller = DrawingStickersScreen(context: strongSelf.context, selectSticker: { fileReference, view, rect in
|
||||
completion(fileReference.media, fileReference.media.isAnimatedSticker || fileReference.media.isVideoSticker, view, rect)
|
||||
return true
|
||||
})
|
||||
strongSelf.present(controller, in: .window(.root))
|
||||
@@ -1494,13 +1494,13 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
||||
attributes.append(TextEntitiesMessageAttribute(entities: entities))
|
||||
}
|
||||
strongSelf.sendMessages([.message(text: text, attributes: attributes, mediaReference: nil, replyToMessageId: strongSelf.presentationInterfaceState.interfaceState.replyMessageId, localGroupingKey: nil, correlationId: nil)])
|
||||
}, sendSticker: { [weak self] fileReference, silentPosting, schedule, query, clearInput, sourceNode, sourceRect in
|
||||
}, sendSticker: { [weak self] fileReference, silentPosting, schedule, query, clearInput, sourceView, sourceRect in
|
||||
guard let strongSelf = self else {
|
||||
return false
|
||||
}
|
||||
|
||||
if let _ = strongSelf.presentationInterfaceState.slowmodeState, strongSelf.presentationInterfaceState.subject != .scheduledMessages {
|
||||
strongSelf.interfaceInteraction?.displaySlowmodeTooltip(sourceNode, sourceRect)
|
||||
strongSelf.interfaceInteraction?.displaySlowmodeTooltip(sourceView, sourceRect)
|
||||
return false
|
||||
}
|
||||
|
||||
@@ -1517,7 +1517,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
||||
}
|
||||
|
||||
var shouldAnimateMessageTransition = strongSelf.chatDisplayNode.shouldAnimateMessageTransition
|
||||
if sourceNode is ChatEmptyNodeStickerContentNode {
|
||||
if let _ = sourceView.asyncdisplaykit_node as? ChatEmptyNodeStickerContentNode {
|
||||
shouldAnimateMessageTransition = true
|
||||
}
|
||||
|
||||
@@ -1545,7 +1545,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
||||
}, shouldAnimateMessageTransition ? correlationId : nil)
|
||||
|
||||
if shouldAnimateMessageTransition {
|
||||
if let sourceNode = sourceNode as? ChatMediaInputStickerGridItemNode {
|
||||
if let sourceNode = sourceView.asyncdisplaykit_node as? ChatMediaInputStickerGridItemNode {
|
||||
strongSelf.chatDisplayNode.messageTransitionNode.add(correlationId: correlationId, source: .stickerMediaInput(input: .inputPanel(itemNode: sourceNode), replyPanel: replyPanel), initiated: {
|
||||
guard let strongSelf = self else {
|
||||
return
|
||||
@@ -1562,12 +1562,14 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
||||
return current
|
||||
})
|
||||
})
|
||||
} else if let sourceNode = sourceNode as? HorizontalStickerGridItemNode {
|
||||
} else if let sourceNode = sourceView.asyncdisplaykit_node as? HorizontalStickerGridItemNode {
|
||||
strongSelf.chatDisplayNode.messageTransitionNode.add(correlationId: correlationId, source: .stickerMediaInput(input: .mediaPanel(itemNode: sourceNode), replyPanel: replyPanel), initiated: {})
|
||||
} else if let sourceNode = sourceNode as? StickerPaneSearchStickerItemNode {
|
||||
} else if let sourceNode = sourceView.asyncdisplaykit_node as? StickerPaneSearchStickerItemNode {
|
||||
strongSelf.chatDisplayNode.messageTransitionNode.add(correlationId: correlationId, source: .stickerMediaInput(input: .inputPanelSearch(itemNode: sourceNode), replyPanel: replyPanel), initiated: {})
|
||||
} else if let sourceNode = sourceNode as? ChatEmptyNodeStickerContentNode {
|
||||
} else if let sourceNode = sourceView.asyncdisplaykit_node as? ChatEmptyNodeStickerContentNode {
|
||||
strongSelf.chatDisplayNode.messageTransitionNode.add(correlationId: correlationId, source: .stickerMediaInput(input: .emptyPanel(itemNode: sourceNode), replyPanel: nil), initiated: {})
|
||||
} else {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1590,7 +1592,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
||||
}, sendGif: { [weak self] fileReference, sourceNode, sourceRect, silentPosting, schedule in
|
||||
if let strongSelf = self {
|
||||
if let _ = strongSelf.presentationInterfaceState.slowmodeState, strongSelf.presentationInterfaceState.subject != .scheduledMessages {
|
||||
strongSelf.interfaceInteraction?.displaySlowmodeTooltip(sourceNode, sourceRect)
|
||||
strongSelf.interfaceInteraction?.displaySlowmodeTooltip(sourceNode.view, sourceRect)
|
||||
return false
|
||||
}
|
||||
|
||||
@@ -1632,7 +1634,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
||||
return false
|
||||
}
|
||||
if let _ = strongSelf.presentationInterfaceState.slowmodeState, strongSelf.presentationInterfaceState.subject != .scheduledMessages {
|
||||
strongSelf.interfaceInteraction?.displaySlowmodeTooltip(sourceNode, sourceRect)
|
||||
strongSelf.interfaceInteraction?.displaySlowmodeTooltip(sourceNode.view, sourceRect)
|
||||
return false
|
||||
}
|
||||
|
||||
@@ -2947,7 +2949,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
||||
if let strongSelf = self {
|
||||
if let _ = strongSelf.presentationInterfaceState.slowmodeState {
|
||||
if let rect = strongSelf.chatDisplayNode.frameForInputActionButton() {
|
||||
strongSelf.interfaceInteraction?.displaySlowmodeTooltip(strongSelf.chatDisplayNode, rect)
|
||||
strongSelf.interfaceInteraction?.displaySlowmodeTooltip(strongSelf.chatDisplayNode.view, rect)
|
||||
}
|
||||
return
|
||||
} else {
|
||||
@@ -3288,8 +3290,8 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
||||
if let mediaReference = mediaReference, let peer = message.peers[message.id.peerId] {
|
||||
legacyMediaEditor(context: strongSelf.context, peer: peer, media: mediaReference, initialCaption: NSAttributedString(string: message.text), snapshots: [], transitionCompletion: nil, presentStickers: { [weak self] completion in
|
||||
if let strongSelf = self {
|
||||
let controller = DrawingStickersScreen(context: strongSelf.context, selectSticker: { fileReference, node, rect in
|
||||
completion(fileReference.media, fileReference.media.isAnimatedSticker || fileReference.media.isVideoSticker, node.view, rect)
|
||||
let controller = DrawingStickersScreen(context: strongSelf.context, selectSticker: { fileReference, view, rect in
|
||||
completion(fileReference.media, fileReference.media.isAnimatedSticker || fileReference.media.isVideoSticker, view, rect)
|
||||
return true
|
||||
})
|
||||
strongSelf.present(controller, in: .window(.root))
|
||||
@@ -6128,7 +6130,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
||||
}
|
||||
if strongSelf.presentationInterfaceState.interfaceState.editMessage == nil, let _ = strongSelf.presentationInterfaceState.slowmodeState, strongSelf.presentationInterfaceState.subject != .scheduledMessages {
|
||||
if let rect = strongSelf.chatDisplayNode.frameForAttachmentButton() {
|
||||
strongSelf.interfaceInteraction?.displaySlowmodeTooltip(strongSelf.chatDisplayNode, rect)
|
||||
strongSelf.interfaceInteraction?.displaySlowmodeTooltip(strongSelf.chatDisplayNode.view, rect)
|
||||
}
|
||||
return
|
||||
}
|
||||
@@ -7197,7 +7199,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
||||
return false
|
||||
}
|
||||
if let _ = strongSelf.presentationInterfaceState.slowmodeState, strongSelf.presentationInterfaceState.subject != .scheduledMessages {
|
||||
strongSelf.interfaceInteraction?.displaySlowmodeTooltip(node, rect)
|
||||
strongSelf.interfaceInteraction?.displaySlowmodeTooltip(node.view, rect)
|
||||
return false
|
||||
}
|
||||
|
||||
@@ -7581,9 +7583,9 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
||||
}
|
||||
}
|
||||
}
|
||||
}, sendSticker: { [weak self] file, clearInput, sourceNode, sourceRect in
|
||||
}, sendSticker: { [weak self] file, clearInput, sourceView, sourceRect in
|
||||
if let strongSelf = self, canSendMessagesToChat(strongSelf.presentationInterfaceState) {
|
||||
return strongSelf.controllerInteraction?.sendSticker(file, false, false, nil, clearInput, sourceNode, sourceRect) ?? false
|
||||
return strongSelf.controllerInteraction?.sendSticker(file, false, false, nil, clearInput, sourceView, sourceRect) ?? false
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
@@ -8240,11 +8242,11 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
||||
})
|
||||
})]
|
||||
strongSelf.present(textAlertController(context: strongSelf.context, updatedPresentationData: strongSelf.updatedPresentationData, title: strongSelf.presentationData.strings.ReportGroupLocation_Title, text: strongSelf.presentationData.strings.ReportGroupLocation_Text, actions: actions), in: .window(.root))
|
||||
}, displaySlowmodeTooltip: { [weak self] node, nodeRect in
|
||||
}, displaySlowmodeTooltip: { [weak self] sourceView, nodeRect in
|
||||
guard let strongSelf = self, let slowmodeState = strongSelf.presentationInterfaceState.slowmodeState else {
|
||||
return
|
||||
}
|
||||
let rect = node.view.convert(nodeRect, to: strongSelf.view)
|
||||
let rect = sourceView.convert(nodeRect, to: strongSelf.view)
|
||||
if let slowmodeTooltipController = strongSelf.slowmodeTooltipController {
|
||||
if let arguments = slowmodeTooltipController.presentationArguments as? TooltipControllerPresentationArguments, case let .node(f) = arguments.sourceAndRect, let (previousNode, previousRect) = f() {
|
||||
if previousNode === strongSelf.chatDisplayNode && previousRect == rect {
|
||||
@@ -8559,6 +8561,28 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
||||
return $0.updatedShowWebView(f($0.showWebView))
|
||||
})
|
||||
}
|
||||
}, insertText: { [weak self] text in
|
||||
guard let strongSelf = self else {
|
||||
return
|
||||
}
|
||||
if !strongSelf.chatDisplayNode.isTextInputPanelActive {
|
||||
return
|
||||
}
|
||||
guard let textInputPanelNode = strongSelf.chatDisplayNode.textInputPanelNode else {
|
||||
return
|
||||
}
|
||||
textInputPanelNode.insertText(string: text)
|
||||
}, backwardsDeleteText: { [weak self] in
|
||||
guard let strongSelf = self else {
|
||||
return
|
||||
}
|
||||
if !strongSelf.chatDisplayNode.isTextInputPanelActive {
|
||||
return
|
||||
}
|
||||
guard let textInputPanelNode = strongSelf.chatDisplayNode.textInputPanelNode else {
|
||||
return
|
||||
}
|
||||
textInputPanelNode.backwardsDeleteText()
|
||||
}, chatController: { [weak self] in
|
||||
return self
|
||||
}, statuses: ChatPanelInterfaceInteractionStatuses(editingMessage: self.editingMessage.get(), startingBot: self.startingBot.get(), unblockingPeer: self.unblockingPeer.get(), searching: self.searching.get(), loadingMessage: self.loadingMessage.get(), inlineSearch: self.performingInlineSearch.get()))
|
||||
@@ -10759,8 +10783,8 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
||||
}
|
||||
}, presentStickers: { [weak self] completion in
|
||||
if let strongSelf = self {
|
||||
let controller = DrawingStickersScreen(context: strongSelf.context, selectSticker: { fileReference, node, rect in
|
||||
completion(fileReference.media, fileReference.media.isAnimatedSticker || fileReference.media.isVideoSticker, node.view, rect)
|
||||
let controller = DrawingStickersScreen(context: strongSelf.context, selectSticker: { fileReference, view, rect in
|
||||
completion(fileReference.media, fileReference.media.isAnimatedSticker || fileReference.media.isVideoSticker, view, rect)
|
||||
return true
|
||||
})
|
||||
strongSelf.present(controller, in: .window(.root))
|
||||
@@ -11364,8 +11388,8 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
||||
}
|
||||
}, presentStickers: { [weak self] completion in
|
||||
if let strongSelf = self {
|
||||
let controller = DrawingStickersScreen(context: strongSelf.context, selectSticker: { fileReference, node, rect in
|
||||
completion(fileReference.media, fileReference.media.isAnimatedSticker || fileReference.media.isVideoSticker, node.view, rect)
|
||||
let controller = DrawingStickersScreen(context: strongSelf.context, selectSticker: { fileReference, view, rect in
|
||||
completion(fileReference.media, fileReference.media.isAnimatedSticker || fileReference.media.isVideoSticker, view, rect)
|
||||
return true
|
||||
})
|
||||
strongSelf.present(controller, in: .window(.root))
|
||||
@@ -11462,8 +11486,8 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
||||
}
|
||||
}, presentStickers: { [weak self] completion in
|
||||
if let strongSelf = self {
|
||||
let controller = DrawingStickersScreen(context: strongSelf.context, selectSticker: { fileReference, node, rect in
|
||||
completion(fileReference.media, fileReference.media.isAnimatedSticker || fileReference.media.isVideoSticker, node.view, rect)
|
||||
let controller = DrawingStickersScreen(context: strongSelf.context, selectSticker: { fileReference, view, rect in
|
||||
completion(fileReference.media, fileReference.media.isAnimatedSticker || fileReference.media.isVideoSticker, view, rect)
|
||||
return true
|
||||
})
|
||||
strongSelf.present(controller, in: .window(.root))
|
||||
@@ -11672,8 +11696,8 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
||||
}
|
||||
controller.presentStickers = { [weak self] completion in
|
||||
if let strongSelf = self {
|
||||
let controller = DrawingStickersScreen(context: strongSelf.context, selectSticker: { fileReference, node, rect in
|
||||
completion(fileReference.media, fileReference.media.isAnimatedSticker || fileReference.media.isVideoSticker, node.view, rect)
|
||||
let controller = DrawingStickersScreen(context: strongSelf.context, selectSticker: { fileReference, view, rect in
|
||||
completion(fileReference.media, fileReference.media.isAnimatedSticker || fileReference.media.isVideoSticker, view, rect)
|
||||
return true
|
||||
})
|
||||
strongSelf.present(controller, in: .window(.root))
|
||||
@@ -11769,8 +11793,8 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
||||
}))
|
||||
controller.presentStickers = { [weak self] completion in
|
||||
if let strongSelf = self {
|
||||
let controller = DrawingStickersScreen(context: strongSelf.context, selectSticker: { fileReference, node, rect in
|
||||
completion(fileReference.media, fileReference.media.isAnimatedSticker || fileReference.media.isVideoSticker, node.view, rect)
|
||||
let controller = DrawingStickersScreen(context: strongSelf.context, selectSticker: { fileReference, view, rect in
|
||||
completion(fileReference.media, fileReference.media.isAnimatedSticker || fileReference.media.isVideoSticker, view, rect)
|
||||
return true
|
||||
})
|
||||
strongSelf.present(controller, in: .window(.root))
|
||||
@@ -11816,8 +11840,8 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
||||
}
|
||||
}, presentStickers: { [weak self] completion in
|
||||
if let strongSelf = self {
|
||||
let controller = DrawingStickersScreen(context: strongSelf.context, selectSticker: { fileReference, node, rect in
|
||||
completion(fileReference.media, fileReference.media.isAnimatedSticker || fileReference.media.isVideoSticker, node.view, rect)
|
||||
let controller = DrawingStickersScreen(context: strongSelf.context, selectSticker: { fileReference, view, rect in
|
||||
completion(fileReference.media, fileReference.media.isAnimatedSticker || fileReference.media.isVideoSticker, view, rect)
|
||||
return true
|
||||
})
|
||||
strongSelf.present(controller, in: .window(.root))
|
||||
@@ -11873,8 +11897,8 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
||||
}))
|
||||
controller.presentStickers = { [weak self] completion in
|
||||
if let strongSelf = self {
|
||||
let controller = DrawingStickersScreen(context: strongSelf.context, selectSticker: { fileReference, node, rect in
|
||||
completion(fileReference.media, fileReference.media.isAnimatedSticker || fileReference.media.isVideoSticker, node.view, rect)
|
||||
let controller = DrawingStickersScreen(context: strongSelf.context, selectSticker: { fileReference, view, rect in
|
||||
completion(fileReference.media, fileReference.media.isAnimatedSticker || fileReference.media.isVideoSticker, view, rect)
|
||||
return true
|
||||
})
|
||||
strongSelf.present(controller, in: .window(.root))
|
||||
@@ -12723,8 +12747,8 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
||||
self?.enqueueMediaMessages(signals: signals, silentPosting: silentPosting, scheduleTime: scheduleTime > 0 ? scheduleTime : nil)
|
||||
}, presentStickers: { [weak self] completion in
|
||||
if let strongSelf = self {
|
||||
let controller = DrawingStickersScreen(context: strongSelf.context, selectSticker: { fileReference, node, rect in
|
||||
completion(fileReference.media, fileReference.media.isAnimatedSticker || fileReference.media.isVideoSticker, node.view, rect)
|
||||
let controller = DrawingStickersScreen(context: strongSelf.context, selectSticker: { fileReference, view, rect in
|
||||
completion(fileReference.media, fileReference.media.isAnimatedSticker || fileReference.media.isVideoSticker, view, rect)
|
||||
return true
|
||||
})
|
||||
strongSelf.present(controller, in: .window(.root))
|
||||
@@ -12944,8 +12968,8 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
||||
|
||||
strongSelf.sendMessages([updatedMessage])
|
||||
}
|
||||
}, displaySlowmodeTooltip: { [weak self] node, rect in
|
||||
self?.interfaceInteraction?.displaySlowmodeTooltip(node, rect)
|
||||
}, displaySlowmodeTooltip: { [weak self] view, rect in
|
||||
self?.interfaceInteraction?.displaySlowmodeTooltip(view, rect)
|
||||
}, presentSchedulePicker: { [weak self] done in
|
||||
if let strongSelf = self {
|
||||
strongSelf.presentScheduleTimePicker(completion: { [weak self] time in
|
||||
@@ -13131,7 +13155,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
||||
|
||||
if let _ = self.presentationInterfaceState.slowmodeState, !isScheduledMessages {
|
||||
if let rect = self.chatDisplayNode.frameForInputActionButton() {
|
||||
self.interfaceInteraction?.displaySlowmodeTooltip(self.chatDisplayNode, rect)
|
||||
self.interfaceInteraction?.displaySlowmodeTooltip(self.chatDisplayNode.view, rect)
|
||||
}
|
||||
return
|
||||
}
|
||||
@@ -14821,8 +14845,8 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
||||
default:
|
||||
break
|
||||
}
|
||||
}, sendFile: nil, sendSticker: { [weak self] f, sourceNode, sourceRect in
|
||||
return self?.interfaceInteraction?.sendSticker(f, true, sourceNode, sourceRect) ?? false
|
||||
}, sendFile: nil, sendSticker: { [weak self] f, sourceView, sourceRect in
|
||||
return self?.interfaceInteraction?.sendSticker(f, true, sourceView, sourceRect) ?? false
|
||||
}, requestMessageActionUrlAuth: { [weak self] subject in
|
||||
if case let .url(url) = subject {
|
||||
self?.controllerInteraction?.requestMessageActionUrlAuth(url, subject)
|
||||
|
||||
Reference in New Issue
Block a user