Refactoring [skip ci]

This commit is contained in:
Ali 2023-10-15 00:20:10 +04:00
parent b995c69020
commit 76719a7c95
4 changed files with 53 additions and 21 deletions

View File

@ -382,6 +382,7 @@ swift_library(
"//submodules/TelegramUI/Components/Chat/ChatMessageReactionsFooterContentNode", "//submodules/TelegramUI/Components/Chat/ChatMessageReactionsFooterContentNode",
"//submodules/TelegramUI/Components/Chat/ChatSwipeToReplyRecognizer", "//submodules/TelegramUI/Components/Chat/ChatSwipeToReplyRecognizer",
"//submodules/TelegramUI/Components/Chat/ChatMessageInstantVideoItemNode", "//submodules/TelegramUI/Components/Chat/ChatMessageInstantVideoItemNode",
"//submodules/TelegramUI/Components/Chat/ChatMessageInstantVideoBubbleContentNode",
] + select({ ] + select({
"@build_bazel_rules_apple//apple:ios_arm64": appcenter_targets, "@build_bazel_rules_apple//apple:ios_arm64": appcenter_targets,
"//build-system:ios_sim_arm64": [], "//build-system:ios_sim_arm64": [],

View File

@ -0,0 +1,30 @@
load("@build_bazel_rules_swift//swift:swift.bzl", "swift_library")
swift_library(
name = "ChatMessageInstantVideoBubbleContentNode",
module_name = "ChatMessageInstantVideoBubbleContentNode",
srcs = glob([
"Sources/**/*.swift",
]),
copts = [
"-warnings-as-errors",
],
deps = [
"//submodules/AsyncDisplayKit",
"//submodules/Display",
"//submodules/SSignalKit/SwiftSignalKit",
"//submodules/Postbox",
"//submodules/TelegramCore",
"//submodules/TelegramUIPreferences",
"//submodules/ComponentFlow",
"//submodules/TelegramUI/Components/AudioTranscriptionButtonComponent",
"//submodules/TelegramUI/Components/Chat/ChatMessageDateAndStatusNode",
"//submodules/TelegramUI/Components/Chat/ChatMessageBubbleContentNode",
"//submodules/TelegramUI/Components/Chat/ChatMessageItemCommon",
"//submodules/TelegramUI/Components/Chat/ChatMessageInteractiveInstantVideoNode",
"//submodules/TelegramUI/Components/Chat/ChatMessageInteractiveFileNode",
],
visibility = [
"//visibility:public",
],
)

View File

@ -28,9 +28,9 @@ extension ChatMessageInteractiveInstantVideoNode.AnimateFileNodeDescription {
} }
} }
class ChatMessageInstantVideoBubbleContentNode: ChatMessageBubbleContentNode { public class ChatMessageInstantVideoBubbleContentNode: ChatMessageBubbleContentNode {
let interactiveFileNode: ChatMessageInteractiveFileNode public let interactiveFileNode: ChatMessageInteractiveFileNode
let interactiveVideoNode: ChatMessageInteractiveInstantVideoNode public let interactiveVideoNode: ChatMessageInteractiveInstantVideoNode
private let maskLayer = SimpleLayer() private let maskLayer = SimpleLayer()
private let maskForeground = SimpleLayer() private let maskForeground = SimpleLayer()
@ -42,7 +42,7 @@ class ChatMessageInstantVideoBubbleContentNode: ChatMessageBubbleContentNode {
private var audioTranscriptionState: AudioTranscriptionButtonComponent.TranscriptionState = .collapsed private var audioTranscriptionState: AudioTranscriptionButtonComponent.TranscriptionState = .collapsed
var hasExpandedAudioTranscription: Bool { public var hasExpandedAudioTranscription: Bool {
if case .expanded = self.audioTranscriptionState { if case .expanded = self.audioTranscriptionState {
return true return true
} else { } else {
@ -50,7 +50,7 @@ class ChatMessageInstantVideoBubbleContentNode: ChatMessageBubbleContentNode {
} }
} }
override var visibility: ListViewItemNodeVisibility { override public var visibility: ListViewItemNodeVisibility {
didSet { didSet {
var wasVisible = false var wasVisible = false
if case .visible = oldValue { if case .visible = oldValue {
@ -79,7 +79,7 @@ class ChatMessageInstantVideoBubbleContentNode: ChatMessageBubbleContentNode {
return isVisible return isVisible
} }
required init() { required public init() {
self.interactiveFileNode = ChatMessageInteractiveFileNode() self.interactiveFileNode = ChatMessageInteractiveFileNode()
self.interactiveVideoNode = ChatMessageInteractiveInstantVideoNode() self.interactiveVideoNode = ChatMessageInteractiveInstantVideoNode()
@ -164,18 +164,18 @@ class ChatMessageInstantVideoBubbleContentNode: ChatMessageBubbleContentNode {
} }
} }
override func accessibilityActivate() -> Bool { override public func accessibilityActivate() -> Bool {
if let item = self.item { if let item = self.item {
let _ = item.controllerInteraction.openMessage(item.message, .default) let _ = item.controllerInteraction.openMessage(item.message, .default)
} }
return true return true
} }
required init?(coder aDecoder: NSCoder) { required public init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented") fatalError("init(coder:) has not been implemented")
} }
override func asyncLayoutContent() -> (_ item: ChatMessageBubbleContentItem, _ layoutConstants: ChatMessageItemLayoutConstants, _ preparePosition: ChatMessageBubblePreparePosition, _ messageSelection: Bool?, _ constrainedSize: CGSize, _ avatarInset: CGFloat) -> (ChatMessageBubbleContentProperties, CGSize?, CGFloat, (CGSize, ChatMessageBubbleContentPosition) -> (CGFloat, (CGFloat) -> (CGSize, (ListViewItemUpdateAnimation, Bool, ListViewItemApply?) -> Void))) { override public func asyncLayoutContent() -> (_ item: ChatMessageBubbleContentItem, _ layoutConstants: ChatMessageItemLayoutConstants, _ preparePosition: ChatMessageBubblePreparePosition, _ messageSelection: Bool?, _ constrainedSize: CGSize, _ avatarInset: CGFloat) -> (ChatMessageBubbleContentProperties, CGSize?, CGFloat, (CGSize, ChatMessageBubbleContentPosition) -> (CGFloat, (CGFloat) -> (CGSize, (ListViewItemUpdateAnimation, Bool, ListViewItemApply?) -> Void))) {
let interactiveVideoLayout = self.interactiveVideoNode.asyncLayout() let interactiveVideoLayout = self.interactiveVideoNode.asyncLayout()
let interactiveFileLayout = self.interactiveFileNode.asyncLayout() let interactiveFileLayout = self.interactiveFileNode.asyncLayout()
@ -383,35 +383,35 @@ class ChatMessageInstantVideoBubbleContentNode: ChatMessageBubbleContentNode {
} }
} }
override func transitionNode(messageId: MessageId, media: Media, adjustRect: Bool) -> (ASDisplayNode, CGRect, () -> (UIView?, UIView?))? { override public func transitionNode(messageId: MessageId, media: Media, adjustRect: Bool) -> (ASDisplayNode, CGRect, () -> (UIView?, UIView?))? {
return nil return nil
} }
override func updateHiddenMedia(_ media: [Media]?) -> Bool { override public func updateHiddenMedia(_ media: [Media]?) -> Bool {
return false return false
} }
override func animateInsertion(_ currentTimestamp: Double, duration: Double) { override public func animateInsertion(_ currentTimestamp: Double, duration: Double) {
self.interactiveVideoNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2) self.interactiveVideoNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2)
} }
override func animateAdded(_ currentTimestamp: Double, duration: Double) { override public func animateAdded(_ currentTimestamp: Double, duration: Double) {
self.interactiveVideoNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2) self.interactiveVideoNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2)
} }
override func animateRemoved(_ currentTimestamp: Double, duration: Double) { override public func animateRemoved(_ currentTimestamp: Double, duration: Double) {
self.interactiveVideoNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2, removeOnCompletion: false) self.interactiveVideoNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2, removeOnCompletion: false)
} }
override func willUpdateIsExtractedToContextPreview(_ value: Bool) { override public func willUpdateIsExtractedToContextPreview(_ value: Bool) {
self.interactiveFileNode.willUpdateIsExtractedToContextPreview(value) self.interactiveFileNode.willUpdateIsExtractedToContextPreview(value)
} }
override func updateIsExtractedToContextPreview(_ value: Bool) { override public func updateIsExtractedToContextPreview(_ value: Bool) {
self.interactiveFileNode.updateIsExtractedToContextPreview(value) self.interactiveFileNode.updateIsExtractedToContextPreview(value)
} }
override func tapActionAtPoint(_ point: CGPoint, gesture: TapLongTapOrDoubleTapGesture, isEstimating: Bool) -> ChatMessageBubbleContentTapAction { override public func tapActionAtPoint(_ point: CGPoint, gesture: TapLongTapOrDoubleTapGesture, isEstimating: Bool) -> ChatMessageBubbleContentTapAction {
if !self.interactiveFileNode.isHidden { if !self.interactiveFileNode.isHidden {
if self.interactiveFileNode.dateAndStatusNode.supernode != nil, let _ = self.interactiveFileNode.dateAndStatusNode.hitTest(self.view.convert(point, to: self.interactiveFileNode.dateAndStatusNode.view), with: nil) { if self.interactiveFileNode.dateAndStatusNode.supernode != nil, let _ = self.interactiveFileNode.dateAndStatusNode.hitTest(self.view.convert(point, to: self.interactiveFileNode.dateAndStatusNode.view), with: nil) {
return .ignore return .ignore
@ -431,7 +431,7 @@ class ChatMessageInstantVideoBubbleContentNode: ChatMessageBubbleContentNode {
return super.tapActionAtPoint(point, gesture: gesture, isEstimating: isEstimating) return super.tapActionAtPoint(point, gesture: gesture, isEstimating: isEstimating)
} }
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? { override public func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
if self.isExpanded, let result = self.interactiveFileNode.hitTest(self.view.convert(point, to: self.interactiveFileNode.view), with: event) { if self.isExpanded, let result = self.interactiveFileNode.hitTest(self.view.convert(point, to: self.interactiveFileNode.view), with: event) {
return result return result
} }
@ -441,18 +441,18 @@ class ChatMessageInstantVideoBubbleContentNode: ChatMessageBubbleContentNode {
return super.hitTest(point, with: event) return super.hitTest(point, with: event)
} }
override func reactionTargetView(value: MessageReaction.Reaction) -> UIView? { override public func reactionTargetView(value: MessageReaction.Reaction) -> UIView? {
if !self.interactiveVideoNode.dateAndStatusNode.isHidden { if !self.interactiveVideoNode.dateAndStatusNode.isHidden {
return self.interactiveVideoNode.dateAndStatusNode.reactionView(value: value) return self.interactiveVideoNode.dateAndStatusNode.reactionView(value: value)
} }
return nil return nil
} }
override func targetForStoryTransition(id: StoryId) -> UIView? { override public func targetForStoryTransition(id: StoryId) -> UIView? {
return self.interactiveVideoNode.targetForStoryTransition(id: id) return self.interactiveVideoNode.targetForStoryTransition(id: id)
} }
override var disablesClipping: Bool { override public var disablesClipping: Bool {
return true return true
} }
} }

View File

@ -51,6 +51,7 @@ import ChatMessageThreadInfoNode
import ChatMessageActionButtonsNode import ChatMessageActionButtonsNode
import ChatSwipeToReplyRecognizer import ChatSwipeToReplyRecognizer
import ChatMessageReactionsFooterContentNode import ChatMessageReactionsFooterContentNode
import ChatMessageInstantVideoBubbleContentNode
private struct BubbleItemAttributes { private struct BubbleItemAttributes {
var isAttachment: Bool var isAttachment: Bool