mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Web app improvements
This commit is contained in:
parent
af9dcd2f19
commit
0d058348b0
@ -12270,7 +12270,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private func sendMessages(_ messages: [EnqueueMessage], commit: Bool = false) {
|
private func sendMessages(_ messages: [EnqueueMessage], media: Bool = false, commit: Bool = false) {
|
||||||
guard let peerId = self.chatLocation.peerId else {
|
guard let peerId = self.chatLocation.peerId else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -12294,7 +12294,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
|||||||
|
|
||||||
self.updateChatPresentationInterfaceState(interactive: true, { $0.updatedShowCommands(false) })
|
self.updateChatPresentationInterfaceState(interactive: true, { $0.updatedShowCommands(false) })
|
||||||
} else {
|
} else {
|
||||||
self.presentScheduleTimePicker(dismissByTapOutside: false, completion: { [weak self] time in
|
self.presentScheduleTimePicker(style: media ? .media : .default, dismissByTapOutside: false, completion: { [weak self] time in
|
||||||
if let strongSelf = self {
|
if let strongSelf = self {
|
||||||
strongSelf.sendMessages(strongSelf.transformEnqueueMessages(messages, silentPosting: false, scheduleTime: time), commit: true)
|
strongSelf.sendMessages(strongSelf.transformEnqueueMessages(messages, silentPosting: false, scheduleTime: time), commit: true)
|
||||||
}
|
}
|
||||||
@ -12319,7 +12319,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
|||||||
var message = item.message
|
var message = item.message
|
||||||
if let uniqueId = item.uniqueId {
|
if let uniqueId = item.uniqueId {
|
||||||
let correlationId: Int64
|
let correlationId: Int64
|
||||||
var addTransition = true
|
var addTransition = scheduleTime == nil
|
||||||
if let groupingKey = message.groupingKey {
|
if let groupingKey = message.groupingKey {
|
||||||
if let existing = groupedCorrelationIds[groupingKey] {
|
if let existing = groupedCorrelationIds[groupingKey] {
|
||||||
correlationId = existing
|
correlationId = existing
|
||||||
@ -12396,7 +12396,11 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
|||||||
completionImpl?()
|
completionImpl?()
|
||||||
}, usedCorrelationId)
|
}, usedCorrelationId)
|
||||||
|
|
||||||
strongSelf.sendMessages(messages.map { $0.withUpdatedReplyToMessageId(replyMessageId) })
|
strongSelf.sendMessages(messages.map { $0.withUpdatedReplyToMessageId(replyMessageId) }, media: true)
|
||||||
|
|
||||||
|
if let _ = scheduleTime {
|
||||||
|
completion()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
@ -877,6 +877,7 @@ class ChatTextInputPanelNode: ChatInputPanelNode, ASEditableTextNodeDelegate {
|
|||||||
self.attachmentButton.accessibilityTraits = (!isSlowmodeActive || isMediaEnabled) ? [.button] : [.button, .notEnabled]
|
self.attachmentButton.accessibilityTraits = (!isSlowmodeActive || isMediaEnabled) ? [.button] : [.button, .notEnabled]
|
||||||
self.attachmentButtonDisabledNode.isHidden = !isSlowmodeActive || isMediaEnabled
|
self.attachmentButtonDisabledNode.isHidden = !isSlowmodeActive || isMediaEnabled
|
||||||
|
|
||||||
|
var buttonTitleUpdated = false
|
||||||
var menuTextSize = self.menuButtonTextNode.frame.size
|
var menuTextSize = self.menuButtonTextNode.frame.size
|
||||||
if self.presentationInterfaceState != interfaceState {
|
if self.presentationInterfaceState != interfaceState {
|
||||||
let previousState = self.presentationInterfaceState
|
let previousState = self.presentationInterfaceState
|
||||||
@ -914,8 +915,19 @@ class ChatTextInputPanelNode: ChatInputPanelNode, ASEditableTextNodeDelegate {
|
|||||||
buttonTitle = interfaceState.strings.Conversation_InputMenu
|
buttonTitle = interfaceState.strings.Conversation_InputMenu
|
||||||
}
|
}
|
||||||
|
|
||||||
|
buttonTitleUpdated = self.menuButtonTextNode.attributedText != nil && self.menuButtonTextNode.attributedText?.string != buttonTitle
|
||||||
|
|
||||||
self.menuButtonTextNode.attributedText = NSAttributedString(string: buttonTitle, font: Font.with(size: 16.0, design: .round, weight: .medium, traits: []), textColor: interfaceState.theme.chat.inputPanel.actionControlForegroundColor)
|
self.menuButtonTextNode.attributedText = NSAttributedString(string: buttonTitle, font: Font.with(size: 16.0, design: .round, weight: .medium, traits: []), textColor: interfaceState.theme.chat.inputPanel.actionControlForegroundColor)
|
||||||
self.menuButton.accessibilityLabel = self.menuButtonTextNode.attributedText?.string
|
self.menuButton.accessibilityLabel = self.menuButtonTextNode.attributedText?.string
|
||||||
|
|
||||||
|
if buttonTitleUpdated, let buttonTextSnapshotView = self.menuButtonTextNode.view.snapshotView(afterScreenUpdates: false) {
|
||||||
|
buttonTextSnapshotView.frame = self.menuButtonTextNode.view.frame
|
||||||
|
self.menuButtonTextNode.view.superview?.addSubview(buttonTextSnapshotView)
|
||||||
|
buttonTextSnapshotView.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2, removeOnCompletion: false, completion: { [weak buttonTextSnapshotView] _ in
|
||||||
|
buttonTextSnapshotView?.removeFromSuperview()
|
||||||
|
})
|
||||||
|
self.menuButtonTextNode.view.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2)
|
||||||
|
}
|
||||||
menuTextSize = self.menuButtonTextNode.updateLayout(CGSize(width: width, height: 44.0))
|
menuTextSize = self.menuButtonTextNode.updateLayout(CGSize(width: width, height: 44.0))
|
||||||
|
|
||||||
var updateSendButtonIcon = false
|
var updateSendButtonIcon = false
|
||||||
@ -1212,6 +1224,10 @@ class ChatTextInputPanelNode: ChatInputPanelNode, ASEditableTextNodeDelegate {
|
|||||||
}
|
}
|
||||||
self.leftMenuInset = leftMenuInset
|
self.leftMenuInset = leftMenuInset
|
||||||
|
|
||||||
|
if buttonTitleUpdated && !transition.isAnimated {
|
||||||
|
transition = .animated(duration: 0.3, curve: .easeInOut)
|
||||||
|
}
|
||||||
|
|
||||||
let baseWidth = width - leftInset - leftMenuInset - rightInset
|
let baseWidth = width - leftInset - leftMenuInset - rightInset
|
||||||
let (accessoryButtonsWidth, textFieldHeight) = self.calculateTextFieldMetrics(width: baseWidth, maxHeight: maxHeight, metrics: metrics)
|
let (accessoryButtonsWidth, textFieldHeight) = self.calculateTextFieldMetrics(width: baseWidth, maxHeight: maxHeight, metrics: metrics)
|
||||||
let panelHeight = self.panelHeight(textFieldHeight: textFieldHeight, metrics: metrics)
|
let panelHeight = self.panelHeight(textFieldHeight: textFieldHeight, metrics: metrics)
|
||||||
@ -1220,7 +1236,11 @@ class ChatTextInputPanelNode: ChatInputPanelNode, ASEditableTextNodeDelegate {
|
|||||||
transition.updateFrameAsPositionAndBounds(node: self.menuButton, frame: menuButtonFrame)
|
transition.updateFrameAsPositionAndBounds(node: self.menuButton, frame: menuButtonFrame)
|
||||||
transition.updateFrame(node: self.menuButtonBackgroundNode, frame: CGRect(origin: CGPoint(), size: menuButtonFrame.size))
|
transition.updateFrame(node: self.menuButtonBackgroundNode, frame: CGRect(origin: CGPoint(), size: menuButtonFrame.size))
|
||||||
transition.updateFrame(node: self.menuButtonClippingNode, frame: CGRect(origin: CGPoint(x: 19.0, y: 0.0), size: CGSize(width: menuButtonWidth - 19.0, height: menuButtonFrame.height)))
|
transition.updateFrame(node: self.menuButtonClippingNode, frame: CGRect(origin: CGPoint(x: 19.0, y: 0.0), size: CGSize(width: menuButtonWidth - 19.0, height: menuButtonFrame.height)))
|
||||||
transition.updateFrame(node: self.menuButtonTextNode, frame: CGRect(origin: CGPoint(x: 16.0, y: 7.0 - UIScreenPixel), size: menuTextSize))
|
var buttonTitlteTransition = transition
|
||||||
|
if buttonTitleUpdated {
|
||||||
|
buttonTitlteTransition = .immediate
|
||||||
|
}
|
||||||
|
buttonTitlteTransition.updateFrame(node: self.menuButtonTextNode, frame: CGRect(origin: CGPoint(x: 16.0, y: 7.0 - UIScreenPixel), size: menuTextSize))
|
||||||
transition.updateAlpha(node: self.menuButtonTextNode, alpha: menuButtonExpanded ? 1.0 : 0.0)
|
transition.updateAlpha(node: self.menuButtonTextNode, alpha: menuButtonExpanded ? 1.0 : 0.0)
|
||||||
transition.updateFrame(node: self.menuButtonIconNode, frame: CGRect(x: isSendAsButton ? 1.0 + UIScreenPixel : (4.0 + UIScreenPixel), y: 1.0 + UIScreenPixel, width: 30.0, height: 30.0))
|
transition.updateFrame(node: self.menuButtonIconNode, frame: CGRect(x: isSendAsButton ? 1.0 + UIScreenPixel : (4.0 + UIScreenPixel), y: 1.0 + UIScreenPixel, width: 30.0, height: 30.0))
|
||||||
|
|
||||||
|
@ -316,6 +316,10 @@ public final class WebAppController: ViewController, AttachmentContainable {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Queue.mainQueue().after(1.0, {
|
||||||
|
webView.handleTap()
|
||||||
|
})
|
||||||
|
|
||||||
if let (layout, navigationBarHeight) = self.validLayout {
|
if let (layout, navigationBarHeight) = self.validLayout {
|
||||||
self.containerLayoutUpdated(layout, navigationBarHeight: navigationBarHeight, transition: .immediate)
|
self.containerLayoutUpdated(layout, navigationBarHeight: navigationBarHeight, transition: .immediate)
|
||||||
}
|
}
|
||||||
|
@ -130,7 +130,7 @@ final class WebAppWebView: WKWebView {
|
|||||||
self.sendEvent(name: "viewport_changed", data: "{height:\(frame.height)}")
|
self.sendEvent(name: "viewport_changed", data: "{height:\(frame.height)}")
|
||||||
}
|
}
|
||||||
|
|
||||||
private(set) var didTouchOnce = true
|
private(set) var didTouchOnce = false
|
||||||
@objc func handleTap() {
|
@objc func handleTap() {
|
||||||
self.didTouchOnce = true
|
self.didTouchOnce = true
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user