mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-11-07 09:20:08 +00:00
Various UI fixes
This commit is contained in:
parent
27940981da
commit
adae15d010
@ -793,7 +793,7 @@ final class UniversalVideoGalleryItemNode: ZoomableContentGalleryItemNode {
|
|||||||
if let strongSelf = self, !isAnimated {
|
if let strongSelf = self, !isAnimated {
|
||||||
videoNode?.seek(0.0)
|
videoNode?.seek(0.0)
|
||||||
|
|
||||||
if strongSelf.actionAtEnd == .stop {
|
if strongSelf.actionAtEnd == .stop && strongSelf.isCentral {
|
||||||
strongSelf.updateControlsVisibility(true)
|
strongSelf.updateControlsVisibility(true)
|
||||||
strongSelf.controlsTimer?.invalidate()
|
strongSelf.controlsTimer?.invalidate()
|
||||||
strongSelf.controlsTimer = nil
|
strongSelf.controlsTimer = nil
|
||||||
@ -900,6 +900,9 @@ final class UniversalVideoGalleryItemNode: ZoomableContentGalleryItemNode {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
self.controlsTimer?.invalidate()
|
||||||
|
self.controlsTimer = nil
|
||||||
|
|
||||||
self.dismissOnOrientationChange = false
|
self.dismissOnOrientationChange = false
|
||||||
if videoNode.ownsContentNode {
|
if videoNode.ownsContentNode {
|
||||||
videoNode.pause()
|
videoNode.pause()
|
||||||
|
|||||||
@ -164,6 +164,10 @@ public class StickerShimmerEffectNode: ASDisplayNode {
|
|||||||
self.addSubnode(self.foregroundNode)
|
self.addSubnode(self.foregroundNode)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public var isEmpty: Bool {
|
||||||
|
return self.currentData == nil
|
||||||
|
}
|
||||||
|
|
||||||
public func updateAbsoluteRect(_ rect: CGRect, within containerSize: CGSize) {
|
public func updateAbsoluteRect(_ rect: CGRect, within containerSize: CGSize) {
|
||||||
self.effectNode.updateAbsoluteRect(rect, within: containerSize)
|
self.effectNode.updateAbsoluteRect(rect, within: containerSize)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -144,7 +144,7 @@ class ChatMessageAnimatedStickerItemNode: ChatMessageItemView {
|
|||||||
private let contextSourceNode: ContextExtractedContentContainingNode
|
private let contextSourceNode: ContextExtractedContentContainingNode
|
||||||
private let containerNode: ContextControllerSourceNode
|
private let containerNode: ContextControllerSourceNode
|
||||||
let imageNode: TransformImageNode
|
let imageNode: TransformImageNode
|
||||||
private var placeholderNode: StickerShimmerEffectNode?
|
private var placeholderNode: StickerShimmerEffectNode
|
||||||
private var animationNode: GenericAnimatedStickerNode?
|
private var animationNode: GenericAnimatedStickerNode?
|
||||||
private var didSetUpAnimationNode = false
|
private var didSetUpAnimationNode = false
|
||||||
private var isPlaying = false
|
private var isPlaying = false
|
||||||
@ -194,7 +194,7 @@ class ChatMessageAnimatedStickerItemNode: ChatMessageItemView {
|
|||||||
self.dateAndStatusNode = ChatMessageDateAndStatusNode()
|
self.dateAndStatusNode = ChatMessageDateAndStatusNode()
|
||||||
|
|
||||||
self.placeholderNode = StickerShimmerEffectNode()
|
self.placeholderNode = StickerShimmerEffectNode()
|
||||||
self.placeholderNode?.isUserInteractionEnabled = false
|
self.placeholderNode.isUserInteractionEnabled = false
|
||||||
|
|
||||||
super.init(layerBacked: false)
|
super.init(layerBacked: false)
|
||||||
|
|
||||||
@ -242,10 +242,9 @@ class ChatMessageAnimatedStickerItemNode: ChatMessageItemView {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
if image != nil {
|
if image != nil {
|
||||||
if firstTime {
|
if firstTime && !strongSelf.placeholderNode.isEmpty {
|
||||||
strongSelf.animationNode?.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.3, completion: { [weak self] _ in
|
strongSelf.animationNode?.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2)
|
||||||
self?.removePlaceholder(animated: false)
|
strongSelf.removePlaceholder(animated: true)
|
||||||
})
|
|
||||||
} else {
|
} else {
|
||||||
strongSelf.removePlaceholder(animated: true)
|
strongSelf.removePlaceholder(animated: true)
|
||||||
}
|
}
|
||||||
@ -258,10 +257,7 @@ class ChatMessageAnimatedStickerItemNode: ChatMessageItemView {
|
|||||||
self.containerNode.targetNodeForActivationProgress = self.contextSourceNode.contentNode
|
self.containerNode.targetNodeForActivationProgress = self.contextSourceNode.contentNode
|
||||||
self.addSubnode(self.containerNode)
|
self.addSubnode(self.containerNode)
|
||||||
self.contextSourceNode.contentNode.addSubnode(self.imageNode)
|
self.contextSourceNode.contentNode.addSubnode(self.imageNode)
|
||||||
|
self.contextSourceNode.contentNode.addSubnode(self.placeholderNode)
|
||||||
if let placeholderNode = self.placeholderNode {
|
|
||||||
self.contextSourceNode.contentNode.addSubnode(placeholderNode)
|
|
||||||
}
|
|
||||||
|
|
||||||
self.contextSourceNode.contentNode.addSubnode(self.dateAndStatusNode)
|
self.contextSourceNode.contentNode.addSubnode(self.dateAndStatusNode)
|
||||||
|
|
||||||
@ -283,18 +279,15 @@ class ChatMessageAnimatedStickerItemNode: ChatMessageItemView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private func removePlaceholder(animated: Bool) {
|
private func removePlaceholder(animated: Bool) {
|
||||||
if let placeholderNode = self.placeholderNode {
|
|
||||||
self.placeholderNode = nil
|
|
||||||
if !animated {
|
if !animated {
|
||||||
placeholderNode.removeFromSupernode()
|
self.placeholderNode.removeFromSupernode()
|
||||||
} else {
|
} else {
|
||||||
placeholderNode.alpha = 0.0
|
self.placeholderNode.alpha = 0.0
|
||||||
placeholderNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2, completion: { [weak placeholderNode] _ in
|
self.placeholderNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2, completion: { [weak self] _ in
|
||||||
placeholderNode?.removeFromSupernode()
|
self?.placeholderNode.removeFromSupernode()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
override func didLoad() {
|
override func didLoad() {
|
||||||
super.didLoad()
|
super.didLoad()
|
||||||
@ -429,11 +422,7 @@ class ChatMessageAnimatedStickerItemNode: ChatMessageItemView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if let animationNode = self.animationNode, !self.animateGreeting {
|
if let animationNode = self.animationNode, !self.animateGreeting {
|
||||||
if let placeholderNode = self.placeholderNode {
|
self.contextSourceNode.contentNode.insertSubnode(animationNode, aboveSubnode: self.placeholderNode)
|
||||||
self.contextSourceNode.contentNode.insertSubnode(animationNode, aboveSubnode: placeholderNode)
|
|
||||||
} else {
|
|
||||||
self.contextSourceNode.contentNode.insertSubnode(animationNode, aboveSubnode: self.imageNode)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -573,9 +562,7 @@ class ChatMessageAnimatedStickerItemNode: ChatMessageItemView {
|
|||||||
var rect = rect
|
var rect = rect
|
||||||
rect.origin.y = containerSize.height - rect.maxY + self.insets.top
|
rect.origin.y = containerSize.height - rect.maxY + self.insets.top
|
||||||
|
|
||||||
if let placeholderNode = self.placeholderNode {
|
self.placeholderNode.updateAbsoluteRect(CGRect(origin: CGPoint(x: rect.minX + self.placeholderNode.frame.minX, y: rect.minY + self.placeholderNode.frame.minY), size: self.placeholderNode.frame.size), within: containerSize)
|
||||||
placeholderNode.updateAbsoluteRect(CGRect(origin: CGPoint(x: rect.minX + placeholderNode.frame.minX, y: rect.minY + placeholderNode.frame.minY), size: placeholderNode.frame.size), within: containerSize)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -969,11 +956,11 @@ class ChatMessageAnimatedStickerItemNode: ChatMessageItemView {
|
|||||||
file = telegramFile
|
file = telegramFile
|
||||||
}
|
}
|
||||||
|
|
||||||
if let file = file, let immediateThumbnailData = file.immediateThumbnailData, let placeholderNode = strongSelf.placeholderNode {
|
if let file = file, let immediateThumbnailData = file.immediateThumbnailData {
|
||||||
let foregroundColor = bubbleVariableColor(variableColor: item.presentationData.theme.theme.chat.message.stickerPlaceholderColor, wallpaper: item.presentationData.theme.wallpaper)
|
let foregroundColor = bubbleVariableColor(variableColor: item.presentationData.theme.theme.chat.message.stickerPlaceholderColor, wallpaper: item.presentationData.theme.wallpaper)
|
||||||
let shimmeringColor = bubbleVariableColor(variableColor: item.presentationData.theme.theme.chat.message.stickerPlaceholderShimmerColor, wallpaper: item.presentationData.theme.wallpaper)
|
let shimmeringColor = bubbleVariableColor(variableColor: item.presentationData.theme.theme.chat.message.stickerPlaceholderShimmerColor, wallpaper: item.presentationData.theme.wallpaper)
|
||||||
placeholderNode.update(backgroundColor: nil, foregroundColor: foregroundColor, shimmeringColor: shimmeringColor, data: immediateThumbnailData, size: animationNodeFrame.size, imageSize: file.dimensions?.cgSize ?? CGSize(width: 512.0, height: 512.0))
|
strongSelf.placeholderNode.update(backgroundColor: nil, foregroundColor: foregroundColor, shimmeringColor: shimmeringColor, data: immediateThumbnailData, size: animationNodeFrame.size, imageSize: file.dimensions?.cgSize ?? CGSize(width: 512.0, height: 512.0))
|
||||||
placeholderNode.frame = animationNodeFrame
|
strongSelf.placeholderNode.frame = animationNodeFrame
|
||||||
}
|
}
|
||||||
|
|
||||||
if let animationNode = strongSelf.animationNode, let parentNode = strongSelf.greetingStickerParentNode, strongSelf.animateGreeting {
|
if let animationNode = strongSelf.animationNode, let parentNode = strongSelf.greetingStickerParentNode, strongSelf.animateGreeting {
|
||||||
|
|||||||
@ -22,7 +22,7 @@ class ChatMessageStickerItemNode: ChatMessageItemView {
|
|||||||
private let contextSourceNode: ContextExtractedContentContainingNode
|
private let contextSourceNode: ContextExtractedContentContainingNode
|
||||||
private let containerNode: ContextControllerSourceNode
|
private let containerNode: ContextControllerSourceNode
|
||||||
let imageNode: TransformImageNode
|
let imageNode: TransformImageNode
|
||||||
private var placeholderNode: StickerShimmerEffectNode?
|
private var placeholderNode: StickerShimmerEffectNode
|
||||||
var textNode: TextNode?
|
var textNode: TextNode?
|
||||||
|
|
||||||
private var swipeToReplyNode: ChatMessageSwipeToReplyNode?
|
private var swipeToReplyNode: ChatMessageSwipeToReplyNode?
|
||||||
@ -53,7 +53,7 @@ class ChatMessageStickerItemNode: ChatMessageItemView {
|
|||||||
self.containerNode = ContextControllerSourceNode()
|
self.containerNode = ContextControllerSourceNode()
|
||||||
self.imageNode = TransformImageNode()
|
self.imageNode = TransformImageNode()
|
||||||
self.placeholderNode = StickerShimmerEffectNode()
|
self.placeholderNode = StickerShimmerEffectNode()
|
||||||
self.placeholderNode?.isUserInteractionEnabled = false
|
self.placeholderNode.isUserInteractionEnabled = false
|
||||||
self.dateAndStatusNode = ChatMessageDateAndStatusNode()
|
self.dateAndStatusNode = ChatMessageDateAndStatusNode()
|
||||||
|
|
||||||
super.init(layerBacked: false)
|
super.init(layerBacked: false)
|
||||||
@ -64,8 +64,8 @@ class ChatMessageStickerItemNode: ChatMessageItemView {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
if image != nil {
|
if image != nil {
|
||||||
if firstTime {
|
if firstTime && !strongSelf.placeholderNode.isEmpty {
|
||||||
strongSelf.imageNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.3, completion: { [weak self] _ in
|
strongSelf.imageNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2, completion: { [weak self] _ in
|
||||||
self?.removePlaceholder(animated: false)
|
self?.removePlaceholder(animated: false)
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
@ -117,9 +117,7 @@ class ChatMessageStickerItemNode: ChatMessageItemView {
|
|||||||
self.containerNode.addSubnode(self.contextSourceNode)
|
self.containerNode.addSubnode(self.contextSourceNode)
|
||||||
self.containerNode.targetNodeForActivationProgress = self.contextSourceNode.contentNode
|
self.containerNode.targetNodeForActivationProgress = self.contextSourceNode.contentNode
|
||||||
self.addSubnode(self.containerNode)
|
self.addSubnode(self.containerNode)
|
||||||
if let placeholderNode = self.placeholderNode {
|
self.contextSourceNode.contentNode.addSubnode(self.placeholderNode)
|
||||||
self.contextSourceNode.contentNode.addSubnode(placeholderNode)
|
|
||||||
}
|
|
||||||
self.contextSourceNode.contentNode.addSubnode(self.imageNode)
|
self.contextSourceNode.contentNode.addSubnode(self.imageNode)
|
||||||
self.contextSourceNode.contentNode.addSubnode(self.dateAndStatusNode)
|
self.contextSourceNode.contentNode.addSubnode(self.dateAndStatusNode)
|
||||||
|
|
||||||
@ -141,18 +139,15 @@ class ChatMessageStickerItemNode: ChatMessageItemView {
|
|||||||
|
|
||||||
|
|
||||||
private func removePlaceholder(animated: Bool) {
|
private func removePlaceholder(animated: Bool) {
|
||||||
if let placeholderNode = self.placeholderNode {
|
|
||||||
self.placeholderNode = nil
|
|
||||||
if !animated {
|
if !animated {
|
||||||
placeholderNode.removeFromSupernode()
|
self.placeholderNode.removeFromSupernode()
|
||||||
} else {
|
} else {
|
||||||
placeholderNode.alpha = 0.0
|
self.placeholderNode.alpha = 0.0
|
||||||
placeholderNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2, completion: { [weak placeholderNode] _ in
|
self.placeholderNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2, completion: { [weak self] _ in
|
||||||
placeholderNode?.removeFromSupernode()
|
self?.placeholderNode.removeFromSupernode()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
override func didLoad() {
|
override func didLoad() {
|
||||||
super.didLoad()
|
super.didLoad()
|
||||||
@ -239,9 +234,7 @@ class ChatMessageStickerItemNode: ChatMessageItemView {
|
|||||||
var rect = rect
|
var rect = rect
|
||||||
rect.origin.y = containerSize.height - rect.maxY + self.insets.top
|
rect.origin.y = containerSize.height - rect.maxY + self.insets.top
|
||||||
|
|
||||||
if let placeholderNode = self.placeholderNode {
|
self.placeholderNode.updateAbsoluteRect(CGRect(origin: CGPoint(x: rect.minX + placeholderNode.frame.minX, y: rect.minY + placeholderNode.frame.minY), size: placeholderNode.frame.size), within: containerSize)
|
||||||
placeholderNode.updateAbsoluteRect(CGRect(origin: CGPoint(x: rect.minX + placeholderNode.frame.minX, y: rect.minY + placeholderNode.frame.minY), size: placeholderNode.frame.size), within: containerSize)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -608,13 +601,13 @@ class ChatMessageStickerItemNode: ChatMessageItemView {
|
|||||||
transition.updateFrame(node: strongSelf.imageNode, frame: updatedImageFrame)
|
transition.updateFrame(node: strongSelf.imageNode, frame: updatedImageFrame)
|
||||||
imageApply()
|
imageApply()
|
||||||
|
|
||||||
if let immediateThumbnailData = telegramFile?.immediateThumbnailData, let placeholderNode = strongSelf.placeholderNode {
|
if let immediateThumbnailData = telegramFile?.immediateThumbnailData {
|
||||||
let foregroundColor = bubbleVariableColor(variableColor: item.presentationData.theme.theme.chat.message.stickerPlaceholderColor, wallpaper: item.presentationData.theme.wallpaper)
|
let foregroundColor = bubbleVariableColor(variableColor: item.presentationData.theme.theme.chat.message.stickerPlaceholderColor, wallpaper: item.presentationData.theme.wallpaper)
|
||||||
let shimmeringColor = bubbleVariableColor(variableColor: item.presentationData.theme.theme.chat.message.stickerPlaceholderShimmerColor, wallpaper: item.presentationData.theme.wallpaper)
|
let shimmeringColor = bubbleVariableColor(variableColor: item.presentationData.theme.theme.chat.message.stickerPlaceholderShimmerColor, wallpaper: item.presentationData.theme.wallpaper)
|
||||||
|
|
||||||
let placeholderFrame = updatedImageFrame.insetBy(dx: innerImageInset, dy: innerImageInset)
|
let placeholderFrame = updatedImageFrame.insetBy(dx: innerImageInset, dy: innerImageInset)
|
||||||
placeholderNode.update(backgroundColor: nil, foregroundColor: foregroundColor, shimmeringColor: shimmeringColor, data: immediateThumbnailData, size: placeholderFrame.size)
|
strongSelf.placeholderNode.update(backgroundColor: nil, foregroundColor: foregroundColor, shimmeringColor: shimmeringColor, data: immediateThumbnailData, size: placeholderFrame.size)
|
||||||
placeholderNode.frame = placeholderFrame
|
strongSelf.placeholderNode.frame = placeholderFrame
|
||||||
}
|
}
|
||||||
|
|
||||||
strongSelf.containerNode.frame = CGRect(origin: CGPoint(), size: layoutSize)
|
strongSelf.containerNode.frame = CGRect(origin: CGPoint(), size: layoutSize)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user