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())