Various fixes

This commit is contained in:
Ilya Laktyushin 2023-04-13 23:02:05 +04:00
parent 724a303c9c
commit 8d9068d87d

View File

@ -2311,7 +2311,7 @@ final class PeerInfoHeaderNode: ASDisplayNode {
var emojiStatusPackDisposable = MetaDisposable()
var emojiStatusFileAndPackTitle = Promise<(TelegramMediaFile, LoadedStickerPack)?>()
private var validWidth: CGFloat?
private var validLayout: (width: CGFloat, deviceMetrics: DeviceMetrics)?
init(context: AccountContext, avatarInitiallyExpanded: Bool, isOpenedFromChat: Bool, isMediaOnly: Bool, isSettings: Bool, forumTopicThreadId: Int64?, chatLocation: ChatLocation) {
self.context = context
@ -2577,7 +2577,9 @@ final class PeerInfoHeaderNode: ASDisplayNode {
self.peer = peer
self.threadData = threadData
self.avatarListNode.listContainerNode.peer = peer
self.validWidth = width
let isFirstTime = self.validLayout == nil
self.validLayout = (width, deviceMetrics)
let previousPanelStatusData = self.currentPanelStatusData
self.currentPanelStatusData = panelStatusData.0
@ -3628,6 +3630,10 @@ final class PeerInfoHeaderNode: ASDisplayNode {
transition.updateFrame(node: self.separatorNode, frame: separatorFrame)
}
if isFirstTime {
self.updateAvatarMask(transition: .immediate)
}
return resolvedHeight
}
@ -3690,7 +3696,14 @@ final class PeerInfoHeaderNode: ASDisplayNode {
self.avatarListNode.animateAvatarCollapse(transition: transition)
}
if let width = self.validWidth {
self.updateAvatarMask(transition: transition)
}
}
private func updateAvatarMask(transition: ContainedViewLayoutTransition) {
guard let (width, deviceMetrics) = self.validLayout, deviceMetrics.hasDynamicIsland else {
return
}
let maskScale: CGFloat = isAvatarExpanded ? width / 100.0 : 1.0
transition.updateTransformScale(layer: self.avatarListNode.maskNode.layer, scale: maskScale)
transition.updateTransformScale(layer: self.avatarListNode.bottomCoverNode.layer, scale: maskScale)
@ -3700,8 +3713,6 @@ final class PeerInfoHeaderNode: ASDisplayNode {
transition.updateAnchorPoint(layer: self.avatarListNode.maskNode.layer, anchorPoint: maskAnchorPoint)
}
}
}
}
private class DynamicIslandMaskNode: ASDisplayNode {
var animationNode: AnimationNode?