diff --git a/submodules/TelegramCallsUI/Sources/VoiceChatController.swift b/submodules/TelegramCallsUI/Sources/VoiceChatController.swift index 186ceb71b0..e77b910214 100644 --- a/submodules/TelegramCallsUI/Sources/VoiceChatController.swift +++ b/submodules/TelegramCallsUI/Sources/VoiceChatController.swift @@ -4502,13 +4502,19 @@ public final class VoiceChatController: ViewController { private func updateVisibility() { let visible = self.appIsActive && self.visibility if self.tileGridNode.isHidden { - self.tileGridNode.visiblity = false + self.tileGridNode.visibility = false } else { - self.tileGridNode.visiblity = isVisible + self.tileGridNode.visibility = visible } + self.mainStageNode.visibility = visible self.listNode.forEachItemNode { itemNode in 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 } } } diff --git a/submodules/TelegramCallsUI/Sources/VoiceChatFullscreenParticipantItem.swift b/submodules/TelegramCallsUI/Sources/VoiceChatFullscreenParticipantItem.swift index 147b8f86fe..350a4344a2 100644 --- a/submodules/TelegramCallsUI/Sources/VoiceChatFullscreenParticipantItem.swift +++ b/submodules/TelegramCallsUI/Sources/VoiceChatFullscreenParticipantItem.swift @@ -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) { guard self.isExtracted != isExtracted, let extractedRect = self.extractedRect, let nonExtractedRect = self.nonExtractedRect, let item = self.item else { return @@ -959,5 +975,7 @@ class VoiceChatFullscreenParticipantItemNode: ItemListRevealOptionsItemNode { var rect = rect rect.origin.y += self.insets.top self.absoluteLocation = (rect, containerSize) + + self.updateIsEnabled() } } diff --git a/submodules/TelegramCallsUI/Sources/VoiceChatMainStageNode.swift b/submodules/TelegramCallsUI/Sources/VoiceChatMainStageNode.swift index 549a221586..90884aecbc 100644 --- a/submodules/TelegramCallsUI/Sources/VoiceChatMainStageNode.swift +++ b/submodules/TelegramCallsUI/Sources/VoiceChatMainStageNode.swift @@ -378,9 +378,18 @@ final class VoiceChatMainStageNode: ASDisplayNode { self.stopScreencast?() } + var visibility = true { + didSet { + if let videoNode = self.currentVideoNode, videoNode.supernode === self { + videoNode.updateIsEnabled(self.visibility) + } + } + } + var animating: Bool { return self.animatingIn || self.animatingOut } + private var animatingIn = false private var animatingOut = false private var appeared = false diff --git a/submodules/TelegramCallsUI/Sources/VoiceChatTileGridNode.swift b/submodules/TelegramCallsUI/Sources/VoiceChatTileGridNode.swift index edd692396f..b9f205035e 100644 --- a/submodules/TelegramCallsUI/Sources/VoiceChatTileGridNode.swift +++ b/submodules/TelegramCallsUI/Sources/VoiceChatTileGridNode.swift @@ -35,10 +35,10 @@ final class VoiceChatTileGridNode: ASDisplayNode { self.clipsToBounds = true } - var visiblity = true { + var visibility = true { didSet { for (_, tileNode) in self.itemNodes { - tileNode.visiblity = self.visiblity + tileNode.visibility = self.visibility } } } @@ -132,7 +132,7 @@ final class VoiceChatTileGridNode: ASDisplayNode { self.addSubnode(addedItemNode) } if let itemNode = itemNode { - itemNode.visiblity = self.visiblity + itemNode.visibility = self.visibility if wasAdded { itemNode.frame = itemFrame if !isFirstTime { @@ -293,7 +293,7 @@ final class VoiceChatTilesGridItemNode: ListViewItemNode { strongSelf.cornersNode.image = decorationCornersImage(top: true, bottom: false, dark: item.getIsExpanded()) tileGridNode = VoiceChatTileGridNode(context: item.context) - tileGridNode.visiblity = strongSelf.gridVisiblity + tileGridNode.visibility = strongSelf.gridVisibility strongSelf.addSubnode(tileGridNode) strongSelf.tileGridNode = tileGridNode } @@ -324,9 +324,9 @@ final class VoiceChatTilesGridItemNode: ListViewItemNode { self.tileGridNode?.updateAbsoluteRect(rect, within: containerSize) } - var gridVisiblity: Bool = true { + var gridVisibility: Bool = true { didSet { - self.tileGridNode?.visiblity = self.gridVisiblity + self.tileGridNode?.visibility = self.gridVisibility } } diff --git a/submodules/TelegramCallsUI/Sources/VoiceChatTileItemNode.swift b/submodules/TelegramCallsUI/Sources/VoiceChatTileItemNode.swift index bd487bffcd..adb9ca1065 100644 --- a/submodules/TelegramCallsUI/Sources/VoiceChatTileItemNode.swift +++ b/submodules/TelegramCallsUI/Sources/VoiceChatTileItemNode.swift @@ -323,7 +323,7 @@ final class VoiceChatTileItemNode: ASDisplayNode { self.updateIsEnabled() } - var visiblity = true { + var visibility = true { didSet { self.updateIsEnabled() } @@ -335,7 +335,7 @@ final class VoiceChatTileItemNode: ASDisplayNode { } let isVisibleInContainer = rect.maxY >= 0.0 && rect.minY <= containerSize.height if let videoNode = self.videoNode, videoNode.supernode === self.videoContainerNode { - videoNode.updateIsEnabled(self.visiblity && isVisibleInContainer) + videoNode.updateIsEnabled(self.visibility && isVisibleInContainer) } }