mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-10-09 03:20:48 +00:00
Merge branch 'master' of gitlab.com:peter-iakovlev/telegram-ios
This commit is contained in:
commit
0d86f40d60
@ -29,15 +29,19 @@ public final class ReactionListContextMenuContent: ContextControllerItemsContent
|
||||
|
||||
init() {
|
||||
self.highlightBackgroundNode = ASDisplayNode()
|
||||
self.highlightBackgroundNode.isAccessibilityElement = false
|
||||
self.highlightBackgroundNode.alpha = 0.0
|
||||
|
||||
self.titleLabelNode = ImmediateTextNode()
|
||||
self.titleLabelNode.isAccessibilityElement = false
|
||||
self.titleLabelNode.maximumNumberOfLines = 1
|
||||
self.titleLabelNode.isUserInteractionEnabled = false
|
||||
|
||||
self.iconNode = ASImageNode()
|
||||
self.iconNode.isAccessibilityElement = false
|
||||
|
||||
self.separatorNode = ASDisplayNode()
|
||||
self.separatorNode.isAccessibilityElement = false
|
||||
|
||||
super.init()
|
||||
|
||||
@ -46,6 +50,8 @@ public final class ReactionListContextMenuContent: ContextControllerItemsContent
|
||||
self.addSubnode(self.titleLabelNode)
|
||||
self.addSubnode(self.iconNode)
|
||||
|
||||
self.isAccessibilityElement = true
|
||||
|
||||
self.highligthedChanged = { [weak self] highlighted in
|
||||
guard let strongSelf = self else {
|
||||
return
|
||||
@ -74,6 +80,8 @@ public final class ReactionListContextMenuContent: ContextControllerItemsContent
|
||||
if self.theme !== presentationData.theme {
|
||||
self.theme = presentationData.theme
|
||||
self.iconNode.image = generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/Back"), color: presentationData.theme.contextMenu.primaryColor)
|
||||
|
||||
self.accessibilityLabel = presentationData.strings.Common_Back
|
||||
}
|
||||
|
||||
self.highlightBackgroundNode.backgroundColor = presentationData.theme.contextMenu.itemHighlightedBackgroundColor
|
||||
@ -286,23 +294,32 @@ public final class ReactionListContextMenuContent: ContextControllerItemsContent
|
||||
var reactionIconNode: ReactionImageNode?
|
||||
let action: () -> Void
|
||||
|
||||
private var item: EngineMessageReactionListContext.Item?
|
||||
|
||||
init(context: AccountContext, availableReactions: AvailableReactions?, action: @escaping () -> Void) {
|
||||
self.action = action
|
||||
self.context = context
|
||||
self.availableReactions = availableReactions
|
||||
|
||||
self.avatarNode = AvatarNode(font: avatarFont)
|
||||
self.avatarNode.isAccessibilityElement = false
|
||||
|
||||
self.highlightBackgroundNode = ASDisplayNode()
|
||||
self.highlightBackgroundNode.isAccessibilityElement = false
|
||||
self.highlightBackgroundNode.alpha = 0.0
|
||||
|
||||
self.titleLabelNode = ImmediateTextNode()
|
||||
self.titleLabelNode.isAccessibilityElement = false
|
||||
self.titleLabelNode.maximumNumberOfLines = 1
|
||||
self.titleLabelNode.isUserInteractionEnabled = false
|
||||
|
||||
self.separatorNode = ASDisplayNode()
|
||||
self.separatorNode.isAccessibilityElement = false
|
||||
|
||||
super.init()
|
||||
|
||||
self.isAccessibilityElement = true
|
||||
|
||||
self.addSubnode(self.separatorNode)
|
||||
self.addSubnode(self.highlightBackgroundNode)
|
||||
self.addSubnode(self.avatarNode)
|
||||
@ -345,6 +362,12 @@ public final class ReactionListContextMenuContent: ContextControllerItemsContent
|
||||
reactionIconNode.removeFromSupernode()
|
||||
}
|
||||
|
||||
if self.item != item {
|
||||
self.item = item
|
||||
|
||||
self.accessibilityLabel = "\(item.peer.debugDisplayTitle) \(item.reaction ?? "")"
|
||||
}
|
||||
|
||||
self.highlightBackgroundNode.backgroundColor = presentationData.theme.contextMenu.itemHighlightedBackgroundColor
|
||||
self.separatorNode.backgroundColor = presentationData.theme.contextMenu.itemSeparatorColor
|
||||
|
||||
|
@ -1911,7 +1911,7 @@ private final class ContextControllerNode: ViewControllerTracingNode, UIScrollVi
|
||||
}
|
||||
|
||||
transition.updateFrame(node: self.dismissNode, frame: CGRect(origin: CGPoint(), size: self.scrollNode.view.contentSize))
|
||||
self.dismissAccessibilityArea.frame = CGRect(origin: CGPoint(), size: self.scrollNode.view.contentSize)
|
||||
self.dismissAccessibilityArea.frame = CGRect(origin: CGPoint(), size: self.scrollNode.view.contentSize)
|
||||
}
|
||||
|
||||
func scrollViewDidScroll(_ scrollView: UIScrollView) {
|
||||
@ -2370,6 +2370,11 @@ public final class ContextController: ViewController, StandalonePresentableContr
|
||||
self.dismiss(result: .default, completion: completion)
|
||||
}
|
||||
|
||||
public func dismissNow() {
|
||||
self.presentingViewController?.dismiss(animated: false, completion: nil)
|
||||
self.dismissed?()
|
||||
}
|
||||
|
||||
public func dismissWithReaction(value: String, targetView: UIView, hideNode: Bool, completion: (() -> Void)?) {
|
||||
if !self.wasDismissed {
|
||||
self.wasDismissed = true
|
||||
|
@ -65,22 +65,29 @@ private final class ContextControllerActionsListActionItemNode: HighlightTrackin
|
||||
self.item = item
|
||||
|
||||
self.highlightBackgroundNode = ASDisplayNode()
|
||||
self.highlightBackgroundNode.isAccessibilityElement = false
|
||||
self.highlightBackgroundNode.isUserInteractionEnabled = false
|
||||
self.highlightBackgroundNode.alpha = 0.0
|
||||
|
||||
self.titleLabelNode = ImmediateTextNode()
|
||||
self.titleLabelNode.isAccessibilityElement = false
|
||||
self.titleLabelNode.displaysAsynchronously = false
|
||||
self.titleLabelNode.isUserInteractionEnabled = false
|
||||
|
||||
self.subtitleNode = ImmediateTextNode()
|
||||
self.subtitleNode.isAccessibilityElement = false
|
||||
self.subtitleNode.displaysAsynchronously = false
|
||||
self.subtitleNode.isUserInteractionEnabled = false
|
||||
|
||||
self.iconNode = ASImageNode()
|
||||
self.iconNode.isAccessibilityElement = false
|
||||
self.iconNode.isUserInteractionEnabled = false
|
||||
|
||||
super.init()
|
||||
|
||||
self.isAccessibilityElement = true
|
||||
self.accessibilityLabel = item.text
|
||||
|
||||
self.addSubnode(self.highlightBackgroundNode)
|
||||
self.addSubnode(self.titleLabelNode)
|
||||
self.addSubnode(self.subtitleNode)
|
||||
|
@ -63,6 +63,7 @@ final class ContextControllerExtractedPresentationNode: ASDisplayNode, ContextCo
|
||||
|
||||
private let backgroundNode: NavigationBackgroundNode
|
||||
private let dismissTapNode: ASDisplayNode
|
||||
private let dismissAccessibilityArea: AccessibilityAreaNode
|
||||
private let clippingNode: ASDisplayNode
|
||||
private let scrollNode: ASScrollNode
|
||||
|
||||
@ -75,6 +76,8 @@ final class ContextControllerExtractedPresentationNode: ASDisplayNode, ContextCo
|
||||
|
||||
private var animatingOutState: AnimatingOutState?
|
||||
|
||||
private var strings: PresentationStrings?
|
||||
|
||||
init(
|
||||
getController: @escaping () -> ContextControllerProtocol?,
|
||||
requestUpdate: @escaping (ContainedViewLayoutTransition) -> Void,
|
||||
@ -91,6 +94,10 @@ final class ContextControllerExtractedPresentationNode: ASDisplayNode, ContextCo
|
||||
self.backgroundNode = NavigationBackgroundNode(color: .clear, enableBlur: false)
|
||||
|
||||
self.dismissTapNode = ASDisplayNode()
|
||||
|
||||
self.dismissAccessibilityArea = AccessibilityAreaNode()
|
||||
self.dismissAccessibilityArea.accessibilityTraits = .button
|
||||
|
||||
self.clippingNode = ASDisplayNode()
|
||||
self.clippingNode.clipsToBounds = true
|
||||
|
||||
@ -120,6 +127,7 @@ final class ContextControllerExtractedPresentationNode: ASDisplayNode, ContextCo
|
||||
self.addSubnode(self.clippingNode)
|
||||
self.clippingNode.addSubnode(self.scrollNode)
|
||||
self.scrollNode.addSubnode(self.dismissTapNode)
|
||||
self.scrollNode.addSubnode(self.dismissAccessibilityArea)
|
||||
self.scrollNode.addSubnode(self.actionsStackNode)
|
||||
|
||||
/*#if DEBUG
|
||||
@ -129,6 +137,12 @@ final class ContextControllerExtractedPresentationNode: ASDisplayNode, ContextCo
|
||||
self.scrollNode.view.delegate = self
|
||||
|
||||
self.dismissTapNode.view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.dismissTapGesture(_:))))
|
||||
|
||||
self.dismissAccessibilityArea.activate = { [weak self] in
|
||||
self?.requestDismiss(.default)
|
||||
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
@objc func dismissTapGesture(_ recognizer: UITapGestureRecognizer) {
|
||||
@ -224,6 +238,12 @@ final class ContextControllerExtractedPresentationNode: ASDisplayNode, ContextCo
|
||||
let contentNode: ContentNode
|
||||
var contentTransition = transition
|
||||
|
||||
if self.strings !== presentationData.strings {
|
||||
self.strings = presentationData.strings
|
||||
|
||||
self.dismissAccessibilityArea.accessibilityLabel = presentationData.strings.VoiceOver_DismissContextMenu
|
||||
}
|
||||
|
||||
self.backgroundNode.updateColor(
|
||||
color: presentationData.theme.contextMenu.dimColor,
|
||||
enableBlur: true,
|
||||
@ -413,6 +433,7 @@ final class ContextControllerExtractedPresentationNode: ASDisplayNode, ContextCo
|
||||
}
|
||||
|
||||
self.dismissTapNode.frame = CGRect(origin: CGPoint(), size: CGSize(width: contentSize.width, height: max(contentSize.height, layout.size.height)))
|
||||
self.dismissAccessibilityArea.frame = CGRect(origin: CGPoint(), size: CGSize(width: contentSize.width, height: max(contentSize.height, layout.size.height)))
|
||||
}
|
||||
|
||||
switch stateTransition {
|
||||
|
@ -8648,6 +8648,8 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
||||
self.sendMessageActionsController?.dismiss()
|
||||
self.themeSceen?.dismiss()
|
||||
|
||||
self.chatDisplayNode.messageTransitionNode.dismissMessageReactionContexts()
|
||||
|
||||
if let _ = self.peekData {
|
||||
self.peekTimerDisposable.set(nil)
|
||||
}
|
||||
|
@ -219,7 +219,7 @@ class ChatMessageContactBubbleContentNode: ChatMessageBubbleContentNode {
|
||||
impressionCount: viewCount,
|
||||
dateText: dateText,
|
||||
type: statusType,
|
||||
layoutInput: .trailingContent(contentWidth: 1000.0, reactionSettings: nil),
|
||||
layoutInput: .trailingContent(contentWidth: 1000.0, reactionSettings: shouldDisplayInlineDateReactions(message: item.message) ? ChatMessageDateAndStatusNode.TrailingReactionSettings(displayInline: true, preferAdditionalInset: false) : nil),
|
||||
constrainedSize: CGSize(width: constrainedSize.width - sideInsets, height: .greatestFiniteMagnitude),
|
||||
availableReactions: item.associatedData.availableReactions,
|
||||
reactions: dateReactionsAndPeers.reactions,
|
||||
|
@ -635,7 +635,8 @@ public final class ChatMessageTransitionNode: ASDisplayNode {
|
||||
func dismiss() {
|
||||
if let contextController = self.contextController {
|
||||
contextController.cancelReactionAnimation()
|
||||
contextController.view.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2, removeOnCompletion: false, completion: { _ in
|
||||
contextController.view.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2, removeOnCompletion: false, completion: { [weak contextController] _ in
|
||||
contextController?.dismissNow()
|
||||
})
|
||||
}
|
||||
if let standaloneReactionAnimation = self.standaloneReactionAnimation {
|
||||
|
Loading…
x
Reference in New Issue
Block a user