From 13464f8dfdb25131dea7797e1e1dd29e7abbf4e2 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Fri, 10 Jul 2020 20:18:51 +0300 Subject: [PATCH] Video avatar fixes --- .../Sources/PeerInfo/PeerInfoHeaderNode.swift | 30 ++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/submodules/TelegramUI/Sources/PeerInfo/PeerInfoHeaderNode.swift b/submodules/TelegramUI/Sources/PeerInfo/PeerInfoHeaderNode.swift index e4247da6d3..6fd66d0417 100644 --- a/submodules/TelegramUI/Sources/PeerInfo/PeerInfoHeaderNode.swift +++ b/submodules/TelegramUI/Sources/PeerInfo/PeerInfoHeaderNode.swift @@ -1310,22 +1310,32 @@ final class PeerInfoEditingAvatarOverlayNode: ASDisplayNode { transition.updateAlpha(node: self.iconNode, alpha: iconHidden ? 0.0 : 1.0) transition.updateAlpha(node: self.updatingAvatarOverlay, alpha: overlayHidden ? 0.0 : 1.0) } else { + var immediately = self.currentRepresentation == nil if isEditing { - iconHidden = peer.profileImageRepresentations.isEmpty - overlayHidden = peer.profileImageRepresentations.isEmpty + immediately = peer.profileImageRepresentations.isEmpty + iconHidden = immediately + overlayHidden = immediately } else { iconHidden = true overlayHidden = true } - Queue.mainQueue().after(0.3) { [weak self] in - guard let strongSelf = self else { - return + + let targetAlpha: CGFloat = overlayHidden ? 0.0 : 1.0 + if self.updatingAvatarOverlay.alpha != targetAlpha { + let update = { + self.statusNode.transitionToState(.none) + self.currentRepresentation = nil + self.imageNode.setSignal(.single(nil)) + transition.updateAlpha(node: self.iconNode, alpha: iconHidden ? 0.0 : 1.0) + transition.updateAlpha(node: self.updatingAvatarOverlay, alpha: overlayHidden ? 0.0 : 1.0) + } + if immediately { + update() + } else { + Queue.mainQueue().after(0.3) { + update() + } } - strongSelf.statusNode.transitionToState(.none) - strongSelf.currentRepresentation = nil - strongSelf.imageNode.setSignal(.single(nil)) - transition.updateAlpha(node: strongSelf.iconNode, alpha: iconHidden ? 0.0 : 1.0) - transition.updateAlpha(node: strongSelf.updatingAvatarOverlay, alpha: overlayHidden ? 0.0 : 1.0) } } if !overlayHidden && self.updatingAvatarOverlay.image == nil {