From 167d6fd49e16131771ba86c10343463db833938d Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Wed, 1 Mar 2023 21:11:50 +0400 Subject: [PATCH] UI improvements --- .../Sources/AnimatedAvatarSetNode.swift | 4 +- .../GroupCallNavigationAccessoryPanel.swift | 2 +- .../VoiceChatFullscreenParticipantItem.swift | 18 +- .../Sources/VoiceChatMainStageNode.swift | 2 +- .../Sources/VoiceChatParticipantItem.swift | 2 +- .../Contents.json | 21 --- .../EmptyChat@2x.png | Bin 22731 -> 0 bytes .../Premium/Phone.imageset/Contents.json | 12 -- .../Premium/Phone.imageset/phone.pdf | 176 ------------------ .../ChatMessageInteractiveFileNode.swift | 3 +- .../ChatTextInputActionButtonsNode.swift | 5 +- .../ChatTextInputMediaRecordingButton.swift | 23 +-- .../Sources/ChatTextInputPanelNode.swift | 2 +- 13 files changed, 24 insertions(+), 246 deletions(-) delete mode 100644 submodules/TelegramUI/Images.xcassets/Chat List/EmptyMasterDetailIcon.imageset/Contents.json delete mode 100644 submodules/TelegramUI/Images.xcassets/Chat List/EmptyMasterDetailIcon.imageset/EmptyChat@2x.png delete mode 100644 submodules/TelegramUI/Images.xcassets/Premium/Phone.imageset/Contents.json delete mode 100644 submodules/TelegramUI/Images.xcassets/Premium/Phone.imageset/phone.pdf diff --git a/submodules/AnimatedAvatarSetNode/Sources/AnimatedAvatarSetNode.swift b/submodules/AnimatedAvatarSetNode/Sources/AnimatedAvatarSetNode.swift index 308ffda5af..8b582a1484 100644 --- a/submodules/AnimatedAvatarSetNode/Sources/AnimatedAvatarSetNode.swift +++ b/submodules/AnimatedAvatarSetNode/Sources/AnimatedAvatarSetNode.swift @@ -66,6 +66,7 @@ public final class AnimatedAvatarSetContext { private let avatarFont = avatarPlaceholderFont(size: 12.0) private final class ContentNode: ASDisplayNode { + private let context: AccountContext private var audioLevelView: VoiceBlobView? private var audioLevelBlobOverlay: UIImageView? private let unclippedNode: ASImageNode @@ -77,6 +78,7 @@ private final class ContentNode: ASDisplayNode { private var disposable: Disposable? init(context: AccountContext, peer: EnginePeer?, placeholderColor: UIColor, synchronousLoad: Bool, size: CGSize, spacing: CGFloat) { + self.context = context self.size = size self.spacing = spacing @@ -162,7 +164,7 @@ private final class ContentNode: ASDisplayNode { } func updateAudioLevel(color: UIColor, backgroundColor: UIColor, value: Float) { - if self.audioLevelView == nil, value > 0.0 { + if self.audioLevelView == nil, value > 0.0, self.context.sharedContext.energyUsageSettings.fullTranslucency { let blobFrame = self.unclippedNode.bounds.insetBy(dx: -8.0, dy: -8.0) let audioLevelView = VoiceBlobView( diff --git a/submodules/TelegramCallsUI/Sources/GroupCallNavigationAccessoryPanel.swift b/submodules/TelegramCallsUI/Sources/GroupCallNavigationAccessoryPanel.swift index 768fd82654..94bd233639 100644 --- a/submodules/TelegramCallsUI/Sources/GroupCallNavigationAccessoryPanel.swift +++ b/submodules/TelegramCallsUI/Sources/GroupCallNavigationAccessoryPanel.swift @@ -440,7 +440,7 @@ public final class GroupCallNavigationAccessoryPanel: ASDisplayNode { return } - if strongSelf.audioLevelView == nil { + if strongSelf.audioLevelView == nil, strongSelf.context.sharedContext.energyUsageSettings.fullTranslucency { let blobFrame = CGRect(origin: CGPoint(), size: CGSize(width: 36.0, height: 36.0)).insetBy(dx: -12.0, dy: -12.0) let audioLevelView = VoiceBlobView( diff --git a/submodules/TelegramCallsUI/Sources/VoiceChatFullscreenParticipantItem.swift b/submodules/TelegramCallsUI/Sources/VoiceChatFullscreenParticipantItem.swift index 2563a57678..7310677131 100644 --- a/submodules/TelegramCallsUI/Sources/VoiceChatFullscreenParticipantItem.swift +++ b/submodules/TelegramCallsUI/Sources/VoiceChatFullscreenParticipantItem.swift @@ -495,24 +495,10 @@ class VoiceChatFullscreenParticipantItemNode: ItemListRevealOptionsItemNode { let leftInset: CGFloat = 58.0 + params.leftInset -// let premiumConfiguration = PremiumConfiguration.with(appConfiguration: item.context.currentAppConfiguration.with { $0 }) - var titleIconsWidth: CGFloat = 0.0 let currentCredibilityIconImage: UIImage? = nil let credibilityIconOffset: CGFloat = 0.0 -// if item.peer.isScam { -// currentCredibilityIconImage = PresentationResourcesChatList.scamIcon(item.presentationData.theme, strings: item.presentationData.strings, type: .regular) -// credibilityIconOffset = 2.0 -// } else if item.peer.isFake { -// currentCredibilityIconImage = PresentationResourcesChatList.fakeIcon(item.presentationData.theme, strings: item.presentationData.strings, type: .regular) -// credibilityIconOffset = 2.0 -// } else if item.peer.isVerified { -// currentCredibilityIconImage = PresentationResourcesChatList.verifiedIcon(item.presentationData.theme) -// credibilityIconOffset = 3.0 -// } else if item.peer.isPremium && !premiumConfiguration.isPremiumDisabled { -// currentCredibilityIconImage = PresentationResourcesChatList.premiumIcon(item.presentationData.theme) -// credibilityIconOffset = 3.0 -// } + if let currentCredibilityIconImage = currentCredibilityIconImage { titleIconsWidth += 4.0 + currentCredibilityIconImage.size.width @@ -691,7 +677,7 @@ class VoiceChatFullscreenParticipantItemNode: ItemListRevealOptionsItemNode { strongSelf.highlightNode.updateLevel(CGFloat(value)) - if strongSelf.audioLevelView == nil, value > 0.0 { + if strongSelf.audioLevelView == nil, value > 0.0, item.context.sharedContext.energyUsageSettings.fullTranslucency { let audioLevelView = VoiceBlobView( frame: blobFrame, maxLevel: 1.5, diff --git a/submodules/TelegramCallsUI/Sources/VoiceChatMainStageNode.swift b/submodules/TelegramCallsUI/Sources/VoiceChatMainStageNode.swift index 313994339d..f0869b74fa 100644 --- a/submodules/TelegramCallsUI/Sources/VoiceChatMainStageNode.swift +++ b/submodules/TelegramCallsUI/Sources/VoiceChatMainStageNode.swift @@ -661,7 +661,7 @@ final class VoiceChatMainStageNode: ASDisplayNode { return } - if strongSelf.speakingAudioLevelView == nil, value > 0.0 { + if strongSelf.speakingAudioLevelView == nil, value > 0.0, strongSelf.context.sharedContext.energyUsageSettings.fullTranslucency { let audioLevelView = VoiceBlobView( frame: blobFrame, maxLevel: 1.5, diff --git a/submodules/TelegramCallsUI/Sources/VoiceChatParticipantItem.swift b/submodules/TelegramCallsUI/Sources/VoiceChatParticipantItem.swift index f81af5c522..b989d5d491 100644 --- a/submodules/TelegramCallsUI/Sources/VoiceChatParticipantItem.swift +++ b/submodules/TelegramCallsUI/Sources/VoiceChatParticipantItem.swift @@ -1063,7 +1063,7 @@ class VoiceChatParticipantItemNode: ItemListRevealOptionsItemNode { return } - if strongSelf.audioLevelView == nil, value > 0.0 { + if strongSelf.audioLevelView == nil, value > 0.0, item.context.sharedContext.energyUsageSettings.fullTranslucency { let audioLevelView = VoiceBlobView( frame: blobFrame, maxLevel: 1.5, diff --git a/submodules/TelegramUI/Images.xcassets/Chat List/EmptyMasterDetailIcon.imageset/Contents.json b/submodules/TelegramUI/Images.xcassets/Chat List/EmptyMasterDetailIcon.imageset/Contents.json deleted file mode 100644 index 83abcba088..0000000000 --- a/submodules/TelegramUI/Images.xcassets/Chat List/EmptyMasterDetailIcon.imageset/Contents.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "idiom" : "universal", - "filename" : "EmptyChat@2x.png", - "scale" : "2x" - }, - { - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/submodules/TelegramUI/Images.xcassets/Chat List/EmptyMasterDetailIcon.imageset/EmptyChat@2x.png b/submodules/TelegramUI/Images.xcassets/Chat List/EmptyMasterDetailIcon.imageset/EmptyChat@2x.png deleted file mode 100644 index 438f7ccc12c53906be6057d69ee268b5db60d57c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22731 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 bn03OWBMTFI_Ve9GD&V22qNV&*(K6(Jm|N)$ diff --git a/submodules/TelegramUI/Images.xcassets/Premium/Phone.imageset/Contents.json b/submodules/TelegramUI/Images.xcassets/Premium/Phone.imageset/Contents.json deleted file mode 100644 index 7a89bd061f..0000000000 --- a/submodules/TelegramUI/Images.xcassets/Premium/Phone.imageset/Contents.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "images" : [ - { - "filename" : "phone.pdf", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/submodules/TelegramUI/Images.xcassets/Premium/Phone.imageset/phone.pdf b/submodules/TelegramUI/Images.xcassets/Premium/Phone.imageset/phone.pdf deleted file mode 100644 index 1b32cad7a3..0000000000 --- a/submodules/TelegramUI/Images.xcassets/Premium/Phone.imageset/phone.pdf +++ /dev/null @@ -1,176 +0,0 @@ -%PDF-1.7 - -1 0 obj - << /ExtGState << /E1 << /ca 0.500000 >> >> >> -endobj - -2 0 obj - << /Length 3 0 R >> -stream -/DeviceRGB CS -/DeviceRGB cs -q -/E1 gs -1.000000 0.000000 -0.000000 1.000000 0.000000 -0.003418 cm -0.000000 0.000000 0.000000 scn -1001.992859 2652.003418 m -1040.278442 2652.004395 1072.592285 2652.005127 1099.064819 2649.842285 c -1126.787598 2647.577148 1153.344360 2642.644287 1178.614136 2629.768555 c -1216.999146 2610.210449 1248.207153 2579.002441 1267.765259 2540.617432 c -1280.640869 2515.347656 1285.573730 2488.791016 1287.838745 2461.068115 c -1290.001709 2434.595947 1290.000854 2402.282471 1290.000000 2363.997559 c -1290.000000 288.009521 l -1290.000854 249.724609 1290.001709 217.410889 1287.838745 190.938965 c -1285.573730 163.216064 1280.640869 136.659180 1267.765259 111.389648 c -1248.207153 73.004395 1216.999146 41.796631 1178.614136 22.238281 c -1153.344360 9.362793 1126.787598 4.429932 1099.064819 2.164795 c -1072.592529 0.001709 1040.279175 0.002686 1001.994263 0.003662 c -288.005798 0.003662 l -249.720932 0.002686 217.407471 0.001709 190.935211 2.164795 c -163.212448 4.429932 136.655716 9.362793 111.386002 22.238281 c -73.000938 41.796631 41.792908 73.004395 22.234743 111.389648 c -9.359177 136.659180 4.426258 163.216064 2.161221 190.938965 c --0.001672 217.411621 -0.000894 249.725342 0.000039 288.010742 c -0.000039 2363.996338 l --0.000894 2402.281738 -0.001672 2434.595703 2.161221 2461.068115 c -4.426258 2488.791016 9.359177 2515.347656 22.234743 2540.617432 c -41.792908 2579.002441 73.000938 2610.210449 111.386002 2629.768555 c -136.655716 2642.644287 163.212463 2647.577148 190.935226 2649.842285 c -217.407806 2652.005127 249.721725 2652.004395 288.007172 2652.003418 c -1001.992859 2652.003418 l -h -75.695122 2513.377930 m -60.000065 2482.574707 60.000069 2442.250977 60.000069 2361.603516 c -60.000069 290.403564 l -60.000069 209.756104 60.000065 169.432129 75.695122 138.628906 c -89.500893 111.533691 111.530090 89.504395 138.625427 75.698730 c -169.428711 60.003662 209.752472 60.003662 290.399994 60.003662 c -999.600037 60.003662 l -1080.247559 60.003662 1120.571289 60.003662 1151.374634 75.698730 c -1178.469971 89.504395 1200.499146 111.533691 1214.304932 138.628906 c -1230.000000 169.432129 1230.000000 209.756104 1230.000000 290.403564 c -1230.000000 2361.603271 l -1230.000000 2442.250977 1230.000000 2482.574707 1214.304932 2513.377930 c -1200.499146 2540.473389 1178.469971 2562.502441 1151.374634 2576.308350 c -1120.571289 2592.003418 1080.247559 2592.003418 999.600037 2592.003418 c -290.400055 2592.003418 l -209.752487 2592.003418 169.428711 2592.003418 138.625427 2576.308350 c -111.530090 2562.502441 89.500893 2540.473389 75.695122 2513.377930 c -h -f* -n -Q -q -1.000000 0.000000 -0.000000 1.000000 18.000000 17.998047 cm -0.000000 0.000000 0.000000 scn -1079.599121 2613.900635 m -1053.868774 2616.002686 1022.190063 2616.002441 983.365845 2616.001953 c -270.634308 2616.001953 l -231.810059 2616.002441 200.131302 2616.002686 174.400970 2613.900635 c -147.791351 2611.726562 123.867096 2607.096191 101.557800 2595.729248 c -66.559647 2577.896729 38.105267 2549.442383 20.272820 2514.444092 c -8.905663 2492.134766 4.275493 2468.210693 2.101401 2441.601074 c --0.000850 2415.870605 -0.000461 2384.191895 0.000014 2345.367676 c -0.000014 270.636230 l --0.000461 231.812012 -0.000850 200.133301 2.101401 174.402832 c -4.275493 147.793457 8.905663 123.868896 20.272820 101.559814 c -38.105267 66.561523 66.559647 38.107178 101.557800 20.274658 c -123.867096 8.907715 147.791351 4.277344 174.400955 2.103271 c -200.132080 0.000977 231.812027 0.001465 270.637878 0.001953 c -983.362183 0.001953 l -1022.187927 0.001465 1053.867920 0.000977 1079.599121 2.103271 c -1106.208740 4.277344 1130.132935 8.907715 1152.442139 20.274658 c -1187.440308 38.107178 1215.894775 66.561523 1233.727173 101.559814 c -1245.094360 123.868896 1249.724609 147.793457 1251.898560 174.402832 c -1254.000854 200.131836 1254.000488 231.808838 1254.000000 270.630859 c -1254.000000 2345.373291 l -1254.000488 2384.194824 1254.000854 2415.871826 1251.898560 2441.601074 c -1249.724609 2468.210693 1245.094360 2492.134766 1233.727173 2514.444092 c -1215.894775 2549.442383 1187.440308 2577.896729 1152.442139 2595.729248 c -1130.132935 2607.096191 1106.208740 2611.726562 1079.599121 2613.900635 c -h -42.000034 2343.602051 m -42.000034 2424.249512 42.000031 2464.573242 57.695091 2495.376465 c -71.500854 2522.471924 93.530060 2544.500977 120.625397 2558.306885 c -151.428680 2574.001953 191.752472 2574.001953 272.400024 2574.001953 c -359.579956 2574.001953 l -360.458221 2573.991699 l -366.948761 2573.875977 371.125000 2572.780518 374.811859 2570.816895 c -378.715668 2568.737793 381.783417 2565.685303 383.882019 2561.791992 c -385.609863 2558.586670 386.679810 2555.006104 387.023712 2549.834473 c -387.280701 2523.251221 390.322266 2513.048340 395.821350 2502.766113 c -401.573456 2492.010498 410.014465 2483.569336 420.770050 2477.817383 c -431.525635 2472.065186 442.194092 2469.001953 471.614197 2469.001953 c -782.397766 2469.001953 l -811.817871 2469.001953 822.486328 2472.065186 833.241821 2477.817383 c -843.997375 2483.569336 852.438477 2492.010498 858.190613 2502.766113 c -863.689697 2513.048340 866.731323 2523.251221 866.988037 2549.840820 c -867.332153 2555.006104 868.402039 2558.586670 870.129883 2561.791992 c -872.228577 2565.685303 875.296265 2568.737793 879.200073 2570.816895 c -882.886963 2572.780518 887.063110 2573.875977 893.553711 2573.991699 c -894.431946 2574.001953 l -981.600037 2574.001953 l -1062.247559 2574.001953 1102.571289 2574.001953 1133.374634 2558.306885 c -1160.469971 2544.500977 1182.499146 2522.471924 1196.304932 2495.376465 c -1212.000000 2464.573242 1212.000000 2424.249512 1212.000000 2343.602051 c -1212.000000 272.401855 l -1212.000000 191.754395 1212.000000 151.430664 1196.304932 120.627197 c -1182.499146 93.531982 1160.469971 71.502930 1133.374634 57.697021 c -1102.571289 42.001953 1062.247559 42.001953 981.600037 42.001953 c -272.399963 42.001953 l -191.752441 42.001953 151.428680 42.001953 120.625397 57.697021 c -93.530060 71.502930 71.500854 93.531982 57.695091 120.627197 c -42.000031 151.430664 42.000034 191.754395 42.000034 272.401855 c -42.000034 2343.602051 l -h -f* -n -Q - -endstream -endobj - -3 0 obj - 6076 -endobj - -4 0 obj - << /Annots [] - /Type /Page - /MediaBox [ 0.000000 0.000000 1290.000000 2652.000000 ] - /Resources 1 0 R - /Contents 2 0 R - /Parent 5 0 R - >> -endobj - -5 0 obj - << /Kids [ 4 0 R ] - /Count 1 - /Type /Pages - >> -endobj - -6 0 obj - << /Pages 5 0 R - /Type /Catalog - >> -endobj - -xref -0 7 -0000000000 65535 f -0000000010 00000 n -0000000074 00000 n -0000006206 00000 n -0000006229 00000 n -0000006406 00000 n -0000006480 00000 n -trailer -<< /ID [ (some) (id) ] - /Root 6 0 R - /Size 7 ->> -startxref -6539 -%%EOF \ No newline at end of file diff --git a/submodules/TelegramUI/Sources/ChatMessageInteractiveFileNode.swift b/submodules/TelegramUI/Sources/ChatMessageInteractiveFileNode.swift index 36342ee122..106008bcc4 100644 --- a/submodules/TelegramUI/Sources/ChatMessageInteractiveFileNode.swift +++ b/submodules/TelegramUI/Sources/ChatMessageInteractiveFileNode.swift @@ -1606,7 +1606,8 @@ final class ChatMessageInteractiveFileNode: ASDisplayNode { statusNode.backgroundNodeColor = backgroundNodeColor } - if case .pause = state, isVoice, self.playbackAudioLevelNode == nil { + let effectsEnabled = self.context?.sharedContext.energyUsageSettings.fullTranslucency ?? true + if case .pause = state, isVoice, self.playbackAudioLevelNode == nil, effectsEnabled { let blobFrame = progressFrame.insetBy(dx: -12.0, dy: -12.0) let playbackAudioLevelNode = VoiceBlobNode( maxLevel: 0.3, diff --git a/submodules/TelegramUI/Sources/ChatTextInputActionButtonsNode.swift b/submodules/TelegramUI/Sources/ChatTextInputActionButtonsNode.swift index c8de534d20..4166d01f0b 100644 --- a/submodules/TelegramUI/Sources/ChatTextInputActionButtonsNode.swift +++ b/submodules/TelegramUI/Sources/ChatTextInputActionButtonsNode.swift @@ -8,6 +8,7 @@ import ContextUI import ChatPresentationInterfaceState import ChatMessageBackground import ChatControllerInteraction +import AccountContext final class ChatTextInputActionButtonsNode: ASDisplayNode { private let presentationContext: ChatPresentationContext? @@ -37,13 +38,13 @@ final class ChatTextInputActionButtonsNode: ASDisplayNode { private var validLayout: CGSize? - init(presentationInterfaceState: ChatPresentationInterfaceState, presentationContext: ChatPresentationContext?, presentController: @escaping (ViewController) -> Void) { + init(context: AccountContext, presentationInterfaceState: ChatPresentationInterfaceState, presentationContext: ChatPresentationContext?, presentController: @escaping (ViewController) -> Void) { self.presentationContext = presentationContext let theme = presentationInterfaceState.theme let strings = presentationInterfaceState.strings self.strings = strings - self.micButton = ChatTextInputMediaRecordingButton(theme: theme, strings: strings, presentController: presentController) + self.micButton = ChatTextInputMediaRecordingButton(context: context, theme: theme, strings: strings, presentController: presentController) self.sendContainerNode = ASDisplayNode() self.sendContainerNode.layer.allowsGroupOpacity = true diff --git a/submodules/TelegramUI/Sources/ChatTextInputMediaRecordingButton.swift b/submodules/TelegramUI/Sources/ChatTextInputMediaRecordingButton.swift index 2b66d0cacd..ca6a3a7964 100644 --- a/submodules/TelegramUI/Sources/ChatTextInputMediaRecordingButton.swift +++ b/submodules/TelegramUI/Sources/ChatTextInputMediaRecordingButton.swift @@ -13,6 +13,7 @@ import ChatPresentationInterfaceState import ComponentFlow import LottieAnimationComponent import LottieComponent +import AccountContext private let offsetThreshold: CGFloat = 10.0 private let dismissOffsetThreshold: CGFloat = 70.0 @@ -179,6 +180,7 @@ private final class ChatTextInputMediaRecordingButtonPresenter : NSObject, TGMod } final class ChatTextInputMediaRecordingButton: TGModernConversationInputMicButton, TGModernConversationInputMicButtonDelegate { + private let context: AccountContext private var theme: PresentationTheme private let strings: PresentationStrings @@ -302,7 +304,8 @@ final class ChatTextInputMediaRecordingButton: TGModernConversationInputMicButto } } - init(theme: PresentationTheme, strings: PresentationStrings, presentController: @escaping (ViewController) -> Void) { + init(context: AccountContext, theme: PresentationTheme, strings: PresentationStrings, presentController: @escaping (ViewController) -> Void) { + self.context = context self.theme = theme self.strings = strings self.animationView = ComponentView() @@ -369,15 +372,7 @@ final class ChatTextInputMediaRecordingButton: TGModernConversationInputMicButto case .video: animationName = "anim_micToVideo" } - - //var animationMode: LottieAnimationComponent.AnimationItem.Mode = .still(position: .end) - - /*let colorKeys = ["__allcolors__"] - var colors: [String: UIColor] = [:] - for colorKey in colorKeys { - colors[colorKey] = self.theme.chat.inputPanel.panelControlColor.blitOver(self.theme.chat.inputPanel.inputBackgroundColor, alpha: 1.0) - }*/ - + let _ = animationView.update( transition: .immediate, component: AnyComponent(LottieComponent( @@ -505,9 +500,11 @@ final class ChatTextInputMediaRecordingButton: TGModernConversationInputMicButto override func animateIn() { super.animateIn() - - micDecoration.isHidden = false - micDecoration.startAnimating() + + if self.context.sharedContext.energyUsageSettings.fullTranslucency { + micDecoration.isHidden = false + micDecoration.startAnimating() + } let transition = ContainedViewLayoutTransition.animated(duration: 0.15, curve: .easeInOut) if let layer = self.animationView.view?.layer { diff --git a/submodules/TelegramUI/Sources/ChatTextInputPanelNode.swift b/submodules/TelegramUI/Sources/ChatTextInputPanelNode.swift index 181eeaa907..8e83438a13 100644 --- a/submodules/TelegramUI/Sources/ChatTextInputPanelNode.swift +++ b/submodules/TelegramUI/Sources/ChatTextInputPanelNode.swift @@ -752,7 +752,7 @@ class ChatTextInputPanelNode: ChatInputPanelNode, ASEditableTextNodeDelegate { self.searchLayoutClearImageNode.isUserInteractionEnabled = false self.searchLayoutClearButton.addSubnode(self.searchLayoutClearImageNode) - self.actionButtons = ChatTextInputActionButtonsNode(presentationInterfaceState: presentationInterfaceState, presentationContext: presentationContext, presentController: presentController) + self.actionButtons = ChatTextInputActionButtonsNode(context: context, presentationInterfaceState: presentationInterfaceState, presentationContext: presentationContext, presentController: presentController) self.counterTextNode = ImmediateTextNode() self.counterTextNode.textAlignment = .center