diff --git a/TelegramUI/AuthorizationSequenceAwaitingAccountResetControllerNode.swift b/TelegramUI/AuthorizationSequenceAwaitingAccountResetControllerNode.swift index 685c8eb4fe..d8853bf1aa 100644 --- a/TelegramUI/AuthorizationSequenceAwaitingAccountResetControllerNode.swift +++ b/TelegramUI/AuthorizationSequenceAwaitingAccountResetControllerNode.swift @@ -45,12 +45,12 @@ final class AuthorizationSequenceAwaitingAccountResetControllerNode: ASDisplayNo self.theme = theme self.titleNode = ASTextNode() - self.titleNode.isLayerBacked = true + self.titleNode.isUserInteractionEnabled = false self.titleNode.displaysAsynchronously = false self.titleNode.attributedText = NSAttributedString(string: strings.Login_ResetAccountProtected_Title, font: Font.light(30.0), textColor: self.theme.primaryColor) self.noticeNode = ASTextNode() - self.noticeNode.isLayerBacked = true + self.noticeNode.isUserInteractionEnabled = false self.noticeNode.displaysAsynchronously = false self.timerTitleNode = ASTextNode() diff --git a/TelegramUI/AuthorizationSequenceCodeEntryController.swift b/TelegramUI/AuthorizationSequenceCodeEntryController.swift index 2969c6501c..8df663c733 100644 --- a/TelegramUI/AuthorizationSequenceCodeEntryController.swift +++ b/TelegramUI/AuthorizationSequenceCodeEntryController.swift @@ -126,4 +126,8 @@ final class AuthorizationSequenceCodeEntryController: ViewController { private func continueWithCode(_ code: String) { self.loginWithCode?(code) } + + func applyConfirmationCode(_ code: Int) { + self.controllerNode.updateCode("\(code)") + } } diff --git a/TelegramUI/AuthorizationSequenceCodeEntryControllerNode.swift b/TelegramUI/AuthorizationSequenceCodeEntryControllerNode.swift index 220edb6be3..f82fa2bcd4 100644 --- a/TelegramUI/AuthorizationSequenceCodeEntryControllerNode.swift +++ b/TelegramUI/AuthorizationSequenceCodeEntryControllerNode.swift @@ -87,7 +87,7 @@ final class AuthorizationSequenceCodeEntryControllerNode: ASDisplayNode, UITextF self.theme = theme self.titleNode = ASTextNode() - self.titleNode.isLayerBacked = true + self.titleNode.isUserInteractionEnabled = false self.titleNode.displaysAsynchronously = false self.titleIconNode = ASImageNode() @@ -120,7 +120,7 @@ final class AuthorizationSequenceCodeEntryControllerNode: ASDisplayNode, UITextF }) self.currentOptionNode = ASTextNode() - self.currentOptionNode.isLayerBacked = true + self.currentOptionNode.isUserInteractionEnabled = false self.currentOptionNode.displaysAsynchronously = false self.nextOptionNode = HighlightableButtonNode() @@ -174,6 +174,26 @@ final class AuthorizationSequenceCodeEntryControllerNode: ASDisplayNode, UITextF self.countdownDisposable.dispose() } + func updateCode(_ code: String) { + self.codeField.textField.text = code + if let codeType = self.codeType { + var codeLength: Int32? + switch codeType { + case let .call(length): + codeLength = length + case let .otherSession(length): + codeLength = length + case let .sms(length): + codeLength = length + default: + break + } + if let codeLength = codeLength, code.count == Int(codeLength) { + self.loginWithCode?(code) + } + } + } + func updateData(number: String, codeType: SentAuthorizationCodeType, nextType: AuthorizationCodeNextType?, timeout: Int32?) { self.codeType = codeType self.phoneNumber = number diff --git a/TelegramUI/AuthorizationSequenceController.swift b/TelegramUI/AuthorizationSequenceController.swift index 9cdae7418c..4f27ad21d4 100644 --- a/TelegramUI/AuthorizationSequenceController.swift +++ b/TelegramUI/AuthorizationSequenceController.swift @@ -652,4 +652,10 @@ public final class AuthorizationSequenceController: NavigationController { self.topViewController?.view.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.3) } } + + public func applyConfirmationCode(_ code: Int) { + if let controller = self.viewControllers.last as? AuthorizationSequenceCodeEntryController { + controller.applyConfirmationCode(code) + } + } } diff --git a/TelegramUI/AuthorizationSequencePasswordEntryControllerNode.swift b/TelegramUI/AuthorizationSequencePasswordEntryControllerNode.swift index d9b6e22f01..b01015683f 100644 --- a/TelegramUI/AuthorizationSequencePasswordEntryControllerNode.swift +++ b/TelegramUI/AuthorizationSequencePasswordEntryControllerNode.swift @@ -39,12 +39,12 @@ final class AuthorizationSequencePasswordEntryControllerNode: ASDisplayNode, UIT self.theme = theme self.titleNode = ASTextNode() - self.titleNode.isLayerBacked = true + self.titleNode.isUserInteractionEnabled = false self.titleNode.displaysAsynchronously = false self.titleNode.attributedText = NSAttributedString(string: strings.LoginPassword_Title, font: Font.light(30.0), textColor: self.theme.primaryColor) self.noticeNode = ASTextNode() - self.noticeNode.isLayerBacked = true + self.noticeNode.isUserInteractionEnabled = false self.noticeNode.displaysAsynchronously = false self.noticeNode.attributedText = NSAttributedString(string: strings.TwoStepAuth_EnterPasswordHelp, font: Font.regular(16.0), textColor: self.theme.primaryColor, paragraphAlignment: .center) diff --git a/TelegramUI/AuthorizationSequencePasswordRecoveryControllerNode.swift b/TelegramUI/AuthorizationSequencePasswordRecoveryControllerNode.swift index a46bfd189e..aafccf403f 100644 --- a/TelegramUI/AuthorizationSequencePasswordRecoveryControllerNode.swift +++ b/TelegramUI/AuthorizationSequencePasswordRecoveryControllerNode.swift @@ -33,12 +33,12 @@ final class AuthorizationSequencePasswordRecoveryControllerNode: ASDisplayNode, self.theme = theme self.titleNode = ASTextNode() - self.titleNode.isLayerBacked = true + self.titleNode.isUserInteractionEnabled = false self.titleNode.displaysAsynchronously = false self.titleNode.attributedText = NSAttributedString(string: strings.TwoStepAuth_RecoveryTitle, font: Font.light(30.0), textColor: self.theme.primaryColor) self.noticeNode = ASTextNode() - self.noticeNode.isLayerBacked = true + self.noticeNode.isUserInteractionEnabled = false self.noticeNode.displaysAsynchronously = false self.noticeNode.attributedText = NSAttributedString(string: strings.TwoStepAuth_RecoveryCodeHelp, font: Font.regular(16.0), textColor: self.theme.primaryColor, paragraphAlignment: .center) diff --git a/TelegramUI/AuthorizationSequencePhoneEntryControllerNode.swift b/TelegramUI/AuthorizationSequencePhoneEntryControllerNode.swift index f5a6680d9c..b06e0935c8 100644 --- a/TelegramUI/AuthorizationSequencePhoneEntryControllerNode.swift +++ b/TelegramUI/AuthorizationSequencePhoneEntryControllerNode.swift @@ -195,12 +195,12 @@ final class AuthorizationSequencePhoneEntryControllerNode: ASDisplayNode { self.theme = theme self.titleNode = ASTextNode() - self.titleNode.isLayerBacked = true + self.titleNode.isUserInteractionEnabled = false self.titleNode.displaysAsynchronously = false self.titleNode.attributedText = NSAttributedString(string: strings.Login_PhoneTitle, font: Font.light(30.0), textColor: theme.primaryColor) self.noticeNode = ASTextNode() - self.noticeNode.isLayerBacked = true + self.noticeNode.isUserInteractionEnabled = false self.noticeNode.displaysAsynchronously = false self.noticeNode.attributedText = NSAttributedString(string: strings.Login_PhoneAndCountryHelp, font: Font.regular(16.0), textColor: theme.primaryColor, paragraphAlignment: .center) diff --git a/TelegramUI/AuthorizationSequenceSignUpControllerNode.swift b/TelegramUI/AuthorizationSequenceSignUpControllerNode.swift index f3c9965895..f6f0aa0784 100644 --- a/TelegramUI/AuthorizationSequenceSignUpControllerNode.swift +++ b/TelegramUI/AuthorizationSequenceSignUpControllerNode.swift @@ -69,12 +69,12 @@ final class AuthorizationSequenceSignUpControllerNode: ASDisplayNode, UITextFiel self.addPhoto = addPhoto self.titleNode = ASTextNode() - self.titleNode.isLayerBacked = true + self.titleNode.isUserInteractionEnabled = false self.titleNode.displaysAsynchronously = false self.titleNode.attributedText = NSAttributedString(string: self.strings.Login_InfoTitle, font: Font.light(30.0), textColor: theme.primaryColor) self.currentOptionNode = ASTextNode() - self.currentOptionNode.isLayerBacked = true + self.currentOptionNode.isUserInteractionEnabled = false self.currentOptionNode.displaysAsynchronously = false self.currentOptionNode.attributedText = NSAttributedString(string: self.strings.Login_InfoHelp, font: Font.regular(16.0), textColor: theme.textPlaceholderColor, paragraphAlignment: .center) diff --git a/TelegramUI/AutodownloadSizeLimitItem.swift b/TelegramUI/AutodownloadSizeLimitItem.swift index 617e7de3ee..72e0397b61 100644 --- a/TelegramUI/AutodownloadSizeLimitItem.swift +++ b/TelegramUI/AutodownloadSizeLimitItem.swift @@ -106,7 +106,7 @@ class AutodownloadSizeLimitItemNode: ListViewItemNode { self.bottomStripeNode.isLayerBacked = true self.textNode = TextNode() - self.textNode.isLayerBacked = true + self.textNode.isUserInteractionEnabled = false self.textNode.displaysAsynchronously = false super.init(layerBacked: false, dynamicBounce: false) diff --git a/TelegramUI/AvatarGalleryItemFooterContentNode.swift b/TelegramUI/AvatarGalleryItemFooterContentNode.swift index e4dc25e28b..6d83c6f3fe 100644 --- a/TelegramUI/AvatarGalleryItemFooterContentNode.swift +++ b/TelegramUI/AvatarGalleryItemFooterContentNode.swift @@ -47,12 +47,12 @@ final class AvatarGalleryItemFooterContentNode: GalleryFooterContentNode { self.nameNode = ASTextNode() self.nameNode.maximumNumberOfLines = 1 - self.nameNode.isLayerBacked = true + self.nameNode.isUserInteractionEnabled = false self.nameNode.displaysAsynchronously = false self.dateNode = ASTextNode() self.dateNode.maximumNumberOfLines = 1 - self.dateNode.isLayerBacked = true + self.dateNode.isUserInteractionEnabled = false self.dateNode.displaysAsynchronously = false super.init() diff --git a/TelegramUI/BotCheckoutActionButton.swift b/TelegramUI/BotCheckoutActionButton.swift index 7a593ebafd..13b758c9a3 100644 --- a/TelegramUI/BotCheckoutActionButton.swift +++ b/TelegramUI/BotCheckoutActionButton.swift @@ -93,7 +93,7 @@ final class BotCheckoutActionButton: HighlightableButtonNode { self.labelNode = TextNode() self.labelNode.displaysAsynchronously = false - self.labelNode.isLayerBacked = true + self.labelNode.isUserInteractionEnabled = false super.init() diff --git a/TelegramUI/BotCheckoutHeaderItem.swift b/TelegramUI/BotCheckoutHeaderItem.swift index e60e6ca3c4..548bb82bf7 100644 --- a/TelegramUI/BotCheckoutHeaderItem.swift +++ b/TelegramUI/BotCheckoutHeaderItem.swift @@ -85,17 +85,17 @@ class BotCheckoutHeaderItemNode: ListViewItemNode { self.imageNode = TransformImageNode() self.titleNode = TextNode() - self.titleNode.isLayerBacked = true + self.titleNode.isUserInteractionEnabled = false self.titleNode.contentMode = .left self.titleNode.contentsScale = UIScreen.main.scale self.textNode = TextNode() - self.textNode.isLayerBacked = true + self.textNode.isUserInteractionEnabled = false self.textNode.contentMode = .left self.textNode.contentsScale = UIScreen.main.scale self.botNameNode = TextNode() - self.botNameNode.isLayerBacked = true + self.botNameNode.isUserInteractionEnabled = false self.botNameNode.contentMode = .left self.botNameNode.contentsScale = UIScreen.main.scale diff --git a/TelegramUI/BotCheckoutPasswordEntryController.swift b/TelegramUI/BotCheckoutPasswordEntryController.swift index 2b683e6087..1bef9f84f5 100644 --- a/TelegramUI/BotCheckoutPasswordEntryController.swift +++ b/TelegramUI/BotCheckoutPasswordEntryController.swift @@ -99,7 +99,7 @@ private final class BotCheckoutPasswordAlertContentNode: AlertContentNode { let titleNode = ASTextNode() titleNode.attributedText = NSAttributedString(string: strings.Checkout_PasswordEntry_Title, font: Font.semibold(17.0), textColor: theme.actionSheet.primaryTextColor, paragraphAlignment: .center) titleNode.displaysAsynchronously = false - titleNode.isLayerBacked = true + titleNode.isUserInteractionEnabled = false titleNode.maximumNumberOfLines = 1 titleNode.truncationMode = .byTruncatingTail self.titleNode = titleNode @@ -107,7 +107,7 @@ private final class BotCheckoutPasswordAlertContentNode: AlertContentNode { self.textNode = ASTextNode() self.textNode.attributedText = NSAttributedString(string: strings.Checkout_PasswordEntry_Text(cardTitle).0, font: Font.regular(13.0), textColor: theme.actionSheet.primaryTextColor, paragraphAlignment: .center) self.textNode.displaysAsynchronously = false - self.textNode.isLayerBacked = true + self.textNode.isUserInteractionEnabled = false self.actionNodesSeparator = ASDisplayNode() self.actionNodesSeparator.isLayerBacked = true diff --git a/TelegramUI/BotCheckoutPriceItem.swift b/TelegramUI/BotCheckoutPriceItem.swift index f4bd7a774f..5e4c821aa8 100644 --- a/TelegramUI/BotCheckoutPriceItem.swift +++ b/TelegramUI/BotCheckoutPriceItem.swift @@ -84,10 +84,10 @@ class BotCheckoutPriceItemNode: ListViewItemNode { init() { self.titleNode = TextNode() - self.titleNode.isLayerBacked = true + self.titleNode.isUserInteractionEnabled = false self.labelNode = TextNode() - self.labelNode.isLayerBacked = true + self.labelNode.isUserInteractionEnabled = false super.init(layerBacked: false, dynamicBounce: false) diff --git a/TelegramUI/CalculatingCacheSizeItem.swift b/TelegramUI/CalculatingCacheSizeItem.swift index e77ffe4106..071945cdb2 100644 --- a/TelegramUI/CalculatingCacheSizeItem.swift +++ b/TelegramUI/CalculatingCacheSizeItem.swift @@ -78,7 +78,7 @@ class CalculatingCacheSizeItemNode: ListViewItemNode { self.bottomStripeNode.isLayerBacked = true self.titleNode = TextNode() - self.titleNode.isLayerBacked = true + self.titleNode.isUserInteractionEnabled = false self.titleNode.contentMode = .left self.titleNode.contentsScale = UIScreen.main.scale diff --git a/TelegramUI/CallListControllerNode.swift b/TelegramUI/CallListControllerNode.swift index 597fb9db8a..43bfc70ddd 100644 --- a/TelegramUI/CallListControllerNode.swift +++ b/TelegramUI/CallListControllerNode.swift @@ -206,7 +206,7 @@ final class CallListControllerNode: ASDisplayNode { self.emptyTextNode = ASTextNode() self.emptyTextNode.alpha = 0.0 - self.emptyTextNode.isLayerBacked = true + self.emptyTextNode.isUserInteractionEnabled = false self.emptyTextNode.displaysAsynchronously = false super.init() diff --git a/TelegramUI/CallRouteActionSheetItem.swift b/TelegramUI/CallRouteActionSheetItem.swift index 4dc2634bc6..1baa611837 100644 --- a/TelegramUI/CallRouteActionSheetItem.swift +++ b/TelegramUI/CallRouteActionSheetItem.swift @@ -49,7 +49,7 @@ public class CallRouteActionSheetItemNode: ActionSheetItemNode { self.button = HighlightTrackingButton() self.label = ASTextNode() - self.label.isLayerBacked = true + self.label.isUserInteractionEnabled = false self.label.maximumNumberOfLines = 1 self.label.displaysAsynchronously = false self.label.truncationMode = .byTruncatingTail diff --git a/TelegramUI/ChangePhoneNumberControllerNode.swift b/TelegramUI/ChangePhoneNumberControllerNode.swift index adb15f1d28..498c0edb76 100644 --- a/TelegramUI/ChangePhoneNumberControllerNode.swift +++ b/TelegramUI/ChangePhoneNumberControllerNode.swift @@ -102,12 +102,12 @@ final class ChangePhoneNumberControllerNode: ASDisplayNode { self.presentationData = presentationData self.titleNode = ASTextNode() - self.titleNode.isLayerBacked = true + self.titleNode.isUserInteractionEnabled = false self.titleNode.displaysAsynchronously = false self.titleNode.attributedText = NSAttributedString(string: self.presentationData.strings.ChangePhoneNumberNumber_NewNumber, font: Font.regular(14.0), textColor: self.presentationData.theme.list.sectionHeaderTextColor) self.noticeNode = ASTextNode() - self.noticeNode.isLayerBacked = true + self.noticeNode.isUserInteractionEnabled = false self.noticeNode.displaysAsynchronously = false self.noticeNode.attributedText = NSAttributedString(string: self.presentationData.strings.ChangePhoneNumberNumber_Help, font: Font.regular(14.0), textColor: self.presentationData.theme.list.freeTextColor) diff --git a/TelegramUI/ChatBubbleVideoDecoration.swift b/TelegramUI/ChatBubbleVideoDecoration.swift index 15c695ad9c..6dd3d711fb 100644 --- a/TelegramUI/ChatBubbleVideoDecoration.swift +++ b/TelegramUI/ChatBubbleVideoDecoration.swift @@ -14,11 +14,11 @@ final class ChatBubbleVideoDecoration: UniversalVideoDecoration { private var validLayoutSize: CGSize? - init(cornerRadius: CGFloat, nativeSize: CGSize) { + init(cornerRadius: CGFloat, nativeSize: CGSize, backgroudColor: UIColor) { self.nativeSize = nativeSize self.contentContainerNode = ASDisplayNode() - self.contentContainerNode.backgroundColor = .black + self.contentContainerNode.backgroundColor = backgroudColor self.contentContainerNode.clipsToBounds = true self.contentContainerNode.cornerRadius = cornerRadius } diff --git a/TelegramUI/ChatEmptyNode.swift b/TelegramUI/ChatEmptyNode.swift index e99f300fdb..0287aff3cc 100644 --- a/TelegramUI/ChatEmptyNode.swift +++ b/TelegramUI/ChatEmptyNode.swift @@ -69,13 +69,13 @@ private final class ChatEmptyNodeSecretChatContent: ASDisplayNode, ChatEmptyNode self.titleNode.maximumNumberOfLines = 0 self.titleNode.lineSpacing = 0.25 self.titleNode.textAlignment = .center - self.titleNode.isLayerBacked = true + self.titleNode.isUserInteractionEnabled = false self.titleNode.displaysAsynchronously = false self.subtitleNode = ImmediateTextNode() self.subtitleNode.maximumNumberOfLines = 0 self.subtitleNode.lineSpacing = 0.25 - self.subtitleNode.isLayerBacked = true + self.subtitleNode.isUserInteractionEnabled = false self.subtitleNode.displaysAsynchronously = false super.init() @@ -132,7 +132,7 @@ private final class ChatEmptyNodeSecretChatContent: ASDisplayNode, ChatEmptyNode iconNode.displayWithoutProcessing = true let textNode = ImmediateTextNode() textNode.maximumNumberOfLines = 0 - textNode.isLayerBacked = true + textNode.isUserInteractionEnabled = false textNode.displaysAsynchronously = false self.addSubnode(iconNode) self.addSubnode(textNode) @@ -205,7 +205,7 @@ private final class ChatEmptyNodeCloudChatContent: ASDisplayNode, ChatEmptyNodeC self.titleNode.maximumNumberOfLines = 0 self.titleNode.lineSpacing = 0.15 self.titleNode.textAlignment = .center - self.titleNode.isLayerBacked = true + self.titleNode.isUserInteractionEnabled = false self.titleNode.displaysAsynchronously = false super.init() @@ -237,7 +237,7 @@ private final class ChatEmptyNodeCloudChatContent: ASDisplayNode, ChatEmptyNodeC if i >= self.lineNodes.count { let textNode = ImmediateTextNode() textNode.maximumNumberOfLines = 0 - textNode.isLayerBacked = true + textNode.isUserInteractionEnabled = false textNode.displaysAsynchronously = false self.addSubnode(textNode) self.lineNodes.append(textNode) diff --git a/TelegramUI/ChatHistoryNavigationButtonNode.swift b/TelegramUI/ChatHistoryNavigationButtonNode.swift index 78e2222320..432264a312 100644 --- a/TelegramUI/ChatHistoryNavigationButtonNode.swift +++ b/TelegramUI/ChatHistoryNavigationButtonNode.swift @@ -57,7 +57,7 @@ class ChatHistoryNavigationButtonNode: ASControlNode { self.badgeTextNode = ASTextNode() self.badgeTextNode.maximumNumberOfLines = 1 - self.badgeTextNode.isLayerBacked = true + self.badgeTextNode.isUserInteractionEnabled = false self.badgeTextNode.displaysAsynchronously = false super.init() diff --git a/TelegramUI/ChatHoleItem.swift b/TelegramUI/ChatHoleItem.swift index 8531ead445..801affe40d 100644 --- a/TelegramUI/ChatHoleItem.swift +++ b/TelegramUI/ChatHoleItem.swift @@ -54,9 +54,9 @@ class ChatHoleItemNode: ListViewItemNode { self.backgroundNode.displaysAsynchronously = false self.labelNode = TextNode() - self.labelNode.isLayerBacked = true + self.labelNode.isUserInteractionEnabled = false - super.init(layerBacked: true) + super.init(layerBacked: false) self.addSubnode(self.backgroundNode) diff --git a/TelegramUI/ChatItemGalleryFooterContentNode.swift b/TelegramUI/ChatItemGalleryFooterContentNode.swift index 581360c5ee..b16277f5c1 100644 --- a/TelegramUI/ChatItemGalleryFooterContentNode.swift +++ b/TelegramUI/ChatItemGalleryFooterContentNode.swift @@ -220,11 +220,11 @@ final class ChatItemGalleryFooterContentNode: GalleryFooterContentNode { self.authorNameNode = ASTextNode() self.authorNameNode.maximumNumberOfLines = 1 - self.authorNameNode.isLayerBacked = true + self.authorNameNode.isUserInteractionEnabled = false self.authorNameNode.displaysAsynchronously = false self.dateNode = ASTextNode() self.dateNode.maximumNumberOfLines = 1 - self.dateNode.isLayerBacked = true + self.dateNode.isUserInteractionEnabled = false self.dateNode.displaysAsynchronously = false self.backwardButton = HighlightableButtonNode() diff --git a/TelegramUI/ChatListEmptyNode.swift b/TelegramUI/ChatListEmptyNode.swift index 68ce3086ca..29bd6d1af0 100644 --- a/TelegramUI/ChatListEmptyNode.swift +++ b/TelegramUI/ChatListEmptyNode.swift @@ -11,7 +11,7 @@ final class ChatListEmptyNode: ASDisplayNode { self.textNode = ImmediateTextNode() self.textNode.displaysAsynchronously = false self.textNode.maximumNumberOfLines = 0 - self.textNode.isLayerBacked = true + self.textNode.isUserInteractionEnabled = false self.textNode.textAlignment = .center self.textNode.lineSpacing = 0.1 diff --git a/TelegramUI/ChatListItem.swift b/TelegramUI/ChatListItem.swift index 4316fe1fcf..94e5404b88 100644 --- a/TelegramUI/ChatListItem.swift +++ b/TelegramUI/ChatListItem.swift @@ -252,32 +252,31 @@ class ChatListItemNode: ItemListRevealOptionsItemNode { self.backgroundNode.displaysAsynchronously = false self.avatarNode = AvatarNode(font: avatarFont) - self.avatarNode.isLayerBacked = true self.highlightedBackgroundNode = ASDisplayNode() self.highlightedBackgroundNode.isLayerBacked = true self.titleNode = TextNode() - self.titleNode.isLayerBacked = true + self.titleNode.isUserInteractionEnabled = false self.titleNode.displaysAsynchronously = true self.authorNode = TextNode() - self.authorNode.isLayerBacked = true + self.authorNode.isUserInteractionEnabled = false self.authorNode.displaysAsynchronously = true self.textNode = TextNode() - self.textNode.isLayerBacked = true + self.textNode.isUserInteractionEnabled = false self.textNode.displaysAsynchronously = true self.inputActivitiesNode = ChatListInputActivitiesNode() + self.inputActivitiesNode.isUserInteractionEnabled = false self.inputActivitiesNode.alpha = 0.0 self.dateNode = TextNode() - self.dateNode.isLayerBacked = true + self.dateNode.isUserInteractionEnabled = false self.dateNode.displaysAsynchronously = true self.statusNode = ASImageNode() - self.statusNode.isLayerBacked = true self.statusNode.displaysAsynchronously = false self.statusNode.displayWithoutProcessing = true @@ -292,7 +291,7 @@ class ChatListItemNode: ItemListRevealOptionsItemNode { self.mentionBadgeNode.displayWithoutProcessing = true self.badgeTextNode = TextNode() - self.badgeTextNode.isLayerBacked = true + self.badgeTextNode.isUserInteractionEnabled = false self.badgeTextNode.displaysAsynchronously = true self.mutedIconNode = ASImageNode() diff --git a/TelegramUI/ChatListSearchContainerNode.swift b/TelegramUI/ChatListSearchContainerNode.swift index 5fd3da1e28..fdcec373da 100644 --- a/TelegramUI/ChatListSearchContainerNode.swift +++ b/TelegramUI/ChatListSearchContainerNode.swift @@ -147,7 +147,7 @@ private enum ChatListRecentEntry: Comparable, Identifiable { if let _ = user.botInfo { status = .custom(strings.Bot_GenericBotStatus) } else if user.id != account.peerId { - let presence = peer.presence ?? TelegramUserPresence(status: .none) + let presence = peer.presence ?? TelegramUserPresence(status: .none, lastActivity: 0) status = .presence(presence, timeFormat) } else { status = .none diff --git a/TelegramUI/ChatListTypingNode.swift b/TelegramUI/ChatListTypingNode.swift index e8a7cc816a..88220a590f 100644 --- a/TelegramUI/ChatListTypingNode.swift +++ b/TelegramUI/ChatListTypingNode.swift @@ -46,8 +46,6 @@ private final class ChatListInputActivitiesDotsNode: ASDisplayNode { override init() { super.init() - - self.isLayerBacked = true } private func beginAnimation() { @@ -102,7 +100,6 @@ final class ChatListInputActivitiesNode: ASDisplayNode { override init() { self.textNode = TextNode() - self.textNode.isLayerBacked = true self.dotsNode = ChatListInputActivitiesDotsNode() diff --git a/TelegramUI/ChatMediaInputGifPane.swift b/TelegramUI/ChatMediaInputGifPane.swift index 42045c6712..ba8e2e5fa0 100644 --- a/TelegramUI/ChatMediaInputGifPane.swift +++ b/TelegramUI/ChatMediaInputGifPane.swift @@ -28,7 +28,7 @@ final class ChatMediaInputGifPane: ChatMediaInputPane, UIScrollViewDelegate { self.fixPaneScroll = fixPaneScroll self.emptyNode = ImmediateTextNode() - self.emptyNode.isLayerBacked = true + self.emptyNode.isUserInteractionEnabled = false self.emptyNode.attributedText = NSAttributedString(string: strings.Conversation_EmptyGifPanelPlaceholder, font: Font.regular(15.0), textColor: theme.chat.inputMediaPanel.stickersSectionTextColor) self.emptyNode.textAlignment = .center self.emptyNode.maximumNumberOfLines = 3 diff --git a/TelegramUI/ChatMessageActionItemNode.swift b/TelegramUI/ChatMessageActionItemNode.swift index b067dbc8e4..1a298143ec 100644 --- a/TelegramUI/ChatMessageActionItemNode.swift +++ b/TelegramUI/ChatMessageActionItemNode.swift @@ -436,7 +436,7 @@ class ChatMessageActionBubbleContentNode: ChatMessageBubbleContentNode { required init() { self.labelNode = TextNode() - self.labelNode.isLayerBacked = true + self.labelNode.isUserInteractionEnabled = false self.labelNode.displaysAsynchronously = true self.filledBackgroundNode = LinkHighlightingNode(color: .clear) diff --git a/TelegramUI/ChatMessageAttachedContentNode.swift b/TelegramUI/ChatMessageAttachedContentNode.swift index bdd9ed081e..a3e682685b 100644 --- a/TelegramUI/ChatMessageAttachedContentNode.swift +++ b/TelegramUI/ChatMessageAttachedContentNode.swift @@ -47,9 +47,9 @@ final class ChatMessageAttachedContentButtonNode: HighlightTrackingButtonNode { override init() { self.textNode = TextNode() - self.textNode.isLayerBacked = true + self.textNode.isUserInteractionEnabled = false self.highlightedTextNode = TextNode() - self.highlightedTextNode.isLayerBacked = true + self.highlightedTextNode.isUserInteractionEnabled = false self.backgroundNode = ASImageNode() self.backgroundNode.isLayerBacked = true @@ -242,7 +242,7 @@ final class ChatMessageAttachedContentNode: ASDisplayNode { self.lineNode.displayWithoutProcessing = true self.textNode = TextNode() - self.textNode.isLayerBacked = true + self.textNode.isUserInteractionEnabled = false self.textNode.displaysAsynchronously = true self.textNode.contentsScale = UIScreenScale self.textNode.contentMode = .topLeft diff --git a/TelegramUI/ChatMessageBubbleItemNode.swift b/TelegramUI/ChatMessageBubbleItemNode.swift index 20dfb177f9..248c310114 100644 --- a/TelegramUI/ChatMessageBubbleItemNode.swift +++ b/TelegramUI/ChatMessageBubbleItemNode.swift @@ -1180,7 +1180,7 @@ class ChatMessageBubbleItemNode: ChatMessageItemView { strongSelf.nameNode = nameNode if nameNode.supernode == nil { if !nameNode.isNodeLoaded { - nameNode.isLayerBacked = true + nameNode.isUserInteractionEnabled = false } strongSelf.addSubnode(nameNode) } @@ -1191,7 +1191,7 @@ class ChatMessageBubbleItemNode: ChatMessageItemView { let adminBadgeFrame = CGRect(origin: CGPoint(x: contentUpperRightCorner.x - layoutConstants.text.bubbleInsets.left - adminNodeSizeApply.0.width, y: layoutConstants.bubble.contentInsets.top + nameNodeOriginY), size: adminNodeSizeApply.0) if adminBadgeNode.supernode == nil { if !adminBadgeNode.isNodeLoaded { - adminBadgeNode.isLayerBacked = true + adminBadgeNode.isUserInteractionEnabled = false } strongSelf.addSubnode(adminBadgeNode) adminBadgeNode.frame = adminBadgeFrame diff --git a/TelegramUI/ChatMessageCallBubbleContentNode.swift b/TelegramUI/ChatMessageCallBubbleContentNode.swift index ab5a20000c..33fe5a97f4 100644 --- a/TelegramUI/ChatMessageCallBubbleContentNode.swift +++ b/TelegramUI/ChatMessageCallBubbleContentNode.swift @@ -32,13 +32,13 @@ class ChatMessageCallBubbleContentNode: ChatMessageBubbleContentNode { super.init() - self.titleNode.isLayerBacked = true + self.titleNode.isUserInteractionEnabled = false self.titleNode.contentMode = .topLeft self.titleNode.contentsScale = UIScreenScale self.titleNode.displaysAsynchronously = true self.addSubnode(self.titleNode) - self.labelNode.isLayerBacked = true + self.labelNode.isUserInteractionEnabled = false self.labelNode.contentMode = .topLeft self.labelNode.contentsScale = UIScreenScale self.labelNode.displaysAsynchronously = true diff --git a/TelegramUI/ChatMessageDateAndStatusNode.swift b/TelegramUI/ChatMessageDateAndStatusNode.swift index 9937ee8e22..dedd852788 100644 --- a/TelegramUI/ChatMessageDateAndStatusNode.swift +++ b/TelegramUI/ChatMessageDateAndStatusNode.swift @@ -115,7 +115,7 @@ class ChatMessageDateAndStatusNode: ASDisplayNode { override init() { self.dateNode = TextNode() - self.dateNode.isLayerBacked = true + self.dateNode.isUserInteractionEnabled = false self.dateNode.displaysAsynchronously = true super.init() diff --git a/TelegramUI/ChatMessageDateHeader.swift b/TelegramUI/ChatMessageDateHeader.swift index e33f778235..568cb9354d 100644 --- a/TelegramUI/ChatMessageDateHeader.swift +++ b/TelegramUI/ChatMessageDateHeader.swift @@ -93,7 +93,7 @@ final class ChatMessageDateHeaderNode: ListViewItemHeaderNode { self.action = action self.labelNode = TextNode() - self.labelNode.isLayerBacked = true + self.labelNode.isUserInteractionEnabled = false self.labelNode.displaysAsynchronously = true self.backgroundNode = ASImageNode() diff --git a/TelegramUI/ChatMessageForwardInfoNode.swift b/TelegramUI/ChatMessageForwardInfoNode.swift index 37512ff979..37329e5a39 100644 --- a/TelegramUI/ChatMessageForwardInfoNode.swift +++ b/TelegramUI/ChatMessageForwardInfoNode.swift @@ -58,7 +58,7 @@ class ChatMessageForwardInfoNode: ASDisplayNode { let textNode = textApply() if node.textNode == nil { - textNode.isLayerBacked = true + textNode.isUserInteractionEnabled = false node.textNode = textNode node.addSubnode(textNode) } diff --git a/TelegramUI/ChatMessageInteractiveFileNode.swift b/TelegramUI/ChatMessageInteractiveFileNode.swift index daf79b4a0e..0abb810f11 100644 --- a/TelegramUI/ChatMessageInteractiveFileNode.swift +++ b/TelegramUI/ChatMessageInteractiveFileNode.swift @@ -51,11 +51,11 @@ final class ChatMessageInteractiveFileNode: ASDisplayNode { override init() { self.titleNode = TextNode() self.titleNode.displaysAsynchronously = true - self.titleNode.isLayerBacked = true + self.titleNode.isUserInteractionEnabled = false self.descriptionNode = TextNode() self.descriptionNode.displaysAsynchronously = true - self.descriptionNode.isLayerBacked = true + self.descriptionNode.isUserInteractionEnabled = false self.waveformNode = AudioWaveformNode() self.waveformNode.isLayerBacked = true diff --git a/TelegramUI/ChatMessageInteractiveMediaNode.swift b/TelegramUI/ChatMessageInteractiveMediaNode.swift index d5b9dbabe8..886d74530c 100644 --- a/TelegramUI/ChatMessageInteractiveMediaNode.swift +++ b/TelegramUI/ChatMessageInteractiveMediaNode.swift @@ -408,7 +408,7 @@ final class ChatMessageInteractiveMediaNode: ASDisplayNode { if replaceVideoNode, let updatedVideoFile = updateVideoFile, let mediaManager = account.telegramApplicationContext.mediaManager { let cornerRadius: CGFloat = arguments.corners.topLeft.radius - let videoNode = UniversalVideoNode(postbox: account.postbox, audioSession: mediaManager.audioSession, manager: mediaManager.universalVideoManager, decoration: ChatBubbleVideoDecoration(cornerRadius: cornerRadius, nativeSize: nativeSize), content: NativeVideoContent(id: .message(message.id, message.stableId, updatedVideoFile.fileId), fileReference: .message(message: MessageReference(message), media: updatedVideoFile), enableSound: false, fetchAutomatically: false), priority: .embedded) + let videoNode = UniversalVideoNode(postbox: account.postbox, audioSession: mediaManager.audioSession, manager: mediaManager.universalVideoManager, decoration: ChatBubbleVideoDecoration(cornerRadius: cornerRadius, nativeSize: nativeSize, backgroudColor: arguments.emptyColor ?? .black), content: NativeVideoContent(id: .message(message.id, message.stableId, updatedVideoFile.fileId), fileReference: .message(message: MessageReference(message), media: updatedVideoFile), enableSound: false, fetchAutomatically: false), priority: .embedded) videoNode.isUserInteractionEnabled = false strongSelf.videoNode = videoNode diff --git a/TelegramUI/ChatMessageItemView.swift b/TelegramUI/ChatMessageItemView.swift index dbf751217b..2664474776 100644 --- a/TelegramUI/ChatMessageItemView.swift +++ b/TelegramUI/ChatMessageItemView.swift @@ -90,7 +90,7 @@ public class ChatMessageItemView: ListViewItemNode { var item: ChatMessageItem? public required convenience init() { - self.init(layerBacked: true) + self.init(layerBacked: false) } public init(layerBacked: Bool) { diff --git a/TelegramUI/ChatMessageNotificationItem.swift b/TelegramUI/ChatMessageNotificationItem.swift index 0b36f35eb4..38e1ddb7a6 100644 --- a/TelegramUI/ChatMessageNotificationItem.swift +++ b/TelegramUI/ChatMessageNotificationItem.swift @@ -65,7 +65,7 @@ final class ChatMessageNotificationItemNode: NotificationItemNode { self.avatarNode = AvatarNode(font: avatarFont) self.titleNode = TextNode() - self.titleNode.isLayerBacked = true + self.titleNode.isUserInteractionEnabled = false self.titleIconNode = ASImageNode() self.titleIconNode.isLayerBacked = true @@ -73,7 +73,7 @@ final class ChatMessageNotificationItemNode: NotificationItemNode { self.titleIconNode.displaysAsynchronously = false self.textNode = TextNode() - self.textNode.isLayerBacked = true + self.textNode.isUserInteractionEnabled = false self.imageNode = TransformImageNode() diff --git a/TelegramUI/ChatMessageReplyInfoNode.swift b/TelegramUI/ChatMessageReplyInfoNode.swift index 15f65c2114..088c8532aa 100644 --- a/TelegramUI/ChatMessageReplyInfoNode.swift +++ b/TelegramUI/ChatMessageReplyInfoNode.swift @@ -23,8 +23,8 @@ class ChatMessageReplyInfoNode: ASDisplayNode { override init() { self.contentNode = ASDisplayNode() + self.contentNode.isUserInteractionEnabled = false self.contentNode.displaysAsynchronously = true - self.contentNode.isLayerBacked = true self.contentNode.contentMode = .left self.contentNode.contentsScale = UIScreenScale @@ -157,13 +157,13 @@ class ChatMessageReplyInfoNode: ASDisplayNode { let textNode = textApply() if node.titleNode == nil { - titleNode.isLayerBacked = true + titleNode.isUserInteractionEnabled = false node.titleNode = titleNode node.contentNode.addSubnode(titleNode) } if node.textNode == nil { - textNode.isLayerBacked = true + textNode.isUserInteractionEnabled = false node.textNode = textNode node.contentNode.addSubnode(textNode) } diff --git a/TelegramUI/ChatMessageTextBubbleContentNode.swift b/TelegramUI/ChatMessageTextBubbleContentNode.swift index be65c30bf0..5c414edb51 100644 --- a/TelegramUI/ChatMessageTextBubbleContentNode.swift +++ b/TelegramUI/ChatMessageTextBubbleContentNode.swift @@ -43,7 +43,7 @@ class ChatMessageTextBubbleContentNode: ChatMessageBubbleContentNode { super.init() - self.textNode.isLayerBacked = true + self.textNode.isUserInteractionEnabled = false self.textNode.contentMode = .topLeft self.textNode.contentsScale = UIScreenScale self.textNode.displaysAsynchronously = true diff --git a/TelegramUI/ChatOverlayNavigationBar.swift b/TelegramUI/ChatOverlayNavigationBar.swift index e4e1ec30fc..17fc5ca010 100644 --- a/TelegramUI/ChatOverlayNavigationBar.swift +++ b/TelegramUI/ChatOverlayNavigationBar.swift @@ -44,7 +44,7 @@ final class ChatOverlayNavigationBar: ASDisplayNode { self.titleNode = TextNode() self.titleNode.displaysAsynchronously = false - self.titleNode.isLayerBacked = true + self.titleNode.isUserInteractionEnabled = false self.closeButton = HighlightableButtonNode() self.closeButton.hitTestSlop = UIEdgeInsetsMake(-8.0, -8.0, -8.0, -8.0) diff --git a/TelegramUI/ChatPinnedMessageTitlePanelNode.swift b/TelegramUI/ChatPinnedMessageTitlePanelNode.swift index aff1fa12d9..49a35e181e 100644 --- a/TelegramUI/ChatPinnedMessageTitlePanelNode.swift +++ b/TelegramUI/ChatPinnedMessageTitlePanelNode.swift @@ -40,11 +40,11 @@ final class ChatPinnedMessageTitlePanelNode: ChatTitleAccessoryPanelNode { self.titleNode = TextNode() self.titleNode.displaysAsynchronously = true - self.titleNode.isLayerBacked = true + self.titleNode.isUserInteractionEnabled = false self.textNode = TextNode() self.textNode.displaysAsynchronously = true - self.textNode.isLayerBacked = true + self.textNode.isUserInteractionEnabled = false self.imageNode = TransformImageNode() self.imageNode.contentAnimations = [.subsequentUpdates] diff --git a/TelegramUI/ChatRecentActionsEmptyNode.swift b/TelegramUI/ChatRecentActionsEmptyNode.swift index 480fc9c245..5a4642142c 100644 --- a/TelegramUI/ChatRecentActionsEmptyNode.swift +++ b/TelegramUI/ChatRecentActionsEmptyNode.swift @@ -24,10 +24,10 @@ final class ChatRecentActionsEmptyNode: ASDisplayNode { self.backgroundNode.isLayerBacked = true self.titleNode = TextNode() - self.titleNode.isLayerBacked = true + self.titleNode.isUserInteractionEnabled = false self.textNode = TextNode() - self.textNode.isLayerBacked = true + self.textNode.isUserInteractionEnabled = false super.init() diff --git a/TelegramUI/ChatRecentActionsTitleView.swift b/TelegramUI/ChatRecentActionsTitleView.swift index adb83f6ca4..da277a424f 100644 --- a/TelegramUI/ChatRecentActionsTitleView.swift +++ b/TelegramUI/ChatRecentActionsTitleView.swift @@ -38,7 +38,7 @@ final class ChatRecentActionsTitleView: UIView { self.button = HighlightTrackingButtonNode() self.titleNode = TextNode() - self.titleNode.isLayerBacked = true + self.titleNode.isUserInteractionEnabled = false self.titleNode.displaysAsynchronously = false self.arrowNode = ASImageNode() diff --git a/TelegramUI/ChatTitleView.swift b/TelegramUI/ChatTitleView.swift index 685c39ebfa..3e04b268ad 100644 --- a/TelegramUI/ChatTitleView.swift +++ b/TelegramUI/ChatTitleView.swift @@ -29,7 +29,7 @@ private final class ChatTitleNetworkStatusNode: ASDisplayNode { self.theme = theme self.titleNode = ImmediateTextNode() - self.titleNode.isLayerBacked = true + self.titleNode.isUserInteractionEnabled = false self.titleNode.displaysAsynchronously = false self.titleNode.maximumNumberOfLines = 1 self.titleNode.isOpaque = false @@ -334,7 +334,7 @@ final class ChatTitleView: UIView, NavigationBarTitleView { userPresence = presence self.presenceManager?.reset(presence: presence) } else { - userPresence = TelegramUserPresence(status: .none) + userPresence = TelegramUserPresence(status: .none, lastActivity: 0) } let (string, activity) = stringAndActivityForUserPresence(strings: self.strings, dateTimeFormat: self.dateTimeFormat, presence: userPresence, relativeTo: Int32(timestamp)) let attributedString = NSAttributedString(string: string, font: Font.regular(13.0), textColor: activity ? self.theme.rootController.navigationBar.accentTextColor : self.theme.rootController.navigationBar.secondaryTextColor) diff --git a/TelegramUI/ChatUnreadItem.swift b/TelegramUI/ChatUnreadItem.swift index cf2defb2c6..0edc0b5575 100644 --- a/TelegramUI/ChatUnreadItem.swift +++ b/TelegramUI/ChatUnreadItem.swift @@ -67,9 +67,9 @@ class ChatUnreadItemNode: ListViewItemNode { self.backgroundNode.displayWithoutProcessing = true self.labelNode = TextNode() - self.labelNode.isLayerBacked = true + self.labelNode.isUserInteractionEnabled = false - super.init(layerBacked: true, dynamicBounce: true, rotated: true) + super.init(layerBacked: false, dynamicBounce: true, rotated: true) self.addSubnode(self.backgroundNode) diff --git a/TelegramUI/ChatVideoGalleryItemScrubberView.swift b/TelegramUI/ChatVideoGalleryItemScrubberView.swift index cba076fd97..1bdd03b7a3 100644 --- a/TelegramUI/ChatVideoGalleryItemScrubberView.swift +++ b/TelegramUI/ChatVideoGalleryItemScrubberView.swift @@ -50,7 +50,7 @@ final class ChatVideoGalleryItemScrubberView: UIView { self.fileSizeNode = ASTextNode() self.fileSizeNode.maximumNumberOfLines = 1 - self.fileSizeNode.isLayerBacked = true + self.fileSizeNode.isUserInteractionEnabled = false self.fileSizeNode.displaysAsynchronously = false super.init(frame: frame) diff --git a/TelegramUI/ContactListActionItem.swift b/TelegramUI/ContactListActionItem.swift index 3ca0e824a1..d5713f83f0 100644 --- a/TelegramUI/ContactListActionItem.swift +++ b/TelegramUI/ContactListActionItem.swift @@ -82,7 +82,7 @@ class ContactListActionItemNode: ListViewItemNode { self.bottomStripeNode.isLayerBacked = true self.titleNode = TextNode() - self.titleNode.isLayerBacked = true + self.titleNode.isUserInteractionEnabled = false self.titleNode.contentMode = .left self.titleNode.contentsScale = UIScreen.main.scale diff --git a/TelegramUI/ContactListNode.swift b/TelegramUI/ContactListNode.swift index 00c7c06c95..4ba24c8268 100644 --- a/TelegramUI/ContactListNode.swift +++ b/TelegramUI/ContactListNode.swift @@ -152,7 +152,7 @@ private enum ContactListNodeEntry: Comparable, Identifiable { if isGlobal, let _ = peer.addressName { status = .addressName("") } else { - let presence = presence ?? TelegramUserPresence(status: .none) + let presence = presence ?? TelegramUserPresence(status: .none, lastActivity: 0) status = .presence(presence, dateTimeFormat) } itemPeer = .peer(peer: peer, chatPeer: peer) diff --git a/TelegramUI/ContactsPeerItem.swift b/TelegramUI/ContactsPeerItem.swift index 293eff2197..37e2ea5c52 100644 --- a/TelegramUI/ContactsPeerItem.swift +++ b/TelegramUI/ContactsPeerItem.swift @@ -468,7 +468,7 @@ class ContactsPeerItemNode: ItemListRevealOptionsItemNode { case .none: break case let .presence(presence, dateTimeFormat): - let presence = (presence as? TelegramUserPresence) ?? TelegramUserPresence(status: .none) + let presence = (presence as? TelegramUserPresence) ?? TelegramUserPresence(status: .none, lastActivity: 0) userPresence = presence let timestamp = CFAbsoluteTimeGetCurrent() + NSTimeIntervalSince1970 let (string, activity) = stringAndActivityForUserPresence(strings: item.strings, dateTimeFormat: dateTimeFormat, presence: presence, relativeTo: Int32(timestamp)) diff --git a/TelegramUI/EditSettingsController.swift b/TelegramUI/EditSettingsController.swift index 654b15afb1..6106bc16c1 100644 --- a/TelegramUI/EditSettingsController.swift +++ b/TelegramUI/EditSettingsController.swift @@ -154,7 +154,7 @@ private enum SettingsEntry: ItemListNodeEntry { func item(_ arguments: EditSettingsItemArguments) -> ListViewItem { switch self { case let .userInfo(theme, strings, dateTimeFormat, peer, cachedData, state, updatingImage): - return ItemListAvatarAndNameInfoItem(account: arguments.account, theme: theme, strings: strings, dateTimeFormat: dateTimeFormat, mode: .editSettings, peer: peer, presence: TelegramUserPresence(status: .present(until: Int32.max)), cachedData: cachedData, state: state, sectionId: ItemListSectionId(self.section), style: .blocks(withTopInset: false), editingNameUpdated: { editingName in + return ItemListAvatarAndNameInfoItem(account: arguments.account, theme: theme, strings: strings, dateTimeFormat: dateTimeFormat, mode: .editSettings, peer: peer, presence: TelegramUserPresence(status: .present(until: Int32.max), lastActivity: 0), cachedData: cachedData, state: state, sectionId: ItemListSectionId(self.section), style: .blocks(withTopInset: false), editingNameUpdated: { editingName in arguments.updateEditingName(editingName) }, avatarTapped: { arguments.avatarTapAction() diff --git a/TelegramUI/EditableTokenListNode.swift b/TelegramUI/EditableTokenListNode.swift index 9f5ac1b914..1622264df8 100644 --- a/TelegramUI/EditableTokenListNode.swift +++ b/TelegramUI/EditableTokenListNode.swift @@ -58,7 +58,7 @@ private final class TokenNode: ASDisplayNode { self.theme = theme self.token = token self.titleNode = ASTextNode() - self.titleNode.isLayerBacked = true + self.titleNode.isUserInteractionEnabled = false self.titleNode.maximumNumberOfLines = 1 self.isSelected = isSelected @@ -112,7 +112,7 @@ final class EditableTokenListNode: ASDisplayNode, UITextFieldDelegate { self.scrollNode.view.alwaysBounceVertical = true self.placeholderNode = ASTextNode() - self.placeholderNode.isLayerBacked = true + self.placeholderNode.isUserInteractionEnabled = false self.placeholderNode.maximumNumberOfLines = 1 self.placeholderNode.attributedText = NSAttributedString(string: placeholder, font: Font.regular(15.0), textColor: theme.placeholderTextColor) diff --git a/TelegramUI/FFMpegMediaFrameSourceContext.swift b/TelegramUI/FFMpegMediaFrameSourceContext.swift index 2441c5266b..3db0180361 100644 --- a/TelegramUI/FFMpegMediaFrameSourceContext.swift +++ b/TelegramUI/FFMpegMediaFrameSourceContext.swift @@ -259,6 +259,11 @@ final class FFMpegMediaFrameSourceContext: NSObject { avFormatContext.pointee.pb = avIoContext + /*avFormatContext.pointee.flags |= AVFMT_FLAG_FAST_SEEK + + var options: UnsafeMutablePointer + av_dict_set(&options, "usetoc", "1", 0)*/ + guard avformat_open_input(&avFormatContextRef, nil, nil, nil) >= 0 else { self.readingError = true return diff --git a/TelegramUI/FetchCachedRepresentations.swift b/TelegramUI/FetchCachedRepresentations.swift index 21464b15a7..c6d6396b8f 100644 --- a/TelegramUI/FetchCachedRepresentations.swift +++ b/TelegramUI/FetchCachedRepresentations.swift @@ -72,12 +72,12 @@ private func fetchCachedStickerAJpegRepresentation(account: Account, resource: M let size = representation.size != nil ? image.size.aspectFitted(representation.size!) : CGSize(width: image.size.width * image.scale, height: image.size.height * image.scale) - let colorImage: UIImage + let colorImage: UIImage? if let _ = representation.size { colorImage = generateImage(size, contextGenerator: { size, context in context.setBlendMode(.copy) context.draw(image.cgImage!, in: CGRect(origin: CGPoint(), size: size)) - }, scale: 1.0)! + }, scale: 1.0) } else { colorImage = image } @@ -85,7 +85,9 @@ private func fetchCachedStickerAJpegRepresentation(account: Account, resource: M let alphaImage = generateImage(size, contextGenerator: { size, context in context.setFillColor(UIColor.white.cgColor) context.fill(CGRect(origin: CGPoint(), size: size)) - context.clip(to: CGRect(origin: CGPoint(), size: size), mask: colorImage.cgImage!) + if let colorImage = colorImage { + context.clip(to: CGRect(origin: CGPoint(), size: size), mask: colorImage.cgImage!) + } context.setFillColor(UIColor.black.cgColor) context.fill(CGRect(origin: CGPoint(), size: size)) }, scale: 1.0) @@ -110,7 +112,9 @@ private func fetchCachedStickerAJpegRepresentation(account: Account, resource: M let optionsAlpha = NSMutableDictionary() optionsAlpha.setObject(alphaQuality as NSNumber, forKey: kCGImageDestinationLossyCompressionQuality as NSString) - CGImageDestinationAddImage(colorDestination, colorImage.cgImage!, options as CFDictionary) + if let colorImage = colorImage { + CGImageDestinationAddImage(colorDestination, colorImage.cgImage!, options as CFDictionary) + } CGImageDestinationAddImage(alphaDestination, alphaImage.cgImage!, optionsAlpha as CFDictionary) if CGImageDestinationFinalize(colorDestination) && CGImageDestinationFinalize(alphaDestination) { let finalData = NSMutableData() diff --git a/TelegramUI/FormControllerActionItem.swift b/TelegramUI/FormControllerActionItem.swift index cf9dd518f8..ffe1f6c6a3 100644 --- a/TelegramUI/FormControllerActionItem.swift +++ b/TelegramUI/FormControllerActionItem.swift @@ -45,7 +45,7 @@ final class FormControllerActionItemNode: FormBlockItemNode + private let playerStatus: Promise fileprivate var actionAtEnd: MediaPlayerActionAtEnd = .stop private var stoppedAtEnd = false - init(queue: Queue, audioSessionManager: ManagedAudioSession, playerStatus: ValuePromise, postbox: Postbox, resourceReference: MediaResourceReference, streamable: Bool, video: Bool, preferSoftwareDecoding: Bool, playAutomatically: Bool, enableSound: Bool, baseRate: Double, fetchAutomatically: Bool, playAndRecord: Bool, keepAudioSessionWhilePaused: Bool) { + init(queue: Queue, audioSessionManager: ManagedAudioSession, playerStatus: Promise, postbox: Postbox, resourceReference: MediaResourceReference, streamable: Bool, video: Bool, preferSoftwareDecoding: Bool, playAutomatically: Bool, enableSound: Bool, baseRate: Double, fetchAutomatically: Bool, playAndRecord: Bool, keepAudioSessionWhilePaused: Bool) { assert(queue.isCurrent()) self.queue = queue @@ -232,10 +232,10 @@ private final class MediaPlayerContext { duration = max(duration, CMTimeGetSeconds(audioTrackFrameBuffer.duration)) } let status = MediaPlayerStatus(generationTimestamp: CACurrentMediaTime(), duration: duration, dimensions: CGSize(), timestamp: min(max(timestamp, 0.0), duration), baseRate: self.baseRate, seekId: self.seekId, status: .buffering(initial: false, whilePlaying: action == .play)) - self.playerStatus.set(status) + self.playerStatus.set(.single(status)) } else { let status = MediaPlayerStatus(generationTimestamp: CACurrentMediaTime(), duration: 0.0, dimensions: CGSize(), timestamp: 0.0, baseRate: self.baseRate, seekId: self.seekId, status: .buffering(initial: false, whilePlaying: action == .play)) - self.playerStatus.set(status) + self.playerStatus.set(.single(status)) } let frameSource = FFMpegMediaFrameSource(queue: self.queue, postbox: self.postbox, resourceReference: self.resourceReference, streamable: self.streamable, video: self.video, preferSoftwareDecoding: self.preferSoftwareDecoding, fetchAutomatically: self.fetchAutomatically) @@ -716,7 +716,7 @@ private final class MediaPlayerContext { reportTimestamp = timestamp } let status = MediaPlayerStatus(generationTimestamp: statusTimestamp, duration: duration, dimensions: CGSize(), timestamp: min(max(reportTimestamp, 0.0), duration), baseRate: self.baseRate, seekId: self.seekId, status: playbackStatus) - self.playerStatus.set(status) + self.playerStatus.set(.single(status)) } if performActionAtEndNow { @@ -787,7 +787,7 @@ final class MediaPlayer { private let queue = Queue() private var contextRef: Unmanaged? - private let statusValue = ValuePromise(MediaPlayerStatus(generationTimestamp: 0.0, duration: 0.0, dimensions: CGSize(), timestamp: 0.0, baseRate: 1.0, seekId: 0, status: .paused), ignoreRepeated: true) + private let statusValue = Promise() var status: Signal { return self.statusValue.get() diff --git a/TelegramUI/OpenInActionSheetController.swift b/TelegramUI/OpenInActionSheetController.swift index 728b3c18b9..742f9dbb2e 100644 --- a/TelegramUI/OpenInActionSheetController.swift +++ b/TelegramUI/OpenInActionSheetController.swift @@ -112,7 +112,7 @@ private final class OpenInActionSheetItemNode: ActionSheetItemNode { self.strings = strings self.titleNode = ASTextNode() - self.titleNode.isLayerBacked = true + self.titleNode.isUserInteractionEnabled = false self.titleNode.displaysAsynchronously = true self.titleNode.attributedText = NSAttributedString(string: strings.Map_OpenIn, font: titleFont, textColor: theme.primaryTextColor, paragraphAlignment: .center) @@ -185,7 +185,7 @@ private final class OpenInAppNode : ASDisplayNode { self.iconNode.isLayerBacked = true self.textNode = ASTextNode() - self.textNode.isLayerBacked = true + self.textNode.isUserInteractionEnabled = false self.textNode.displaysAsynchronously = true super.init() diff --git a/TelegramUI/OpenUrl.swift b/TelegramUI/OpenUrl.swift index 2eff5d1425..a2c6a08c16 100644 --- a/TelegramUI/OpenUrl.swift +++ b/TelegramUI/OpenUrl.swift @@ -14,7 +14,7 @@ public struct ParsedSecureIdUrl { public let opaqueNonce: Data } -public func parseSecureIdUrl(url: URL) -> ParsedSecureIdUrl? { +public func parseSecureIdUrl(_ url: URL) -> ParsedSecureIdUrl? { guard let query = url.query else { return nil } @@ -85,6 +85,15 @@ public func parseSecureIdUrl(url: URL) -> ParsedSecureIdUrl? { return nil } +public func parseConfirmationCodeUrl(_ url: URL) -> Int? { + if url.pathComponents.count == 2 && url.pathComponents[0].lowercased() == "login" { + if let code = Int(url.pathComponents[1]) { + return code + } + } + return nil +} + public enum OpenURLContext { case generic case chat diff --git a/TelegramUI/PeerMediaCollectionEmptyNode.swift b/TelegramUI/PeerMediaCollectionEmptyNode.swift index cf30c1e48f..9cc419a7ac 100644 --- a/TelegramUI/PeerMediaCollectionEmptyNode.swift +++ b/TelegramUI/PeerMediaCollectionEmptyNode.swift @@ -42,7 +42,7 @@ final class PeerMediaCollectionEmptyNode: ASDisplayNode { self.textNode = ImmediateTextNode() self.textNode.maximumNumberOfLines = 0 self.textNode.textAlignment = .center - self.textNode.isLayerBacked = true + self.textNode.isUserInteractionEnabled = false self.textNode.displaysAsynchronously = false self.textNode.isHidden = false diff --git a/TelegramUI/PeerMessagesMediaPlaylist.swift b/TelegramUI/PeerMessagesMediaPlaylist.swift index 66cbe6b0aa..eb2e750fb8 100644 --- a/TelegramUI/PeerMessagesMediaPlaylist.swift +++ b/TelegramUI/PeerMessagesMediaPlaylist.swift @@ -11,7 +11,7 @@ private enum PeerMessagesMediaPlaylistLoadAnchor { private enum PeerMessagesMediaPlaylistNavigation { case earlier case later - case random + case random(previous: Bool) } struct MessageMediaPlaylistItemStableId: Hashable { @@ -303,6 +303,54 @@ func peerMessagesMediaPlaylistAndItemId(_ message: Message, isRecentActions: Boo } } +private struct PlaybackStack { + var ids: [MessageId] = [] + var set: Set = [] + + mutating func resetToId(_ id: MessageId) { + if self.set.contains(id) { + if let index = self.ids.index(of: id) { + for i in (index + 1) ..< self.ids.count { + self.set.remove(self.ids[i]) + } + self.ids.removeLast(self.ids.count - index - 1) + } else { + assertionFailure() + self.clear() + self.ids.append(id) + self.set.insert(id) + } + } else { + self.push(id) + } + } + + mutating func push(_ id: MessageId) { + if self.set.contains(id) { + if let index = self.ids.index(of: id) { + self.ids.remove(at: index) + } + } + self.ids.append(id) + self.set.insert(id) + } + + mutating func pop() -> MessageId? { + if !self.ids.isEmpty { + let id = self.ids.removeLast() + self.set.remove(id) + return id + } else { + return nil + } + } + + mutating func clear() { + self.ids.removeAll() + self.set.removeAll() + } +} + final class PeerMessagesMediaPlaylist: SharedMediaPlaylist { private let postbox: Postbox private let network: Network @@ -314,6 +362,8 @@ final class PeerMessagesMediaPlaylist: SharedMediaPlaylist { private let navigationDisposable = MetaDisposable() + private var playbackStack = PlaybackStack() + private var currentItem: (current: Message, around: [Message])? private var loadingItem: Bool = false private var playedToEnd: Bool = false @@ -383,7 +433,7 @@ final class PeerMessagesMediaPlaylist: SharedMediaPlaylist { navigation = .earlier } case .random: - navigation = .random + navigation = .random(previous: action == .previous) } if case .singleMessage = self.messagesLocation { @@ -401,6 +451,7 @@ final class PeerMessagesMediaPlaylist: SharedMediaPlaylist { func setOrder(_ order: MusicPlaybackSettingsOrder) { if self.order != order { self.order = order + self.playbackStack.clear() self.updateState() } } @@ -458,6 +509,8 @@ final class PeerMessagesMediaPlaylist: SharedMediaPlaylist { strongSelf.loadingItem = false if let (message, aroundMessages) = messageAndAroundMessages { + strongSelf.playbackStack.clear() + strongSelf.playbackStack.push(message.id) strongSelf.currentItem = (message, aroundMessages) strongSelf.playedToEnd = false } else { @@ -467,7 +520,6 @@ final class PeerMessagesMediaPlaylist: SharedMediaPlaylist { } })) } else { - self.navigationDisposable.set((self.postbox.messageAtId(messageId) |> take(1) |> deliverOnMainQueue).start(next: { [weak self] message in @@ -476,6 +528,8 @@ final class PeerMessagesMediaPlaylist: SharedMediaPlaylist { strongSelf.loadingItem = false if let message = message { + strongSelf.playbackStack.clear() + strongSelf.playbackStack.push(message.id) strongSelf.currentItem = (message, []) } else { strongSelf.currentItem = nil @@ -493,8 +547,21 @@ final class PeerMessagesMediaPlaylist: SharedMediaPlaylist { case .regular, .reversed: inputIndex = .single(index) case .random: + var playbackStack = self.playbackStack inputIndex = self.postbox.transaction { transaction -> MessageIndex in - return transaction.findRandomMessage(peerId: peerId, tagMask: tagMask, ignoreId: index.id) ?? index + if case let .random(previous) = navigation, previous { + let _ = playbackStack.pop() + while true { + if let id = playbackStack.pop() { + if let message = transaction.getMessage(id) { + return MessageIndex(message) + } + } else { + break + } + } + } + return transaction.findRandomMessage(peerId: peerId, tagMask: tagMask, ignoreIds: (playbackStack.ids, playbackStack.set)) ?? index } } let historySignal = inputIndex @@ -557,6 +624,11 @@ final class PeerMessagesMediaPlaylist: SharedMediaPlaylist { strongSelf.loadingItem = false if let (message, aroundMessages) = messageAndAroundMessages { + if case let .random(previous) = navigation, previous { + strongSelf.playbackStack.resetToId(message.id) + } else { + strongSelf.playbackStack.push(message.id) + } strongSelf.currentItem = (message, aroundMessages) strongSelf.playedToEnd = false } else { diff --git a/TelegramUI/PeerPresenceStatusManager.swift b/TelegramUI/PeerPresenceStatusManager.swift index d8635a9b2e..4f388c911f 100644 --- a/TelegramUI/PeerPresenceStatusManager.swift +++ b/TelegramUI/PeerPresenceStatusManager.swift @@ -25,7 +25,7 @@ final class PeerPresenceStatusManager { if let strongSelf = self { strongSelf.update() } - }, queue: Queue.mainQueue()) + }, queue: Queue.mainQueue()) self.timer?.start() } } diff --git a/TelegramUI/PresenceStrings.swift b/TelegramUI/PresenceStrings.swift index 1058350bd7..7e108b8017 100644 --- a/TelegramUI/PresenceStrings.swift +++ b/TelegramUI/PresenceStrings.swift @@ -163,7 +163,12 @@ func relativeUserPresenceStatus(_ presence: TelegramUserPresence, relativeTo tim return .lastSeen(at: statusTimestamp) } case .recently: - return .recently + let activeUntil = presence.lastActivity + 30 + if activeUntil >= timestamp { + return .online(at: activeUntil) + } else { + return .recently + } case .lastWeek: return .lastWeek case .lastMonth: @@ -293,7 +298,12 @@ func stringAndActivityForUserPresence(strings: PresentationStrings, dateTimeForm } } case .recently: - return (strings.LastSeen_Lately, false) + let activeUntil = presence.lastActivity + 30 + if activeUntil >= timestamp { + return (strings.Presence_online, true) + } else { + return (strings.LastSeen_Lately, false) + } case .lastWeek: return (strings.LastSeen_WithinAWeek, false) case .lastMonth: @@ -315,9 +325,15 @@ func userPresenceStringRefreshTimeout(_ presence: TelegramUserPresence, relative } else { return Double.infinity } + } + case .recently: + let activeUntil = presence.lastActivity + 30 + if activeUntil >= timestamp { + return Double(activeUntil - timestamp + 1) + } else { return Double.infinity } - case .recently, .none, .lastWeek, .lastMonth: + case .none, .lastWeek, .lastMonth: return Double.infinity } } diff --git a/TelegramUI/ProxyServerActionSheetController.swift b/TelegramUI/ProxyServerActionSheetController.swift index bef270a9a2..39b5f68c4c 100644 --- a/TelegramUI/ProxyServerActionSheetController.swift +++ b/TelegramUI/ProxyServerActionSheetController.swift @@ -91,21 +91,21 @@ private final class ProxyServerInfoItemNode: ActionSheetItemNode { var fieldNodes: [(ImmediateTextNode, ImmediateTextNode)] = [] let serverTitleNode = ImmediateTextNode() - serverTitleNode.isLayerBacked = true + serverTitleNode.isUserInteractionEnabled = false serverTitleNode.displaysAsynchronously = false serverTitleNode.attributedText = NSAttributedString(string: strings.SocksProxySetup_Hostname, font: textFont, textColor: theme.secondaryTextColor) let serverTextNode = ImmediateTextNode() - serverTextNode.isLayerBacked = true + serverTextNode.isUserInteractionEnabled = false serverTextNode.displaysAsynchronously = false serverTextNode.attributedText = NSAttributedString(string: server.host, font: textFont, textColor: theme.primaryTextColor) fieldNodes.append((serverTitleNode, serverTextNode)) let portTitleNode = ImmediateTextNode() - portTitleNode.isLayerBacked = true + portTitleNode.isUserInteractionEnabled = false portTitleNode.displaysAsynchronously = false portTitleNode.attributedText = NSAttributedString(string: strings.SocksProxySetup_Port, font: textFont, textColor: theme.secondaryTextColor) let portTextNode = ImmediateTextNode() - portTextNode.isLayerBacked = true + portTextNode.isUserInteractionEnabled = false portTextNode.displaysAsynchronously = false portTextNode.attributedText = NSAttributedString(string: "\(server.port)", font: textFont, textColor: theme.primaryTextColor) fieldNodes.append((portTitleNode, portTextNode)) @@ -114,11 +114,11 @@ private final class ProxyServerInfoItemNode: ActionSheetItemNode { case let .socks5(username, password): if let username = username { let usernameTitleNode = ImmediateTextNode() - usernameTitleNode.isLayerBacked = true + usernameTitleNode.isUserInteractionEnabled = false usernameTitleNode.displaysAsynchronously = false usernameTitleNode.attributedText = NSAttributedString(string: strings.SocksProxySetup_Username, font: textFont, textColor: theme.secondaryTextColor) let usernameTextNode = ImmediateTextNode() - usernameTextNode.isLayerBacked = true + usernameTextNode.isUserInteractionEnabled = false usernameTextNode.displaysAsynchronously = false usernameTextNode.attributedText = NSAttributedString(string: username, font: textFont, textColor: theme.primaryTextColor) fieldNodes.append((usernameTitleNode, usernameTextNode)) @@ -126,22 +126,22 @@ private final class ProxyServerInfoItemNode: ActionSheetItemNode { if let password = password { let passwordTitleNode = ImmediateTextNode() - passwordTitleNode.isLayerBacked = true + passwordTitleNode.isUserInteractionEnabled = false passwordTitleNode.displaysAsynchronously = false passwordTitleNode.attributedText = NSAttributedString(string: strings.SocksProxySetup_Password, font: textFont, textColor: theme.secondaryTextColor) let passwordTextNode = ImmediateTextNode() - passwordTextNode.isLayerBacked = true + passwordTextNode.isUserInteractionEnabled = false passwordTextNode.displaysAsynchronously = false passwordTextNode.attributedText = NSAttributedString(string: password, font: textFont, textColor: theme.primaryTextColor) fieldNodes.append((passwordTitleNode, passwordTextNode)) } case .mtp: let passwordTitleNode = ImmediateTextNode() - passwordTitleNode.isLayerBacked = true + passwordTitleNode.isUserInteractionEnabled = false passwordTitleNode.displaysAsynchronously = false passwordTitleNode.attributedText = NSAttributedString(string: strings.SocksProxySetup_Secret, font: textFont, textColor: theme.secondaryTextColor) let passwordTextNode = ImmediateTextNode() - passwordTextNode.isLayerBacked = true + passwordTextNode.isUserInteractionEnabled = false passwordTextNode.displaysAsynchronously = false passwordTextNode.attributedText = NSAttributedString(string: "•••••", font: textFont, textColor: theme.primaryTextColor) fieldNodes.append((passwordTitleNode, passwordTextNode)) @@ -226,7 +226,7 @@ private final class ProxyServerActionItemNode: ActionSheetItemNode { self.present = present self.titleNode = ImmediateTextNode() - self.titleNode.isLayerBacked = true + self.titleNode.isUserInteractionEnabled = false self.titleNode.displaysAsynchronously = false self.titleNode.attributedText = NSAttributedString(string: strings.SocksProxySetup_ConnectAndSave, font: Font.regular(20.0), textColor: theme.controlAccentColor) diff --git a/TelegramUI/ProxySettingsActionItem.swift b/TelegramUI/ProxySettingsActionItem.swift index d2484dec94..2cd531f0ad 100644 --- a/TelegramUI/ProxySettingsActionItem.swift +++ b/TelegramUI/ProxySettingsActionItem.swift @@ -100,7 +100,7 @@ class ProxySettingsActionItemNode: ListViewItemNode { self.iconNode.displaysAsynchronously = false self.titleNode = TextNode() - self.titleNode.isLayerBacked = true + self.titleNode.isUserInteractionEnabled = false self.titleNode.contentMode = .left self.titleNode.contentsScale = UIScreen.main.scale diff --git a/TelegramUI/ProxySettingsServerItem.swift b/TelegramUI/ProxySettingsServerItem.swift index a125588006..68927f21d2 100644 --- a/TelegramUI/ProxySettingsServerItem.swift +++ b/TelegramUI/ProxySettingsServerItem.swift @@ -142,12 +142,12 @@ class ProxySettingsServerItemNode: ItemListRevealOptionsItemNode { self.checkNode.displaysAsynchronously = false self.titleNode = TextNode() - self.titleNode.isLayerBacked = true + self.titleNode.isUserInteractionEnabled = false self.titleNode.contentMode = .left self.titleNode.contentsScale = UIScreen.main.scale self.statusNode = TextNode() - self.statusNode.isLayerBacked = true + self.statusNode.isUserInteractionEnabled = false self.statusNode.contentMode = .left self.statusNode.contentsScale = UIScreen.main.scale diff --git a/TelegramUI/SearchBarNode.swift b/TelegramUI/SearchBarNode.swift index ee552cbd15..d38a738e19 100644 --- a/TelegramUI/SearchBarNode.swift +++ b/TelegramUI/SearchBarNode.swift @@ -41,13 +41,13 @@ private class SearchBarTextField: UITextField { override init(frame: CGRect) { self.placeholderLabel = ASTextNode() - self.placeholderLabel.isLayerBacked = true + self.placeholderLabel.isUserInteractionEnabled = false self.placeholderLabel.displaysAsynchronously = false self.placeholderLabel.maximumNumberOfLines = 1 self.placeholderLabel.truncationMode = .byTruncatingTail self.prefixLabel = ASTextNode() - self.prefixLabel.isLayerBacked = true + self.prefixLabel.isUserInteractionEnabled = false self.prefixLabel.displaysAsynchronously = false super.init(frame: frame) diff --git a/TelegramUI/SecretChatKeyControllerNode.swift b/TelegramUI/SecretChatKeyControllerNode.swift index 1e67fb04af..738897f6b2 100644 --- a/TelegramUI/SecretChatKeyControllerNode.swift +++ b/TelegramUI/SecretChatKeyControllerNode.swift @@ -49,7 +49,7 @@ final class SecretChatKeyControllerNode: ViewControllerTracingNode { self.imageNode.displayWithoutProcessing = true self.keyTextNode = TextNode() - self.keyTextNode.isLayerBacked = true + self.keyTextNode.isUserInteractionEnabled = false self.keyTextNode.displaysAsynchronously = false self.infoNode = TextNode() diff --git a/TelegramUI/SecretMediaPreviewFooterContentNode.swift b/TelegramUI/SecretMediaPreviewFooterContentNode.swift index c4ccb7d636..a50b020be8 100644 --- a/TelegramUI/SecretMediaPreviewFooterContentNode.swift +++ b/TelegramUI/SecretMediaPreviewFooterContentNode.swift @@ -13,7 +13,7 @@ final class SecretMediaPreviewFooterContentNode: GalleryFooterContentNode { override init() { self.textNode = ImmediateTextNode() - self.textNode.isLayerBacked = true + self.textNode.isUserInteractionEnabled = false self.textNode.displaysAsynchronously = false super.init() diff --git a/TelegramUI/SecureIdAuthAcceptNode.swift b/TelegramUI/SecureIdAuthAcceptNode.swift index 6157b26226..302c43c109 100644 --- a/TelegramUI/SecureIdAuthAcceptNode.swift +++ b/TelegramUI/SecureIdAuthAcceptNode.swift @@ -36,7 +36,7 @@ final class SecureIdAuthAcceptNode: ASDisplayNode { self.iconNode.image = generateTintedImage(image: UIImage(bundleImageName: "Secure ID/GrantIcon"), color: theme.list.itemCheckColors.foregroundColor) self.labelNode = ImmediateTextNode() - self.labelNode.isLayerBacked = true + self.labelNode.isUserInteractionEnabled = false self.labelNode.attributedText = NSAttributedString(string: title, font: Font.medium(17.0), textColor: theme.list.itemCheckColors.foregroundColor) super.init() diff --git a/TelegramUI/SecureIdAuthListFieldNode.swift b/TelegramUI/SecureIdAuthListFieldNode.swift index 180c130b4e..1041ea0c1b 100644 --- a/TelegramUI/SecureIdAuthListFieldNode.swift +++ b/TelegramUI/SecureIdAuthListFieldNode.swift @@ -155,12 +155,12 @@ final class SecureIdAuthListFieldNode: ASDisplayNode { self.titleNode = ImmediateTextNode() self.titleNode.displaysAsynchronously = false - self.titleNode.isLayerBacked = true + self.titleNode.isUserInteractionEnabled = false self.titleNode.maximumNumberOfLines = 1 self.textNode = ImmediateTextNode() self.textNode.displaysAsynchronously = false - self.textNode.isLayerBacked = true + self.textNode.isUserInteractionEnabled = false self.textNode.maximumNumberOfLines = 4 self.disclosureNode = ASImageNode() diff --git a/TelegramUI/SecureIdDocumentGalleryFooterContentNode.swift b/TelegramUI/SecureIdDocumentGalleryFooterContentNode.swift index 3c654e1633..341efdcfc4 100644 --- a/TelegramUI/SecureIdDocumentGalleryFooterContentNode.swift +++ b/TelegramUI/SecureIdDocumentGalleryFooterContentNode.swift @@ -38,14 +38,14 @@ final class SecureIdDocumentGalleryFooterContentNode: GalleryFooterContentNode { self.deleteButton.setImage(deleteImage, for: [.normal]) self.textNode = ASTextNode() - self.textNode.isLayerBacked = true + self.textNode.isUserInteractionEnabled = false self.authorNameNode = ASTextNode() self.authorNameNode.maximumNumberOfLines = 1 - self.authorNameNode.isLayerBacked = true + self.authorNameNode.isUserInteractionEnabled = false self.authorNameNode.displaysAsynchronously = false self.dateNode = ASTextNode() self.dateNode.maximumNumberOfLines = 1 - self.dateNode.isLayerBacked = true + self.dateNode.isUserInteractionEnabled = false self.dateNode.displaysAsynchronously = false super.init() diff --git a/TelegramUI/SecureIdValueFormFileItem.swift b/TelegramUI/SecureIdValueFormFileItem.swift index 598bb918d9..467b56cb6b 100644 --- a/TelegramUI/SecureIdValueFormFileItem.swift +++ b/TelegramUI/SecureIdValueFormFileItem.swift @@ -58,19 +58,19 @@ final class SecureIdValueFormFileItemNode: FormBlockItemNode ListViewItem { switch self { case let .userInfo(theme, strings, dateTimeFormat, peer, cachedData, state, updatingImage): - return ItemListAvatarAndNameInfoItem(account: arguments.account, theme: theme, strings: strings, dateTimeFormat: dateTimeFormat, mode: .settings, peer: peer, presence: TelegramUserPresence(status: .present(until: Int32.max)), cachedData: cachedData, state: state, sectionId: ItemListSectionId(self.section), style: .blocks(withTopInset: false), editingNameUpdated: { _ in + return ItemListAvatarAndNameInfoItem(account: arguments.account, theme: theme, strings: strings, dateTimeFormat: dateTimeFormat, mode: .settings, peer: peer, presence: TelegramUserPresence(status: .present(until: Int32.max), lastActivity: 0), cachedData: cachedData, state: state, sectionId: ItemListSectionId(self.section), style: .blocks(withTopInset: false), editingNameUpdated: { _ in }, avatarTapped: { arguments.avatarTapAction() }, context: arguments.avatarAndNameInfoContext, updatingImage: updatingImage, action: { diff --git a/TelegramUI/ShareActionButtonNode.swift b/TelegramUI/ShareActionButtonNode.swift index 1bf865d4f6..9a94ea59d9 100644 --- a/TelegramUI/ShareActionButtonNode.swift +++ b/TelegramUI/ShareActionButtonNode.swift @@ -32,7 +32,7 @@ final class ShareActionButtonNode: HighlightTrackingButtonNode { self.badgeLabel = TextNode() self.badgeLabel.isHidden = true - self.badgeLabel.isLayerBacked = true + self.badgeLabel.isUserInteractionEnabled = false self.badgeLabel.displaysAsynchronously = false self.badgeBackground = ASImageNode() diff --git a/TelegramUI/ShareControllerNode.swift b/TelegramUI/ShareControllerNode.swift index f3f85a8f5b..db64b910aa 100644 --- a/TelegramUI/ShareControllerNode.swift +++ b/TelegramUI/ShareControllerNode.swift @@ -16,6 +16,10 @@ enum ShareExternalState { case done } +func openExternalShare(state: () -> Signal) { + +} + final class ShareControllerNode: ViewControllerTracingNode, UIScrollViewDelegate { private let account: Account private var presentationData: PresentationData @@ -537,59 +541,61 @@ final class ShareControllerNode: ViewControllerTracingNode, UIScrollViewDelegate peersContentNode.openSearch = { [weak self] in if let strongSelf = self { let _ = (recentlySearchedPeers(postbox: strongSelf.account.postbox) - |> take(1) - |> deliverOnMainQueue).start(next: { peers in - if let strongSelf = self { - let searchContentNode = ShareSearchContainerNode(account: strongSelf.account, theme: strongSelf.presentationData.theme, strings: strongSelf.presentationData.strings, controllerInteraction: strongSelf.controllerInteraction!, recentPeers: peers.filter({ $0.peer.peerId.namespace != Namespaces.Peer.SecretChat }).map({ $0.peer })) - searchContentNode.cancel = { - if let strongSelf = self, let peersContentNode = strongSelf.peersContentNode { - strongSelf.transitionToContentNode(peersContentNode) - } + |> take(1) + |> deliverOnMainQueue).start(next: { peers in + if let strongSelf = self { + let searchContentNode = ShareSearchContainerNode(account: strongSelf.account, theme: strongSelf.presentationData.theme, strings: strongSelf.presentationData.strings, controllerInteraction: strongSelf.controllerInteraction!, recentPeers: peers.filter({ $0.peer.peerId.namespace != Namespaces.Peer.SecretChat }).map({ $0.peer })) + searchContentNode.cancel = { + if let strongSelf = self, let peersContentNode = strongSelf.peersContentNode { + strongSelf.transitionToContentNode(peersContentNode) } - strongSelf.transitionToContentNode(searchContentNode) } - }) + strongSelf.transitionToContentNode(searchContentNode) + } + }) } } let openShare: (Bool) -> Void = { [weak self] reportReady in - if let strongSelf = self, let shareExternal = strongSelf.shareExternal { - var loadingTimestamp: Double? - strongSelf.shareDisposable.set((shareExternal() |> deliverOnMainQueue).start(next: { state in - if let strongSelf = self { - switch state { - case .preparing: - if loadingTimestamp == nil { - strongSelf.inputFieldNode.deactivateInput() - let transition = ContainedViewLayoutTransition.animated(duration: 0.12, curve: .easeInOut) - transition.updateAlpha(node: strongSelf.actionButtonNode, alpha: 0.0) - transition.updateAlpha(node: strongSelf.inputFieldNode, alpha: 0.0) - transition.updateAlpha(node: strongSelf.actionSeparatorNode, alpha: 0.0) - transition.updateAlpha(node: strongSelf.actionsBackgroundNode, alpha: 0.0) - strongSelf.transitionToContentNode(ShareLoadingContainerNode(theme: strongSelf.presentationData.theme, forceNativeAppearance: true), fastOut: true) - loadingTimestamp = CACurrentMediaTime() - if reportReady { - strongSelf.ready.set(.single(true)) - } - } - case .done: - if let loadingTimestamp = loadingTimestamp { - let minDelay = 0.6 - let delay = max(0.0, (loadingTimestamp + minDelay) - CACurrentMediaTime()) - Queue.mainQueue().after(delay, { - if let strongSelf = self { - strongSelf.cancel?() - } - }) - } else { - if reportReady { - strongSelf.ready.set(.single(true)) - } + guard let strongSelf = self, let shareExternal = strongSelf.shareExternal else { + return + } + var loadingTimestamp: Double? + strongSelf.shareDisposable.set((shareExternal() |> deliverOnMainQueue).start(next: { state in + guard let strongSelf = self else { + return + } + switch state { + case .preparing: + if loadingTimestamp == nil { + strongSelf.inputFieldNode.deactivateInput() + let transition = ContainedViewLayoutTransition.animated(duration: 0.12, curve: .easeInOut) + transition.updateAlpha(node: strongSelf.actionButtonNode, alpha: 0.0) + transition.updateAlpha(node: strongSelf.inputFieldNode, alpha: 0.0) + transition.updateAlpha(node: strongSelf.actionSeparatorNode, alpha: 0.0) + transition.updateAlpha(node: strongSelf.actionsBackgroundNode, alpha: 0.0) + strongSelf.transitionToContentNode(ShareLoadingContainerNode(theme: strongSelf.presentationData.theme, forceNativeAppearance: true), fastOut: true) + loadingTimestamp = CACurrentMediaTime() + if reportReady { + strongSelf.ready.set(.single(true)) + } + } + case .done: + if let loadingTimestamp = loadingTimestamp { + let minDelay = 0.6 + let delay = max(0.0, (loadingTimestamp + minDelay) - CACurrentMediaTime()) + Queue.mainQueue().after(delay, { + if let strongSelf = self { strongSelf.cancel?() } + }) + } else { + if reportReady { + strongSelf.ready.set(.single(true)) + } + strongSelf.cancel?() } - } - })) - } + } + })) } peersContentNode.openShare = { openShare(false) diff --git a/TelegramUI/ShareControllerPeerGridItem.swift b/TelegramUI/ShareControllerPeerGridItem.swift index 6fc25a8d1b..eafdc1cbcc 100644 --- a/TelegramUI/ShareControllerPeerGridItem.swift +++ b/TelegramUI/ShareControllerPeerGridItem.swift @@ -56,7 +56,7 @@ final class ShareControllerGridSectionNode: ASDisplayNode { self.backgroundNode.backgroundColor = theme.chatList.sectionHeaderFillColor self.titleNode = ASTextNode() - self.titleNode.isLayerBacked = true + self.titleNode.isUserInteractionEnabled = false self.titleNode.attributedText = NSAttributedString(string: title.uppercased(), font: sectionTitleFont, textColor: theme.list.sectionHeaderTextColor) self.titleNode.maximumNumberOfLines = 1 self.titleNode.truncationMode = .byTruncatingTail diff --git a/TelegramUI/ShareInputFieldNode.swift b/TelegramUI/ShareInputFieldNode.swift index ef2bef6e9f..fd4e69c67c 100644 --- a/TelegramUI/ShareInputFieldNode.swift +++ b/TelegramUI/ShareInputFieldNode.swift @@ -43,7 +43,7 @@ final class ShareInputFieldNode: ASDisplayNode, ASEditableTextNodeDelegate { textInputNode.keyboardAppearance = theme.chatList.searchBarKeyboardColor.keyboardAppearance self.placeholderNode = ASTextNode() - self.placeholderNode.isLayerBacked = true + self.placeholderNode.isUserInteractionEnabled = false self.placeholderNode.displaysAsynchronously = false self.placeholderNode.attributedText = NSAttributedString(string: placeholder, font: Font.regular(17.0), textColor: theme.actionSheet.inputPlaceholderColor) diff --git a/TelegramUI/SharePeersContainerNode.swift b/TelegramUI/SharePeersContainerNode.swift index a8229e5c17..6581c2a3a6 100644 --- a/TelegramUI/SharePeersContainerNode.swift +++ b/TelegramUI/SharePeersContainerNode.swift @@ -122,7 +122,7 @@ final class SharePeersContainerNode: ASDisplayNode, ShareContentContainerNode { self.contentSubtitleNode = ASTextNode() self.contentSubtitleNode.maximumNumberOfLines = 1 - self.contentSubtitleNode.isLayerBacked = true + self.contentSubtitleNode.isUserInteractionEnabled = false self.contentSubtitleNode.displaysAsynchronously = false self.contentSubtitleNode.truncationMode = .byTruncatingTail self.contentSubtitleNode.attributedText = NSAttributedString(string: strings.ShareMenu_SelectChats, font: subtitleFont, textColor: self.theme.actionSheet.secondaryTextColor) diff --git a/TelegramUI/StickerPanePeerSpecificSetupGridItem.swift b/TelegramUI/StickerPanePeerSpecificSetupGridItem.swift index 1e87ce7f5b..e946bf4668 100644 --- a/TelegramUI/StickerPanePeerSpecificSetupGridItem.swift +++ b/TelegramUI/StickerPanePeerSpecificSetupGridItem.swift @@ -61,17 +61,17 @@ class StickerPanePeerSpecificSetupGridItemNode: GridItemNode { override init() { self.titleNode = TextNode() - self.titleNode.isLayerBacked = true + self.titleNode.isUserInteractionEnabled = false self.titleNode.contentMode = .left self.titleNode.contentsScale = UIScreen.main.scale self.descriptionNode = TextNode() - self.descriptionNode.isLayerBacked = true + self.descriptionNode.isUserInteractionEnabled = false self.descriptionNode.contentMode = .left self.descriptionNode.contentsScale = UIScreen.main.scale self.installTextNode = TextNode() - self.installTextNode.isLayerBacked = true + self.installTextNode.isUserInteractionEnabled = false self.installTextNode.contentMode = .left self.installTextNode.contentsScale = UIScreen.main.scale diff --git a/TelegramUI/StickerPaneSearchBarNode.swift b/TelegramUI/StickerPaneSearchBarNode.swift index 291a9cf07e..6558fd1c6c 100644 --- a/TelegramUI/StickerPaneSearchBarNode.swift +++ b/TelegramUI/StickerPaneSearchBarNode.swift @@ -46,7 +46,7 @@ private class StickerPaneSearchBarTextField: UITextField { self.placeholderLabel.maximumNumberOfLines = 1 self.prefixLabel = ASTextNode() - self.prefixLabel.isLayerBacked = true + self.prefixLabel.isUserInteractionEnabled = false self.prefixLabel.displaysAsynchronously = false super.init(frame: frame) diff --git a/TelegramUI/StickerPaneSearchContainerNode.swift b/TelegramUI/StickerPaneSearchContainerNode.swift index f196b6f3fd..9e6e944a45 100644 --- a/TelegramUI/StickerPaneSearchContainerNode.swift +++ b/TelegramUI/StickerPaneSearchContainerNode.swift @@ -180,7 +180,7 @@ final class StickerPaneSearchContainerNode: ASDisplayNode { self.notFoundLabel = ImmediateTextNode() self.notFoundLabel.displaysAsynchronously = false - self.notFoundLabel.isLayerBacked = true + self.notFoundLabel.isUserInteractionEnabled = false self.notFoundLabel.attributedText = NSAttributedString(string: strings.Stickers_NoStickersFound, font: Font.medium(14.0), textColor: theme.list.freeTextColor) self.notFoundNode.addSubnode(self.notFoundLabel) diff --git a/TelegramUI/StickerPaneSearchGlobaltem.swift b/TelegramUI/StickerPaneSearchGlobaltem.swift index e30ad5bd9f..0ad07fbea7 100644 --- a/TelegramUI/StickerPaneSearchGlobaltem.swift +++ b/TelegramUI/StickerPaneSearchGlobaltem.swift @@ -91,12 +91,12 @@ class StickerPaneSearchGlobalItemNode: GridItemNode { override init() { self.titleNode = TextNode() - self.titleNode.isLayerBacked = true + self.titleNode.isUserInteractionEnabled = false self.titleNode.contentMode = .left self.titleNode.contentsScale = UIScreen.main.scale self.descriptionNode = TextNode() - self.descriptionNode.isLayerBacked = true + self.descriptionNode.isUserInteractionEnabled = false self.descriptionNode.contentMode = .left self.descriptionNode.contentsScale = UIScreen.main.scale @@ -106,7 +106,7 @@ class StickerPaneSearchGlobalItemNode: GridItemNode { self.unreadNode.displaysAsynchronously = false self.installTextNode = TextNode() - self.installTextNode.isLayerBacked = true + self.installTextNode.isUserInteractionEnabled = false self.installTextNode.contentMode = .left self.installTextNode.contentsScale = UIScreen.main.scale diff --git a/TelegramUI/StickerPaneSearchStickerItem.swift b/TelegramUI/StickerPaneSearchStickerItem.swift index ecbd58553c..62f1dc0919 100644 --- a/TelegramUI/StickerPaneSearchStickerItem.swift +++ b/TelegramUI/StickerPaneSearchStickerItem.swift @@ -39,7 +39,7 @@ final class StickerPaneSearchStickerSectionNode: ASDisplayNode { init(code: String, theme: PresentationTheme) { self.titleNode = ASTextNode() - self.titleNode.isLayerBacked = true + self.titleNode.isUserInteractionEnabled = false super.init() diff --git a/TelegramUI/TelegramController.swift b/TelegramUI/TelegramController.swift index 912b405528..ee5006bf20 100644 --- a/TelegramUI/TelegramController.swift +++ b/TelegramUI/TelegramController.swift @@ -95,37 +95,39 @@ public class TelegramController: ViewController { super.init(navigationBarPresentationData: navigationBarPresentationData) - if case .none = mediaAccessoryPanelVisibility {} else if let mediaManager = account.telegramApplicationContext.mediaManager { + if case .none = mediaAccessoryPanelVisibility { + } else if let mediaManager = account.telegramApplicationContext.mediaManager { self.mediaStatusDisposable = (mediaManager.globalMediaPlayerState - |> deliverOnMainQueue).start(next: { [weak self] playlistStateAndType in - if let strongSelf = self { - if !arePlaylistItemsEqual(strongSelf.playlistStateAndType?.0, playlistStateAndType?.0.item) || - strongSelf.playlistStateAndType?.1 != playlistStateAndType?.0.order || strongSelf.playlistStateAndType?.2 != playlistStateAndType?.1 { - var previousVoiceItem: SharedMediaPlaylistItem? - if let playlistStateAndType = strongSelf.playlistStateAndType, playlistStateAndType.2 == .voice { - previousVoiceItem = playlistStateAndType.0 - } - - var updatedVoiceItem: SharedMediaPlaylistItem? - if let playlistStateAndType = playlistStateAndType, playlistStateAndType.1 == .voice { - updatedVoiceItem = playlistStateAndType.0.item - } - - strongSelf.tempVoicePlaylistItemChanged?(previousVoiceItem, updatedVoiceItem) - if let playlistStateAndType = playlistStateAndType { - strongSelf.playlistStateAndType = (playlistStateAndType.0.item, playlistStateAndType.0.order, playlistStateAndType.1) - } else { - var voiceEnded = false - if strongSelf.playlistStateAndType?.2 == .voice { - voiceEnded = true - } - strongSelf.playlistStateAndType = nil - if voiceEnded { - strongSelf.tempVoicePlaylistEnded?() - } - } - strongSelf.requestLayout(transition: .animated(duration: 0.4, curve: .spring)) + |> deliverOnMainQueue).start(next: { [weak self] playlistStateAndType in + guard let strongSelf = self else { + return + } + if !arePlaylistItemsEqual(strongSelf.playlistStateAndType?.0, playlistStateAndType?.0.item) || + strongSelf.playlistStateAndType?.1 != playlistStateAndType?.0.order || strongSelf.playlistStateAndType?.2 != playlistStateAndType?.1 { + var previousVoiceItem: SharedMediaPlaylistItem? + if let playlistStateAndType = strongSelf.playlistStateAndType, playlistStateAndType.2 == .voice { + previousVoiceItem = playlistStateAndType.0 } + + var updatedVoiceItem: SharedMediaPlaylistItem? + if let playlistStateAndType = playlistStateAndType, playlistStateAndType.1 == .voice { + updatedVoiceItem = playlistStateAndType.0.item + } + + strongSelf.tempVoicePlaylistItemChanged?(previousVoiceItem, updatedVoiceItem) + if let playlistStateAndType = playlistStateAndType { + strongSelf.playlistStateAndType = (playlistStateAndType.0.item, playlistStateAndType.0.order, playlistStateAndType.1) + } else { + var voiceEnded = false + if strongSelf.playlistStateAndType?.2 == .voice { + voiceEnded = true + } + strongSelf.playlistStateAndType = nil + if voiceEnded { + strongSelf.tempVoicePlaylistEnded?() + } + } + strongSelf.requestLayout(transition: .animated(duration: 0.4, curve: .spring)) } }) } diff --git a/TelegramUI/TermsOfServiceControllerNode.swift b/TelegramUI/TermsOfServiceControllerNode.swift index 1d8d785341..3ad5bdacb4 100644 --- a/TelegramUI/TermsOfServiceControllerNode.swift +++ b/TelegramUI/TermsOfServiceControllerNode.swift @@ -62,12 +62,12 @@ final class TermsOfServiceControllerNode: ViewControllerTracingNode { self.leftActionNode = HighlightableButtonNode() self.leftActionTextNode = ImmediateTextNode() self.leftActionTextNode.displaysAsynchronously = false - self.leftActionTextNode.isLayerBacked = true + self.leftActionTextNode.isUserInteractionEnabled = false self.leftActionTextNode.attributedText = NSAttributedString(string: self.strings.PrivacyPolicy_Decline, font: Font.regular(17.0), textColor: self.theme.accent) self.rightActionNode = HighlightableButtonNode() self.rightActionTextNode = ImmediateTextNode() self.rightActionTextNode.displaysAsynchronously = false - self.rightActionTextNode.isLayerBacked = true + self.rightActionTextNode.isUserInteractionEnabled = false self.rightActionTextNode.attributedText = NSAttributedString(string: self.strings.PrivacyPolicy_Accept, font: Font.semibold(17.0), textColor: self.theme.accent) super.init() diff --git a/TelegramUI/UniversalVideoGalleryItem.swift b/TelegramUI/UniversalVideoGalleryItem.swift index 66a751b0e7..943a2a4f75 100644 --- a/TelegramUI/UniversalVideoGalleryItem.swift +++ b/TelegramUI/UniversalVideoGalleryItem.swift @@ -107,7 +107,7 @@ private final class UniversalVideoGalleryItemPictureInPictureNode: ASDisplayNode self.iconNode.image = pictureInPictureImage self.textNode = ASTextNode() - self.textNode.isLayerBacked = true + self.textNode.isUserInteractionEnabled = false self.textNode.displaysAsynchronously = false self.textNode.attributedText = NSAttributedString(string: strings.Embed_PlayingInPIP, font: placeholderFont, textColor: UIColor(rgb: 0x8e8e93)) diff --git a/TelegramUI/UserInfoEditingPhoneActionItem.swift b/TelegramUI/UserInfoEditingPhoneActionItem.swift index 340257fecb..18264281f5 100644 --- a/TelegramUI/UserInfoEditingPhoneActionItem.swift +++ b/TelegramUI/UserInfoEditingPhoneActionItem.swift @@ -91,7 +91,7 @@ class UserInfoEditingPhoneActionItemNode: ListViewItemNode { self.iconNode.displaysAsynchronously = false self.titleNode = TextNode() - self.titleNode.isLayerBacked = true + self.titleNode.isUserInteractionEnabled = false self.titleNode.contentMode = .left self.titleNode.contentsScale = UIScreen.main.scale diff --git a/TelegramUI/UserInfoEditingPhoneItem.swift b/TelegramUI/UserInfoEditingPhoneItem.swift index 6b5d8bf7c2..8cbbef4493 100644 --- a/TelegramUI/UserInfoEditingPhoneItem.swift +++ b/TelegramUI/UserInfoEditingPhoneItem.swift @@ -107,7 +107,7 @@ class UserInfoEditingPhoneItemNode: ItemListRevealOptionsItemNode, ItemListItemN self.editableControlNode = ItemListEditableControlNode() self.labelNode = TextNode() - self.labelNode.isLayerBacked = true + self.labelNode.isUserInteractionEnabled = false self.labelNode.contentMode = .left self.labelNode.contentsScale = UIScreen.main.scale diff --git a/TelegramUI/VerticalListContextResultsChatInputPanelItem.swift b/TelegramUI/VerticalListContextResultsChatInputPanelItem.swift index c5e792d2c8..2d00543ec7 100644 --- a/TelegramUI/VerticalListContextResultsChatInputPanelItem.swift +++ b/TelegramUI/VerticalListContextResultsChatInputPanelItem.swift @@ -113,7 +113,7 @@ final class VerticalListContextResultsChatInputPanelItemNode: ListViewItemNode { self.iconTextBackgroundNode.displayWithoutProcessing = true self.iconTextNode = TextNode() - self.iconTextNode.isLayerBacked = true + self.iconTextNode.isUserInteractionEnabled = false self.iconImageNode = TransformImageNode() self.iconImageNode.contentAnimations = [.subsequentUpdates]