mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-22 22:25:57 +00:00
Reactions update [skip ci]
This commit is contained in:
@@ -8,10 +8,8 @@ final class ChatHistoryNavigationButtons: ASDisplayNode {
|
||||
private var theme: PresentationTheme
|
||||
private var dateTimeFormat: PresentationDateTimeFormat
|
||||
|
||||
private let reactionsButton: ChatHistoryNavigationButtonNode
|
||||
private let reactionsButtonTapNode: ASDisplayNode
|
||||
private let mentionsButton: ChatHistoryNavigationButtonNode
|
||||
private let mentionsButtonTapNode: ASDisplayNode
|
||||
let reactionsButton: ChatHistoryNavigationButtonNode
|
||||
let mentionsButton: ChatHistoryNavigationButtonNode
|
||||
private let downButton: ChatHistoryNavigationButtonNode
|
||||
|
||||
var downPressed: (() -> Void)? {
|
||||
@@ -21,9 +19,7 @@ final class ChatHistoryNavigationButtons: ASDisplayNode {
|
||||
}
|
||||
|
||||
var reactionsPressed: (() -> Void)?
|
||||
var reactionsMenu: (() -> Void)?
|
||||
var mentionsPressed: (() -> Void)?
|
||||
var mentionsMenu: (() -> Void)?
|
||||
|
||||
var displayDownButton: Bool = false {
|
||||
didSet {
|
||||
@@ -78,12 +74,10 @@ final class ChatHistoryNavigationButtons: ASDisplayNode {
|
||||
self.mentionsButton = ChatHistoryNavigationButtonNode(theme: theme, type: .mentions)
|
||||
self.mentionsButton.alpha = 0.0
|
||||
self.mentionsButton.isHidden = true
|
||||
self.mentionsButtonTapNode = ASDisplayNode()
|
||||
|
||||
self.reactionsButton = ChatHistoryNavigationButtonNode(theme: theme, type: .reactions)
|
||||
self.reactionsButton.alpha = 0.0
|
||||
self.reactionsButton.isHidden = true
|
||||
self.reactionsButtonTapNode = ASDisplayNode()
|
||||
|
||||
self.downButton = ChatHistoryNavigationButtonNode(theme: theme, type: .down)
|
||||
self.downButton.alpha = 0.0
|
||||
@@ -91,29 +85,23 @@ final class ChatHistoryNavigationButtons: ASDisplayNode {
|
||||
|
||||
super.init()
|
||||
|
||||
self.mentionsButton.isUserInteractionEnabled = false
|
||||
|
||||
self.addSubnode(self.reactionsButton)
|
||||
self.addSubnode(self.reactionsButtonTapNode)
|
||||
self.addSubnode(self.mentionsButton)
|
||||
self.addSubnode(self.mentionsButtonTapNode)
|
||||
self.addSubnode(self.downButton)
|
||||
|
||||
self.reactionsButton.tapped = { [weak self] in
|
||||
self?.reactionsPressed?()
|
||||
}
|
||||
|
||||
self.mentionsButton.tapped = { [weak self] in
|
||||
self?.mentionsPressed?()
|
||||
}
|
||||
|
||||
self.downButton.isGestureEnabled = false
|
||||
}
|
||||
|
||||
override func didLoad() {
|
||||
super.didLoad()
|
||||
|
||||
let reactionsTapRecognizer = TapLongTapOrDoubleTapGestureRecognizer(target: self, action: #selector(self.reactionsTap(_:)))
|
||||
reactionsTapRecognizer.tapActionAtPoint = { _ in
|
||||
return .waitForSingleTap
|
||||
}
|
||||
self.reactionsButtonTapNode.view.addGestureRecognizer(reactionsTapRecognizer)
|
||||
|
||||
let mentionsTapRecognizer = TapLongTapOrDoubleTapGestureRecognizer(target: self, action: #selector(self.mentionsTap(_:)))
|
||||
mentionsTapRecognizer.tapActionAtPoint = { _ in
|
||||
return .waitForSingleTap
|
||||
}
|
||||
self.mentionsButtonTapNode.view.addGestureRecognizer(mentionsTapRecognizer)
|
||||
}
|
||||
|
||||
func update(theme: PresentationTheme, dateTimeFormat: PresentationDateTimeFormat) {
|
||||
@@ -121,6 +109,7 @@ final class ChatHistoryNavigationButtons: ASDisplayNode {
|
||||
self.theme = theme
|
||||
self.dateTimeFormat = dateTimeFormat
|
||||
|
||||
self.reactionsButton.updateTheme(theme: theme)
|
||||
self.mentionsButton.updateTheme(theme: theme)
|
||||
self.downButton.updateTheme(theme: theme)
|
||||
}
|
||||
@@ -154,7 +143,6 @@ final class ChatHistoryNavigationButtons: ASDisplayNode {
|
||||
self.mentionsButton.isHidden = false
|
||||
transition.updateAlpha(node: self.mentionsButton, alpha: 1.0)
|
||||
transition.updateTransformScale(node: self.mentionsButton, scale: 1.0)
|
||||
self.mentionsButtonTapNode.isHidden = false
|
||||
} else {
|
||||
transition.updateAlpha(node: self.mentionsButton, alpha: 0.0, completion: { [weak self] completed in
|
||||
guard let strongSelf = self, completed else {
|
||||
@@ -163,14 +151,12 @@ final class ChatHistoryNavigationButtons: ASDisplayNode {
|
||||
strongSelf.mentionsButton.isHidden = true
|
||||
})
|
||||
transition.updateTransformScale(node: self.mentionsButton, scale: 0.2)
|
||||
self.mentionsButtonTapNode.isHidden = true
|
||||
}
|
||||
|
||||
if self.reactionsCount != 0 {
|
||||
self.reactionsButton.isHidden = false
|
||||
transition.updateAlpha(node: self.reactionsButton, alpha: 1.0)
|
||||
transition.updateTransformScale(node: self.reactionsButton, scale: 1.0)
|
||||
self.reactionsButtonTapNode.isHidden = false
|
||||
} else {
|
||||
transition.updateAlpha(node: self.reactionsButton, alpha: 0.0, completion: { [weak self] completed in
|
||||
guard let strongSelf = self, completed else {
|
||||
@@ -179,16 +165,13 @@ final class ChatHistoryNavigationButtons: ASDisplayNode {
|
||||
strongSelf.reactionsButton.isHidden = true
|
||||
})
|
||||
transition.updateTransformScale(node: self.reactionsButton, scale: 0.2)
|
||||
self.reactionsButtonTapNode.isHidden = true
|
||||
}
|
||||
|
||||
transition.updatePosition(node: self.downButton, position: CGRect(origin: CGPoint(x: 0.0, y: completeSize.height - buttonSize.height), size: buttonSize).center)
|
||||
|
||||
transition.updatePosition(node: self.mentionsButton, position: CGRect(origin: CGPoint(x: 0.0, y: completeSize.height - buttonSize.height - mentionsOffset), size: buttonSize).center)
|
||||
self.mentionsButtonTapNode.frame = CGRect(origin: CGPoint(x: 0.0, y: completeSize.height - buttonSize.height - mentionsOffset), size: buttonSize)
|
||||
|
||||
transition.updatePosition(node: self.reactionsButton, position: CGRect(origin: CGPoint(x: 0.0, y: completeSize.height - buttonSize.height - mentionsOffset - reactionsOffset), size: buttonSize).center)
|
||||
self.reactionsButtonTapNode.frame = CGRect(origin: CGPoint(x: 0.0, y: completeSize.height - buttonSize.height - mentionsOffset), size: buttonSize)
|
||||
|
||||
return completeSize
|
||||
}
|
||||
@@ -206,26 +189,6 @@ final class ChatHistoryNavigationButtons: ASDisplayNode {
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@objc private func reactionsTap(_ recognizer: TapLongTapOrDoubleTapGestureRecognizer) {
|
||||
if case .ended = recognizer.state, let gesture = recognizer.lastRecognizedGestureAndLocation?.0 {
|
||||
if case .tap = gesture {
|
||||
self.reactionsPressed?()
|
||||
} else if case .longTap = gesture {
|
||||
self.reactionsMenu?()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@objc private func mentionsTap(_ recognizer: TapLongTapOrDoubleTapGestureRecognizer) {
|
||||
if case .ended = recognizer.state, let gesture = recognizer.lastRecognizedGestureAndLocation?.0 {
|
||||
if case .tap = gesture {
|
||||
self.mentionsPressed?()
|
||||
} else if case .longTap = gesture {
|
||||
self.mentionsMenu?()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final class SnapshotState {
|
||||
fileprivate let downButtonSnapshotView: UIView?
|
||||
|
||||
Reference in New Issue
Block a user