Merge commit 'bae050aabf5dc12bcae71f7bbbdc1f87e3f2c296'

This commit is contained in:
Ali 2021-06-11 17:05:24 +04:00
commit 03a030942f
5 changed files with 44 additions and 11 deletions

View File

@ -4502,13 +4502,19 @@ public final class VoiceChatController: ViewController {
private func updateVisibility() { private func updateVisibility() {
let visible = self.appIsActive && self.visibility let visible = self.appIsActive && self.visibility
if self.tileGridNode.isHidden { if self.tileGridNode.isHidden {
self.tileGridNode.visiblity = false self.tileGridNode.visibility = false
} else { } else {
self.tileGridNode.visiblity = isVisible self.tileGridNode.visibility = visible
} }
self.mainStageNode.visibility = visible
self.listNode.forEachItemNode { itemNode in self.listNode.forEachItemNode { itemNode in
if let itemNode = itemNode as? VoiceChatTilesGridItemNode { if let itemNode = itemNode as? VoiceChatTilesGridItemNode {
itemNode.gridVisiblity = visible itemNode.gridVisibility = visible
}
}
self.fullscreenListNode.forEachItemNode { itemNode in
if let itemNode = itemNode as? VoiceChatFullscreenParticipantItemNode {
itemNode.gridVisibility = visible
} }
} }
} }

View File

@ -335,6 +335,22 @@ class VoiceChatFullscreenParticipantItemNode: ItemListRevealOptionsItemNode {
} }
} }
var gridVisibility = true {
didSet {
self.updateIsEnabled()
}
}
func updateIsEnabled() {
guard let (rect, containerSize) = self.absoluteLocation else {
return
}
let isVisibleInContainer = rect.maxY >= 0.0 && rect.minY <= containerSize.height
if let videoNode = self.videoNode, videoNode.supernode === self.videoContainerNode {
videoNode.updateIsEnabled(self.gridVisibility && isVisibleInContainer)
}
}
private func updateIsExtracted(_ isExtracted: Bool, transition: ContainedViewLayoutTransition) { private func updateIsExtracted(_ isExtracted: Bool, transition: ContainedViewLayoutTransition) {
guard self.isExtracted != isExtracted, let extractedRect = self.extractedRect, let nonExtractedRect = self.nonExtractedRect, let item = self.item else { guard self.isExtracted != isExtracted, let extractedRect = self.extractedRect, let nonExtractedRect = self.nonExtractedRect, let item = self.item else {
return return
@ -959,5 +975,7 @@ class VoiceChatFullscreenParticipantItemNode: ItemListRevealOptionsItemNode {
var rect = rect var rect = rect
rect.origin.y += self.insets.top rect.origin.y += self.insets.top
self.absoluteLocation = (rect, containerSize) self.absoluteLocation = (rect, containerSize)
self.updateIsEnabled()
} }
} }

View File

@ -378,9 +378,18 @@ final class VoiceChatMainStageNode: ASDisplayNode {
self.stopScreencast?() self.stopScreencast?()
} }
var visibility = true {
didSet {
if let videoNode = self.currentVideoNode, videoNode.supernode === self {
videoNode.updateIsEnabled(self.visibility)
}
}
}
var animating: Bool { var animating: Bool {
return self.animatingIn || self.animatingOut return self.animatingIn || self.animatingOut
} }
private var animatingIn = false private var animatingIn = false
private var animatingOut = false private var animatingOut = false
private var appeared = false private var appeared = false

View File

@ -35,10 +35,10 @@ final class VoiceChatTileGridNode: ASDisplayNode {
self.clipsToBounds = true self.clipsToBounds = true
} }
var visiblity = true { var visibility = true {
didSet { didSet {
for (_, tileNode) in self.itemNodes { for (_, tileNode) in self.itemNodes {
tileNode.visiblity = self.visiblity tileNode.visibility = self.visibility
} }
} }
} }
@ -132,7 +132,7 @@ final class VoiceChatTileGridNode: ASDisplayNode {
self.addSubnode(addedItemNode) self.addSubnode(addedItemNode)
} }
if let itemNode = itemNode { if let itemNode = itemNode {
itemNode.visiblity = self.visiblity itemNode.visibility = self.visibility
if wasAdded { if wasAdded {
itemNode.frame = itemFrame itemNode.frame = itemFrame
if !isFirstTime { if !isFirstTime {
@ -293,7 +293,7 @@ final class VoiceChatTilesGridItemNode: ListViewItemNode {
strongSelf.cornersNode.image = decorationCornersImage(top: true, bottom: false, dark: item.getIsExpanded()) strongSelf.cornersNode.image = decorationCornersImage(top: true, bottom: false, dark: item.getIsExpanded())
tileGridNode = VoiceChatTileGridNode(context: item.context) tileGridNode = VoiceChatTileGridNode(context: item.context)
tileGridNode.visiblity = strongSelf.gridVisiblity tileGridNode.visibility = strongSelf.gridVisibility
strongSelf.addSubnode(tileGridNode) strongSelf.addSubnode(tileGridNode)
strongSelf.tileGridNode = tileGridNode strongSelf.tileGridNode = tileGridNode
} }
@ -324,9 +324,9 @@ final class VoiceChatTilesGridItemNode: ListViewItemNode {
self.tileGridNode?.updateAbsoluteRect(rect, within: containerSize) self.tileGridNode?.updateAbsoluteRect(rect, within: containerSize)
} }
var gridVisiblity: Bool = true { var gridVisibility: Bool = true {
didSet { didSet {
self.tileGridNode?.visiblity = self.gridVisiblity self.tileGridNode?.visibility = self.gridVisibility
} }
} }

View File

@ -323,7 +323,7 @@ final class VoiceChatTileItemNode: ASDisplayNode {
self.updateIsEnabled() self.updateIsEnabled()
} }
var visiblity = true { var visibility = true {
didSet { didSet {
self.updateIsEnabled() self.updateIsEnabled()
} }
@ -335,7 +335,7 @@ final class VoiceChatTileItemNode: ASDisplayNode {
} }
let isVisibleInContainer = rect.maxY >= 0.0 && rect.minY <= containerSize.height let isVisibleInContainer = rect.maxY >= 0.0 && rect.minY <= containerSize.height
if let videoNode = self.videoNode, videoNode.supernode === self.videoContainerNode { if let videoNode = self.videoNode, videoNode.supernode === self.videoContainerNode {
videoNode.updateIsEnabled(self.visiblity && isVisibleInContainer) videoNode.updateIsEnabled(self.visibility && isVisibleInContainer)
} }
} }