mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-23 22:55:00 +00:00
Refactoring
This commit is contained in:
@@ -369,6 +369,7 @@ swift_library(
|
|||||||
"//submodules/TelegramUI/Components/WallpaperPreviewMedia",
|
"//submodules/TelegramUI/Components/WallpaperPreviewMedia",
|
||||||
"//submodules/TelegramUI/Components/Chat/ChatMessageAttachedContentNode",
|
"//submodules/TelegramUI/Components/Chat/ChatMessageAttachedContentNode",
|
||||||
"//submodules/TelegramUI/Components/Chat/ChatMessageAttachedContentButtonNode",
|
"//submodules/TelegramUI/Components/Chat/ChatMessageAttachedContentButtonNode",
|
||||||
|
"//submodules/TelegramUI/Components/Chat/ChatMessageWebpageBubbleContentNode",
|
||||||
] + 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": [],
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
load("@build_bazel_rules_swift//swift:swift.bzl", "swift_library")
|
||||||
|
|
||||||
|
swift_library(
|
||||||
|
name = "ChatMessageWebpageBubbleContentNode",
|
||||||
|
module_name = "ChatMessageWebpageBubbleContentNode",
|
||||||
|
srcs = glob([
|
||||||
|
"Sources/**/*.swift",
|
||||||
|
]),
|
||||||
|
copts = [
|
||||||
|
"-warnings-as-errors",
|
||||||
|
],
|
||||||
|
deps = [
|
||||||
|
"//submodules/Postbox",
|
||||||
|
"//submodules/Display",
|
||||||
|
"//submodules/AsyncDisplayKit",
|
||||||
|
"//submodules/SSignalKit/SwiftSignalKit",
|
||||||
|
"//submodules/TelegramCore",
|
||||||
|
"//submodules/TelegramUIPreferences",
|
||||||
|
"//submodules/TextFormat",
|
||||||
|
"//submodules/AccountContext",
|
||||||
|
"//submodules/WebsiteType",
|
||||||
|
"//submodules/InstantPageUI",
|
||||||
|
"//submodules/UrlHandling",
|
||||||
|
"//submodules/GalleryData",
|
||||||
|
"//submodules/TelegramPresentationData",
|
||||||
|
"//submodules/TelegramUI/Components/Chat/ChatMessageBubbleContentNode",
|
||||||
|
"//submodules/TelegramUI/Components/Chat/ChatMessageItemCommon",
|
||||||
|
"//submodules/TelegramUI/Components/WallpaperPreviewMedia",
|
||||||
|
"//submodules/TelegramUI/Components/Chat/ChatMessageInteractiveMediaNode",
|
||||||
|
"//submodules/TelegramUI/Components/Chat/ChatMessageAttachedContentNode",
|
||||||
|
],
|
||||||
|
visibility = [
|
||||||
|
"//visibility:public",
|
||||||
|
],
|
||||||
|
)
|
||||||
@@ -21,18 +21,18 @@ import ChatMessageAttachedContentNode
|
|||||||
|
|
||||||
private let titleFont: UIFont = Font.semibold(15.0)
|
private let titleFont: UIFont = Font.semibold(15.0)
|
||||||
|
|
||||||
final class ChatMessageWebpageBubbleContentNode: ChatMessageBubbleContentNode {
|
public final class ChatMessageWebpageBubbleContentNode: ChatMessageBubbleContentNode {
|
||||||
private var webPage: TelegramMediaWebpage?
|
private var webPage: TelegramMediaWebpage?
|
||||||
|
|
||||||
private let contentNode: ChatMessageAttachedContentNode
|
private let contentNode: ChatMessageAttachedContentNode
|
||||||
|
|
||||||
override var visibility: ListViewItemNodeVisibility {
|
override public var visibility: ListViewItemNodeVisibility {
|
||||||
didSet {
|
didSet {
|
||||||
self.contentNode.visibility = self.visibility
|
self.contentNode.visibility = self.visibility
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
required init() {
|
required public init() {
|
||||||
self.contentNode = ChatMessageAttachedContentNode()
|
self.contentNode = ChatMessageAttachedContentNode()
|
||||||
|
|
||||||
super.init()
|
super.init()
|
||||||
@@ -97,11 +97,11 @@ final class ChatMessageWebpageBubbleContentNode: ChatMessageBubbleContentNode {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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 contentNodeLayout = self.contentNode.asyncLayout()
|
let contentNodeLayout = self.contentNode.asyncLayout()
|
||||||
|
|
||||||
return { item, layoutConstants, preparePosition, _, constrainedSize, _ in
|
return { item, layoutConstants, preparePosition, _, constrainedSize, _ in
|
||||||
@@ -420,27 +420,27 @@ final class ChatMessageWebpageBubbleContentNode: ChatMessageBubbleContentNode {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override func animateInsertion(_ currentTimestamp: Double, duration: Double) {
|
override public func animateInsertion(_ currentTimestamp: Double, duration: Double) {
|
||||||
self.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.25)
|
self.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.25)
|
||||||
}
|
}
|
||||||
|
|
||||||
override func animateAdded(_ currentTimestamp: Double, duration: Double) {
|
override public func animateAdded(_ currentTimestamp: Double, duration: Double) {
|
||||||
self.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.25)
|
self.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.25)
|
||||||
}
|
}
|
||||||
|
|
||||||
override func animateRemoved(_ currentTimestamp: Double, duration: Double) {
|
override public func animateRemoved(_ currentTimestamp: Double, duration: Double) {
|
||||||
self.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.25, removeOnCompletion: false)
|
self.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.25, removeOnCompletion: false)
|
||||||
}
|
}
|
||||||
|
|
||||||
override func animateInsertionIntoBubble(_ duration: Double) {
|
override public func animateInsertionIntoBubble(_ duration: Double) {
|
||||||
self.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.25)
|
self.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.25)
|
||||||
}
|
}
|
||||||
|
|
||||||
override func playMediaWithSound() -> ((Double?) -> Void, Bool, Bool, Bool, ASDisplayNode?)? {
|
override public func playMediaWithSound() -> ((Double?) -> Void, Bool, Bool, Bool, ASDisplayNode?)? {
|
||||||
return self.contentNode.playMediaWithSound()
|
return self.contentNode.playMediaWithSound()
|
||||||
}
|
}
|
||||||
|
|
||||||
override func tapActionAtPoint(_ point: CGPoint, gesture: TapLongTapOrDoubleTapGesture, isEstimating: Bool) -> ChatMessageBubbleContentTapAction {
|
override public func tapActionAtPoint(_ point: CGPoint, gesture: TapLongTapOrDoubleTapGesture, isEstimating: Bool) -> ChatMessageBubbleContentTapAction {
|
||||||
guard let item = self.item else {
|
guard let item = self.item else {
|
||||||
return .none
|
return .none
|
||||||
}
|
}
|
||||||
@@ -516,7 +516,7 @@ final class ChatMessageWebpageBubbleContentNode: ChatMessageBubbleContentNode {
|
|||||||
return .none
|
return .none
|
||||||
}
|
}
|
||||||
|
|
||||||
override func updateHiddenMedia(_ media: [Media]?) -> Bool {
|
override public func updateHiddenMedia(_ media: [Media]?) -> Bool {
|
||||||
if let media = media {
|
if let media = media {
|
||||||
var updatedMedia = media
|
var updatedMedia = media
|
||||||
if let current = self.webPage, case let .Loaded(content) = current.content {
|
if let current = self.webPage, case let .Loaded(content) = current.content {
|
||||||
@@ -548,7 +548,7 @@ final class ChatMessageWebpageBubbleContentNode: 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?))? {
|
||||||
if self.item?.message.id != messageId {
|
if self.item?.message.id != messageId {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@@ -576,12 +576,12 @@ final class ChatMessageWebpageBubbleContentNode: ChatMessageBubbleContentNode {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
override func updateTouchesAtPoint(_ point: CGPoint?) {
|
override public func updateTouchesAtPoint(_ point: CGPoint?) {
|
||||||
let contentNodeFrame = self.contentNode.frame
|
let contentNodeFrame = self.contentNode.frame
|
||||||
self.contentNode.updateTouchesAtPoint(point.flatMap { $0.offsetBy(dx: -contentNodeFrame.minX, dy: -contentNodeFrame.minY) })
|
self.contentNode.updateTouchesAtPoint(point.flatMap { $0.offsetBy(dx: -contentNodeFrame.minX, dy: -contentNodeFrame.minY) })
|
||||||
}
|
}
|
||||||
|
|
||||||
override func reactionTargetView(value: MessageReaction.Reaction) -> UIView? {
|
override public func reactionTargetView(value: MessageReaction.Reaction) -> UIView? {
|
||||||
return self.contentNode.reactionTargetView(value: value)
|
return self.contentNode.reactionTargetView(value: value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -39,6 +39,7 @@ import ChatMessageReplyInfoNode
|
|||||||
import ChatMessageCallBubbleContentNode
|
import ChatMessageCallBubbleContentNode
|
||||||
import ChatMessageInteractiveFileNode
|
import ChatMessageInteractiveFileNode
|
||||||
import ChatMessageFileBubbleContentNode
|
import ChatMessageFileBubbleContentNode
|
||||||
|
import ChatMessageWebpageBubbleContentNode
|
||||||
|
|
||||||
enum InternalBubbleTapAction {
|
enum InternalBubbleTapAction {
|
||||||
case action(() -> Void)
|
case action(() -> Void)
|
||||||
|
|||||||
Reference in New Issue
Block a user