diff --git a/TelegramUI.xcodeproj/xcuserdata/peter.xcuserdatad/xcschemes/xcschememanagement.plist b/TelegramUI.xcodeproj/xcuserdata/peter.xcuserdatad/xcschemes/xcschememanagement.plist
index 2545a615e8..4c544a1a8d 100644
--- a/TelegramUI.xcodeproj/xcuserdata/peter.xcuserdatad/xcschemes/xcschememanagement.plist
+++ b/TelegramUI.xcodeproj/xcuserdata/peter.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -7,7 +7,7 @@
TelegramUI.xcscheme
orderHint
- 3
+ 2
SuppressBuildableAutocreation
diff --git a/TelegramUI/ChatMessageAttachedContentNode.swift b/TelegramUI/ChatMessageAttachedContentNode.swift
index 2d3fab4be0..9787adb28d 100644
--- a/TelegramUI/ChatMessageAttachedContentNode.swift
+++ b/TelegramUI/ChatMessageAttachedContentNode.swift
@@ -328,7 +328,7 @@ final class ChatMessageAttachedContentNode: ASDisplayNode {
var inlineImageDimensions: CGSize?
var inlineImageSize: CGSize?
var updateInlineImageSignal: Signal<(TransformImageArguments) -> DrawingContext?, NoError>?
- var textCutout: TextNodeCutout?
+ var textCutout = TextNodeCutout()
var initialWidth: CGFloat = CGFloat.greatestFiniteMagnitude
var refineContentImageLayout: ((CGSize, ImageCorners) -> (CGFloat, (CGFloat) -> (CGSize, (ContainedViewLayoutTransition) -> ChatMessageInteractiveMediaNode)))?
var refineContentFileLayout: ((CGSize) -> (CGFloat, (CGFloat) -> (CGSize, () -> ChatMessageInteractiveFileNode)))?
@@ -435,7 +435,7 @@ final class ChatMessageAttachedContentNode: ASDisplayNode {
inlineImageSize = CGSize(width: 54.0, height: 54.0)
if let inlineImageSize = inlineImageSize {
- textCutout = TextNodeCutout(position: .TopRight, size: CGSize(width: inlineImageSize.width + 10.0, height: inlineImageSize.height + 10.0))
+ textCutout.topRight = CGSize(width: inlineImageSize.width + 10.0, height: inlineImageSize.height + 10.0)
}
}
@@ -508,7 +508,12 @@ final class ChatMessageAttachedContentNode: ASDisplayNode {
updatedAdditionalImageBadge = currentAdditionalImageBadgeNode ?? ChatMessageInteractiveMediaBadge()
}
- let (textLayout, textApply) = textAsyncLayout(TextNodeLayoutArguments(attributedString: textString, backgroundColor: nil, maximumNumberOfLines: 12, truncationType: .end, constrainedSize: textConstrainedSize, alignment: .natural, cutout: textCutout, insets: UIEdgeInsets()))
+ var upatedTextCutout = textCutout
+ if statusInText, let (statusSize, _) = statusSizeAndApply {
+ upatedTextCutout.bottomRight = statusSize
+ }
+
+ let (textLayout, textApply) = textAsyncLayout(TextNodeLayoutArguments(attributedString: textString, backgroundColor: nil, maximumNumberOfLines: 12, truncationType: .end, constrainedSize: textConstrainedSize, alignment: .natural, cutout: upatedTextCutout, insets: UIEdgeInsets()))
var textFrame = CGRect(origin: CGPoint(), size: textLayout.size)
diff --git a/TelegramUI/ChatMessageTextBubbleContentNode.swift b/TelegramUI/ChatMessageTextBubbleContentNode.swift
index 206108ac7a..a68e5670f7 100644
--- a/TelegramUI/ChatMessageTextBubbleContentNode.swift
+++ b/TelegramUI/ChatMessageTextBubbleContentNode.swift
@@ -168,7 +168,7 @@ class ChatMessageTextBubbleContentNode: ChatMessageBubbleContentNode {
var cutout: TextNodeCutout?
if let statusSize = statusSize {
- cutout = TextNodeCutout(position: .BottomRight, size: statusSize)
+ cutout = TextNodeCutout(bottomRight: statusSize)
}
let (textLayout, textApply) = textLayout(TextNodeLayoutArguments(attributedString: attributedText, backgroundColor: nil, maximumNumberOfLines: 0, truncationType: .end, constrainedSize: textConstrainedSize, alignment: .natural, cutout: cutout, insets: UIEdgeInsets()))
diff --git a/TelegramUI/ChatRequestInProgressTitlePanelNode.swift b/TelegramUI/ChatRequestInProgressTitlePanelNode.swift
index 374e9451ab..836d122ea9 100644
--- a/TelegramUI/ChatRequestInProgressTitlePanelNode.swift
+++ b/TelegramUI/ChatRequestInProgressTitlePanelNode.swift
@@ -4,7 +4,7 @@ import AsyncDisplayKit
final class ChatRequestInProgressTitlePanelNode: ChatTitleAccessoryPanelNode {
private let separatorNode: ASDisplayNode
- private let titleNode: ASTextNode
+ private let titleNode: ImmediateTextNode
private var theme: PresentationTheme?
private var strings: PresentationStrings?
@@ -13,7 +13,7 @@ final class ChatRequestInProgressTitlePanelNode: ChatTitleAccessoryPanelNode {
self.separatorNode = ASDisplayNode()
self.separatorNode.isLayerBacked = true
- self.titleNode = ASTextNode()
+ self.titleNode = ImmediateTextNode()
self.titleNode.maximumNumberOfLines = 1
super.init()
@@ -38,7 +38,7 @@ final class ChatRequestInProgressTitlePanelNode: ChatTitleAccessoryPanelNode {
let panelHeight: CGFloat = 40.0
- let titleSize = self.titleNode.measure(CGSize(width: width - leftInset - rightInset, height: 100.0))
+ let titleSize = self.titleNode.updateLayout(CGSize(width: width - leftInset - rightInset, height: 100.0))
transition.updateFrame(node: self.titleNode, frame: CGRect(origin: CGPoint(x: floor((width - titleSize.width) / 2.0), y: floor((panelHeight - titleSize.height) / 2.0)), size: titleSize))
transition.updateFrame(node: self.separatorNode, frame: CGRect(origin: CGPoint(x: 0.0, y: panelHeight - UIScreenPixel), size: CGSize(width: width, height: UIScreenPixel)))
diff --git a/TelegramUI/ChatTitleView.swift b/TelegramUI/ChatTitleView.swift
index 4790fd442b..6fbfb3f15e 100644
--- a/TelegramUI/ChatTitleView.swift
+++ b/TelegramUI/ChatTitleView.swift
@@ -14,7 +14,7 @@ enum ChatTitleContent {
private final class ChatTitleNetworkStatusNode: ASDisplayNode {
private var theme: PresentationTheme
- private let titleNode: ASTextNode
+ private let titleNode: ImmediateTextNode
private let activityIndicator: ActivityIndicator
var title: String = "" {
@@ -28,11 +28,10 @@ private final class ChatTitleNetworkStatusNode: ASDisplayNode {
init(theme: PresentationTheme) {
self.theme = theme
- self.titleNode = ASTextNode()
+ self.titleNode = ImmediateTextNode()
self.titleNode.isLayerBacked = true
self.titleNode.displaysAsynchronously = false
self.titleNode.maximumNumberOfLines = 1
- self.titleNode.truncationMode = .byTruncatingTail
self.titleNode.isOpaque = false
self.titleNode.isUserInteractionEnabled = false
@@ -57,7 +56,7 @@ private final class ChatTitleNetworkStatusNode: ASDisplayNode {
let indicatorSize = self.activityIndicator.bounds.size
let indicatorPadding = indicatorSize.width + 6.0
- let titleSize = self.titleNode.measure(CGSize(width: max(1.0, size.width - indicatorPadding), height: size.height))
+ let titleSize = self.titleNode.updateLayout(CGSize(width: max(1.0, size.width - indicatorPadding), height: size.height))
let combinedHeight = titleSize.height
let titleFrame = CGRect(origin: CGPoint(x: indicatorPadding + floor((size.width - titleSize.width - indicatorPadding) / 2.0), y: floor((size.height - combinedHeight) / 2.0)), size: titleSize)
@@ -81,11 +80,11 @@ final class ChatTitleView: UIView, NavigationBarTitleView {
private var dateTimeFormat: PresentationDateTimeFormat
private let contentContainer: ASDisplayNode
- private let titleNode: ASTextNode
+ private let titleNode: ImmediateTextNode
private let titleLeftIconNode: ASImageNode
private let titleRightIconNode: ASImageNode
- private let infoNode: ASTextNode
- private let typingNode: ASTextNode
+ private let infoNode: ImmediateTextNode
+ private let typingNode: ImmediateTextNode
private var typingIndicator: TGModernConversationTitleActivityIndicator?
private let button: HighlightTrackingButtonNode
@@ -412,10 +411,9 @@ final class ChatTitleView: UIView, NavigationBarTitleView {
self.contentContainer = ASDisplayNode()
- self.titleNode = ASTextNode()
+ self.titleNode = ImmediateTextNode()
self.titleNode.displaysAsynchronously = false
self.titleNode.maximumNumberOfLines = 1
- self.titleNode.truncationMode = .byTruncatingTail
self.titleNode.isOpaque = false
self.titleLeftIconNode = ASImageNode()
@@ -428,16 +426,14 @@ final class ChatTitleView: UIView, NavigationBarTitleView {
self.titleRightIconNode.displayWithoutProcessing = true
self.titleRightIconNode.displaysAsynchronously = false
- self.infoNode = ASTextNode()
+ self.infoNode = ImmediateTextNode()
self.infoNode.displaysAsynchronously = false
self.infoNode.maximumNumberOfLines = 1
- self.infoNode.truncationMode = .byTruncatingTail
self.infoNode.isOpaque = false
- self.typingNode = ASTextNode()
+ self.typingNode = ImmediateTextNode()
self.typingNode.displaysAsynchronously = false
self.typingNode.maximumNumberOfLines = 1
- self.typingNode.truncationMode = .byTruncatingTail
self.typingNode.isOpaque = false
self.button = HighlightTrackingButtonNode()
@@ -532,9 +528,9 @@ final class ChatTitleView: UIView, NavigationBarTitleView {
}
if size.height > 40.0 {
- let titleSize = self.titleNode.measure(CGSize(width: clearBounds.width - leftIconWidth - rightIconWidth, height: size.height))
- let infoSize = self.infoNode.measure(clearBounds.size)
- let typingSize = self.typingNode.measure(clearBounds.size)
+ let titleSize = self.titleNode.updateLayout(CGSize(width: clearBounds.width - leftIconWidth - rightIconWidth, height: size.height))
+ let infoSize = self.infoNode.updateLayout(clearBounds.size)
+ let typingSize = self.typingNode.updateLayout(clearBounds.size)
let titleInfoSpacing: CGFloat = 0.0
var titleFrame: CGRect
@@ -574,9 +570,9 @@ final class ChatTitleView: UIView, NavigationBarTitleView {
self.titleRightIconNode.frame = CGRect(origin: CGPoint(x: titleFrame.maxX + 3.0, y: titleFrame.minY + 7.0), size: image.size)
}
} else {
- let titleSize = self.titleNode.measure(CGSize(width: floor(clearBounds.width / 2.0 - leftIconWidth - rightIconWidth), height: size.height))
- let infoSize = self.infoNode.measure(CGSize(width: floor(clearBounds.width / 2.0), height: size.height))
- let typingSize = self.typingNode.measure(CGSize(width: floor(clearBounds.width / 2.0), height: size.height))
+ let titleSize = self.titleNode.updateLayout(CGSize(width: floor(clearBounds.width / 2.0 - leftIconWidth - rightIconWidth), height: size.height))
+ let infoSize = self.infoNode.updateLayout(CGSize(width: floor(clearBounds.width / 2.0), height: size.height))
+ let typingSize = self.typingNode.updateLayout(CGSize(width: floor(clearBounds.width / 2.0), height: size.height))
let titleInfoSpacing: CGFloat = 8.0
let combinedWidth = titleSize.width + leftIconWidth + rightIconWidth + infoSize.width + titleInfoSpacing
diff --git a/TelegramUI/EditAccessoryPanelNode.swift b/TelegramUI/EditAccessoryPanelNode.swift
index d8049af9e0..dce7f41ebc 100644
--- a/TelegramUI/EditAccessoryPanelNode.swift
+++ b/TelegramUI/EditAccessoryPanelNode.swift
@@ -10,8 +10,8 @@ final class EditAccessoryPanelNode: AccessoryPanelNode {
let closeButton: ASButtonNode
let lineNode: ASImageNode
- let titleNode: ASTextNode
- let textNode: ASTextNode
+ let titleNode: ImmediateTextNode
+ let textNode: ImmediateTextNode
let imageNode: TransformImageNode
private let activityIndicator: ActivityIndicator
@@ -68,13 +68,11 @@ final class EditAccessoryPanelNode: AccessoryPanelNode {
self.lineNode.displaysAsynchronously = false
self.lineNode.image = PresentationResourcesChat.chatInputPanelVerticalSeparatorLineImage(theme)
- self.titleNode = ASTextNode()
- self.titleNode.truncationMode = .byTruncatingTail
+ self.titleNode = ImmediateTextNode()
self.titleNode.maximumNumberOfLines = 1
self.titleNode.displaysAsynchronously = false
- self.textNode = ASTextNode()
- self.textNode.truncationMode = .byTruncatingTail
+ self.textNode = ImmediateTextNode()
self.textNode.maximumNumberOfLines = 1
self.textNode.displaysAsynchronously = false
self.textNode.isUserInteractionEnabled = true
@@ -308,10 +306,10 @@ final class EditAccessoryPanelNode: AccessoryPanelNode {
}
self.imageNode.frame = CGRect(origin: CGPoint(x: leftInset + 9.0, y: 8.0), size: CGSize(width: 35.0, height: 35.0))
- let titleSize = self.titleNode.measure(CGSize(width: bounds.size.width - leftInset - textLineInset - rightInset - textRightInset - imageTextInset, height: bounds.size.height))
+ let titleSize = self.titleNode.updateLayout(CGSize(width: bounds.size.width - leftInset - textLineInset - rightInset - textRightInset - imageTextInset, height: bounds.size.height))
self.titleNode.frame = CGRect(origin: CGPoint(x: leftInset + textLineInset + imageTextInset, y: 7.0), size: titleSize)
- let textSize = self.textNode.measure(CGSize(width: bounds.size.width - leftInset - textLineInset - rightInset - textRightInset - imageTextInset, height: bounds.size.height))
+ let textSize = self.textNode.updateLayout(CGSize(width: bounds.size.width - leftInset - textLineInset - rightInset - textRightInset - imageTextInset, height: bounds.size.height))
self.textNode.frame = CGRect(origin: CGPoint(x: leftInset + textLineInset + imageTextInset, y: 25.0), size: textSize)
self.tapNode.frame = CGRect(origin: CGPoint(x: leftInset, y: 0.0), size: CGSize(width: bounds.width - leftInset - rightInset - closeButtonSize.width - 4.0, height: bounds.height))
diff --git a/TelegramUI/ForwardAccessoryPanelNode.swift b/TelegramUI/ForwardAccessoryPanelNode.swift
index 0c845fa08e..2354824720 100644
--- a/TelegramUI/ForwardAccessoryPanelNode.swift
+++ b/TelegramUI/ForwardAccessoryPanelNode.swift
@@ -64,8 +64,8 @@ final class ForwardAccessoryPanelNode: AccessoryPanelNode {
let closeButton: ASButtonNode
let lineNode: ASImageNode
- let titleNode: ASTextNode
- let textNode: ASTextNode
+ let titleNode: ImmediateTextNode
+ let textNode: ImmediateTextNode
var theme: PresentationTheme
@@ -83,13 +83,11 @@ final class ForwardAccessoryPanelNode: AccessoryPanelNode {
self.lineNode.displaysAsynchronously = false
self.lineNode.image = PresentationResourcesChat.chatInputPanelVerticalSeparatorLineImage(theme)
- self.titleNode = ASTextNode()
- self.titleNode.truncationMode = .byTruncatingTail
+ self.titleNode = ImmediateTextNode()
self.titleNode.maximumNumberOfLines = 1
self.titleNode.displaysAsynchronously = false
- self.textNode = ASTextNode()
- self.textNode.truncationMode = .byTruncatingTail
+ self.textNode = ImmediateTextNode()
self.textNode.maximumNumberOfLines = 1
self.textNode.displaysAsynchronously = false
@@ -174,10 +172,10 @@ final class ForwardAccessoryPanelNode: AccessoryPanelNode {
self.lineNode.frame = CGRect(origin: CGPoint(x: leftInset, y: 8.0), size: CGSize(width: 2.0, height: bounds.size.height - 10.0))
- let titleSize = self.titleNode.measure(CGSize(width: bounds.size.width - leftInset - textLineInset - rightInset - textRightInset, height: bounds.size.height))
+ let titleSize = self.titleNode.updateLayout(CGSize(width: bounds.size.width - leftInset - textLineInset - rightInset - textRightInset, height: bounds.size.height))
self.titleNode.frame = CGRect(origin: CGPoint(x: leftInset + textLineInset, y: 7.0), size: titleSize)
- let textSize = self.textNode.measure(CGSize(width: bounds.size.width - leftInset - textLineInset - rightInset - textRightInset, height: bounds.size.height))
+ let textSize = self.textNode.updateLayout(CGSize(width: bounds.size.width - leftInset - textLineInset - rightInset - textRightInset, height: bounds.size.height))
self.textNode.frame = CGRect(origin: CGPoint(x: leftInset + textLineInset, y: 25.0), size: textSize)
}
diff --git a/TelegramUI/ItemListActivityTextItem.swift b/TelegramUI/ItemListActivityTextItem.swift
index fef3bcd9a9..f2d5810986 100644
--- a/TelegramUI/ItemListActivityTextItem.swift
+++ b/TelegramUI/ItemListActivityTextItem.swift
@@ -96,7 +96,7 @@ class ItemListActivityTextItemNode: ListViewItemNode {
titleString.addAttributes([NSAttributedStringKey.font: titleFont], range: NSMakeRange(0, titleString.length))
}
- let (titleLayout, titleApply) = makeTitleLayout(TextNodeLayoutArguments(attributedString: titleString, backgroundColor: nil, maximumNumberOfLines: 0, truncationType: .end, constrainedSize: CGSize(width: params.width - params.rightInset - 20.0 - 22.0, height: CGFloat.greatestFiniteMagnitude), alignment: .natural, cutout: TextNodeCutout(position: .TopLeft, size: CGSize(width: activityWidth, height: 4.0)), insets: UIEdgeInsets()))
+ let (titleLayout, titleApply) = makeTitleLayout(TextNodeLayoutArguments(attributedString: titleString, backgroundColor: nil, maximumNumberOfLines: 0, truncationType: .end, constrainedSize: CGSize(width: params.width - params.rightInset - 20.0 - 22.0, height: CGFloat.greatestFiniteMagnitude), alignment: .natural, cutout: TextNodeCutout(topLeft: CGSize(width: activityWidth, height: 4.0)), insets: UIEdgeInsets()))
let contentSize: CGSize
let insets: UIEdgeInsets
diff --git a/TelegramUI/ListMessageSnippetItemNode.swift b/TelegramUI/ListMessageSnippetItemNode.swift
index 424b95252e..8de7ad408d 100644
--- a/TelegramUI/ListMessageSnippetItemNode.swift
+++ b/TelegramUI/ListMessageSnippetItemNode.swift
@@ -286,7 +286,7 @@ final class ListMessageSnippetItemNode: ListMessageNode {
let (descriptionNodeLayout, descriptionNodeApply) = descriptionNodeMakeLayout(TextNodeLayoutArguments(attributedString: descriptionText, backgroundColor: nil, maximumNumberOfLines: 3, truncationType: .end, constrainedSize: CGSize(width: params.width - leftInset - 8.0 - params.rightInset - 12.0, height: CGFloat.infinity), alignment: .natural, lineSpacing: 0.3, cutout: nil, insets: UIEdgeInsets(top: 1.0, left: 1.0, bottom: 1.0, right: 1.0)))
- let (linkNodeLayout, linkNodeApply) = linkNodeMakeLayout(TextNodeLayoutArguments(attributedString: linkText, backgroundColor: nil, maximumNumberOfLines: 0, truncationType: .end, constrainedSize: CGSize(width: params.width - leftInset - 8.0 - params.rightInset - 12.0, height: CGFloat.infinity), alignment: .natural, lineSpacing: 0.3, cutout: isInstantView ? TextNodeCutout(position: .TopLeft, size: CGSize(width: 14.0, height: 8.0)) : nil, insets: UIEdgeInsets(top: 1.0, left: 1.0, bottom: 1.0, right: 1.0)))
+ let (linkNodeLayout, linkNodeApply) = linkNodeMakeLayout(TextNodeLayoutArguments(attributedString: linkText, backgroundColor: nil, maximumNumberOfLines: 0, truncationType: .end, constrainedSize: CGSize(width: params.width - leftInset - 8.0 - params.rightInset - 12.0, height: CGFloat.infinity), alignment: .natural, lineSpacing: 0.3, cutout: isInstantView ? TextNodeCutout(topLeft: CGSize(width: 14.0, height: 8.0)) : nil, insets: UIEdgeInsets(top: 1.0, left: 1.0, bottom: 1.0, right: 1.0)))
var instantViewImage: UIImage?
if isInstantView {
instantViewImage = PresentationResourcesChat.sharedMediaInstantViewIcon(item.theme)
diff --git a/TelegramUI/ManagedAudioSession.swift b/TelegramUI/ManagedAudioSession.swift
index f0f35957fa..b9f7803486 100644
--- a/TelegramUI/ManagedAudioSession.swift
+++ b/TelegramUI/ManagedAudioSession.swift
@@ -625,7 +625,6 @@ public final class ManagedAudioSession {
case .builtin:
resetToBuiltin = true
case .speaker:
- try AVAudioSession.sharedInstance().overrideOutputAudioPort(.speaker)
if type == .voiceCall {
if let routes = AVAudioSession.sharedInstance().availableInputs {
for route in routes {
@@ -636,6 +635,7 @@ public final class ManagedAudioSession {
}
}
}
+ try AVAudioSession.sharedInstance().overrideOutputAudioPort(.speaker)
case .headphones:
break
case let .port(port):
diff --git a/TelegramUI/PhotoResources.swift b/TelegramUI/PhotoResources.swift
index 4ee3ea1c4a..4fd3c9e3df 100644
--- a/TelegramUI/PhotoResources.swift
+++ b/TelegramUI/PhotoResources.swift
@@ -540,17 +540,15 @@ func rawMessagePhoto(postbox: Postbox, photoReference: ImageMediaReference) -> S
}
}
-func chatMessagePhoto(postbox: Postbox, photoReference: ImageMediaReference) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> {
- return chatMessagePhotoInternal(postbox: postbox, photoReference: photoReference)
+public func chatMessagePhoto(postbox: Postbox, photoReference: ImageMediaReference) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> {
+ return chatMessagePhotoInternal(photoData: chatMessagePhotoDatas(postbox: postbox, photoReference: photoReference))
|> map { _, generate in
return generate
}
}
-func chatMessagePhotoInternal(postbox: Postbox, photoReference: ImageMediaReference) -> Signal<(() -> CGSize?, (TransformImageArguments) -> DrawingContext?), NoError> {
- let signal = chatMessagePhotoDatas(postbox: postbox, photoReference: photoReference)
-
- return signal
+public func chatMessagePhotoInternal(photoData: Signal<(Data?, Data?, Bool), NoError>) -> Signal<(() -> CGSize?, (TransformImageArguments) -> DrawingContext?), NoError> {
+ return photoData
|> map { (thumbnailData, fullSizeData, fullSizeComplete) in
return ({
return nil
@@ -1432,7 +1430,7 @@ func chatMessagePhotoStatus(account: Account, messageId: MessageId, photoReferen
}
}
-func chatMessagePhotoInteractiveFetched(account: Account, photoReference: ImageMediaReference) -> Signal {
+public func chatMessagePhotoInteractiveFetched(account: Account, photoReference: ImageMediaReference) -> Signal {
if let largestRepresentation = largestRepresentationForPhoto(photoReference.media) {
return fetchedMediaResource(postbox: account.postbox, reference: photoReference.resourceReference(largestRepresentation.resource), statsCategory: .image)
} else {
diff --git a/TelegramUI/RadialStatusNode.swift b/TelegramUI/RadialStatusNode.swift
index 0d10c6418d..69e8d9822f 100644
--- a/TelegramUI/RadialStatusNode.swift
+++ b/TelegramUI/RadialStatusNode.swift
@@ -1,7 +1,7 @@
import Foundation
import AsyncDisplayKit
-enum RadialStatusNodeState: Equatable {
+public enum RadialStatusNodeState: Equatable {
case none
case download(UIColor)
case play(UIColor)
@@ -11,7 +11,7 @@ enum RadialStatusNodeState: Equatable {
case customIcon(UIImage)
case secretTimeout(color: UIColor, icon: UIImage?, beginTime: Double, timeout: Double)
- static func ==(lhs: RadialStatusNodeState, rhs: RadialStatusNodeState) -> Bool {
+ public static func ==(lhs: RadialStatusNodeState, rhs: RadialStatusNodeState) -> Bool {
switch lhs {
case .none:
if case .none = rhs {
@@ -99,13 +99,13 @@ enum RadialStatusNodeState: Equatable {
node.progress = value
return node
}
- case let .secretTimeout(color, icon, beginTime, timeout):
- return RadialStatusSecretTimeoutContentNode(color: color, beginTime: beginTime, timeout: timeout, icon: icon)
+ case let .secretTimeout(color, icon, beginTime, timeout):
+ return RadialStatusSecretTimeoutContentNode(color: color, beginTime: beginTime, timeout: timeout, icon: icon)
}
}
}
-final class RadialStatusNode: ASControlNode {
+public final class RadialStatusNode: ASControlNode {
private var backgroundNodeColor: UIColor
private(set) var state: RadialStatusNodeState = .none
@@ -114,13 +114,13 @@ final class RadialStatusNode: ASControlNode {
private var contentNode: RadialStatusContentNode?
private var nextContentNode: RadialStatusContentNode?
- init(backgroundNodeColor: UIColor) {
+ public init(backgroundNodeColor: UIColor) {
self.backgroundNodeColor = backgroundNodeColor
super.init()
}
- func transitionToState(_ state: RadialStatusNodeState, animated: Bool = true, completion: @escaping () -> Void) {
+ public func transitionToState(_ state: RadialStatusNodeState, animated: Bool = true, completion: @escaping () -> Void) {
if self.state != state {
self.state = state
@@ -221,7 +221,7 @@ final class RadialStatusNode: ASControlNode {
}
}
- override func layout() {
+ override public func layout() {
self.backgroundNode?.frame = self.bounds
if let contentNode = self.contentNode {
contentNode.frame = self.bounds
diff --git a/TelegramUI/ReplyAccessoryPanelNode.swift b/TelegramUI/ReplyAccessoryPanelNode.swift
index 836e5bb556..e0a38d8b3c 100644
--- a/TelegramUI/ReplyAccessoryPanelNode.swift
+++ b/TelegramUI/ReplyAccessoryPanelNode.swift
@@ -13,8 +13,8 @@ final class ReplyAccessoryPanelNode: AccessoryPanelNode {
let closeButton: ASButtonNode
let lineNode: ASImageNode
- let titleNode: ASTextNode
- let textNode: ASTextNode
+ let titleNode: ImmediateTextNode
+ let textNode: ImmediateTextNode
let imageNode: TransformImageNode
var theme: PresentationTheme
@@ -34,13 +34,11 @@ final class ReplyAccessoryPanelNode: AccessoryPanelNode {
self.lineNode.displaysAsynchronously = false
self.lineNode.image = PresentationResourcesChat.chatInputPanelVerticalSeparatorLineImage(theme)
- self.titleNode = ASTextNode()
- self.titleNode.truncationMode = .byTruncatingTail
+ self.titleNode = ImmediateTextNode()
self.titleNode.maximumNumberOfLines = 1
self.titleNode.displaysAsynchronously = false
- self.textNode = ASTextNode()
- self.textNode.truncationMode = .byTruncatingTail
+ self.textNode = ImmediateTextNode()
self.textNode.maximumNumberOfLines = 1
self.textNode.displaysAsynchronously = false
@@ -216,10 +214,10 @@ final class ReplyAccessoryPanelNode: AccessoryPanelNode {
}
self.imageNode.frame = CGRect(origin: CGPoint(x: leftInset + 9.0, y: 8.0), size: CGSize(width: 35.0, height: 35.0))
- let titleSize = self.titleNode.measure(CGSize(width: bounds.size.width - leftInset - textLineInset - rightInset - textRightInset - imageTextInset, height: bounds.size.height))
+ let titleSize = self.titleNode.updateLayout(CGSize(width: bounds.size.width - leftInset - textLineInset - rightInset - textRightInset - imageTextInset, height: bounds.size.height))
self.titleNode.frame = CGRect(origin: CGPoint(x: leftInset + textLineInset + imageTextInset, y: 7.0), size: titleSize)
- let textSize = self.textNode.measure(CGSize(width: bounds.size.width - leftInset - textLineInset - rightInset - textRightInset - imageTextInset, height: bounds.size.height))
+ let textSize = self.textNode.updateLayout(CGSize(width: bounds.size.width - leftInset - textLineInset - rightInset - textRightInset - imageTextInset, height: bounds.size.height))
self.textNode.frame = CGRect(origin: CGPoint(x: leftInset + textLineInset + imageTextInset, y: 25.0), size: textSize)
}
diff --git a/TelegramUI/TransformImageNode.swift b/TelegramUI/TransformImageNode.swift
index 238fd7f167..5ed6c36c8d 100644
--- a/TelegramUI/TransformImageNode.swift
+++ b/TelegramUI/TransformImageNode.swift
@@ -37,7 +37,7 @@ public class TransformImageNode: ASDisplayNode {
}
}
- func setSignal(_ signal: Signal<(TransformImageArguments) -> DrawingContext?, NoError>, dispatchOnDisplayLink: Bool = true) {
+ public func setSignal(_ signal: Signal<(TransformImageArguments) -> DrawingContext?, NoError>, dispatchOnDisplayLink: Bool = true) {
let argumentsPromise = self.argumentsPromise
let result = combineLatest(signal, argumentsPromise.get())