From 2cf5bd724ad00bb27d7d3f08652f35c7f371d783 Mon Sep 17 00:00:00 2001 From: Isaac <> Date: Tue, 14 May 2024 16:45:14 +0400 Subject: [PATCH] Dynamic progress indicator --- submodules/ChatSendMessageActionUI/BUILD | 1 + .../Sources/SendButton.swift | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/submodules/ChatSendMessageActionUI/BUILD b/submodules/ChatSendMessageActionUI/BUILD index f3008685ce..f020dd238a 100644 --- a/submodules/ChatSendMessageActionUI/BUILD +++ b/submodules/ChatSendMessageActionUI/BUILD @@ -37,6 +37,7 @@ swift_library( "//submodules/TelegramAnimatedStickerNode", "//submodules/ActivityIndicator", "//submodules/UndoUI", + "//submodules/RadialStatusNode", ], visibility = [ "//visibility:public", diff --git a/submodules/ChatSendMessageActionUI/Sources/SendButton.swift b/submodules/ChatSendMessageActionUI/Sources/SendButton.swift index bc4ae3fecd..2dbd9c68ee 100644 --- a/submodules/ChatSendMessageActionUI/Sources/SendButton.swift +++ b/submodules/ChatSendMessageActionUI/Sources/SendButton.swift @@ -16,13 +16,14 @@ import ChatMessageBackground import WallpaperBackgroundNode import AppBundle import ActivityIndicator +import RadialStatusNode final class SendButton: HighlightTrackingButton { private let containerView: UIView private var backgroundContent: WallpaperBubbleBackgroundNode? private let backgroundLayer: SimpleLayer private let iconView: UIImageView - private var activityIndicator: ActivityIndicator? + private var activityIndicator: RadialStatusNode? private var didProcessSourceCustomContent: Bool = false private var sourceCustomContentView: UIView? @@ -127,12 +128,23 @@ final class SendButton: HighlightTrackingButton { if isLoadingEffectAnimation { var animateIn = false - let activityIndicator: ActivityIndicator + let activityIndicator: RadialStatusNode if let current = self.activityIndicator { activityIndicator = current } else { animateIn = true - activityIndicator = ActivityIndicator(type: .custom(presentationData.theme.list.itemCheckColors.foregroundColor, 18.0, 2.0, true)) + activityIndicator = RadialStatusNode( + backgroundNodeColor: .clear, + enableBlur: false, + isPreview: false + ) + activityIndicator.transitionToState(.progress( + color: presentationData.theme.list.itemCheckColors.foregroundColor, + lineWidth: 2.0, + value: nil, + cancelEnabled: false, + animateRotation: true + )) self.activityIndicator = activityIndicator self.containerView.addSubview(activityIndicator.view) }