From 3ade624e8765b7d37a93f9184e33b532f83c389c Mon Sep 17 00:00:00 2001 From: Ali <> Date: Tue, 4 Jul 2023 13:13:29 +0200 Subject: [PATCH] Fix audio handling --- .../Sources/StoryContainerScreen.swift | 4 ++-- .../Sources/StoryItemContentComponent.swift | 18 +++++++++++------- .../StoryItemSetContainerComponent.swift | 10 +++++----- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/submodules/TelegramUI/Components/Stories/StoryContainerScreen/Sources/StoryContainerScreen.swift b/submodules/TelegramUI/Components/Stories/StoryContainerScreen/Sources/StoryContainerScreen.swift index 42f41f0fb7..fbd495efd1 100644 --- a/submodules/TelegramUI/Components/Stories/StoryContainerScreen/Sources/StoryContainerScreen.swift +++ b/submodules/TelegramUI/Components/Stories/StoryContainerScreen/Sources/StoryContainerScreen.swift @@ -1005,7 +1005,7 @@ private final class StoryContainerScreenComponent: Component { itemSetContainerInsets.bottom = floorToScreenPixels((availableSize.height - itemSetContainerSize.height) / 2.0) itemSetContainerSafeInsets.bottom = 0.0 } - + let _ = itemSetView.view.update( transition: itemSetTransition, component: AnyComponent(StoryItemSetContainerComponent( @@ -1023,7 +1023,7 @@ private final class StoryContainerScreenComponent: Component { deviceMetrics: environment.deviceMetrics, isProgressPaused: isProgressPaused || i != focusedIndex, isAudioMuted: self.audioMode == .off || (self.audioMode == .ambient && !self.isMuteSwitchOn), - useAmbientMode: self.audioMode == .ambient, + audioMode: self.audioMode, hideUI: (i == focusedIndex && (self.itemSetPanState?.didBegin == false || self.itemSetPinchState != nil)), visibilityFraction: 1.0 - abs(panFraction + cubeAdditionalRotationFraction), isPanning: self.itemSetPanState?.didBegin == true, diff --git a/submodules/TelegramUI/Components/Stories/StoryContainerScreen/Sources/StoryItemContentComponent.swift b/submodules/TelegramUI/Components/Stories/StoryContainerScreen/Sources/StoryItemContentComponent.swift index 5fae3ded54..2fca5db839 100644 --- a/submodules/TelegramUI/Components/Stories/StoryContainerScreen/Sources/StoryItemContentComponent.swift +++ b/submodules/TelegramUI/Components/Stories/StoryContainerScreen/Sources/StoryItemContentComponent.swift @@ -29,13 +29,13 @@ final class StoryItemContentComponent: Component { let context: AccountContext let peer: EnginePeer let item: EngineStoryItem - let useAmbientMode: Bool + let audioMode: StoryContentItem.AudioMode - init(context: AccountContext, peer: EnginePeer, item: EngineStoryItem, useAmbientMode: Bool) { + init(context: AccountContext, peer: EnginePeer, item: EngineStoryItem, audioMode: StoryContentItem.AudioMode) { self.context = context self.peer = peer self.item = item - self.useAmbientMode = useAmbientMode + self.audioMode = audioMode } static func ==(lhs: StoryItemContentComponent, rhs: StoryItemContentComponent) -> Bool { @@ -138,8 +138,8 @@ final class StoryItemContentComponent: Component { imageReference: nil, streamVideo: .story, loopVideo: true, - enableSound: true, - beginWithAmbientSound: component.useAmbientMode, + enableSound: component.audioMode != .off, + beginWithAmbientSound: component.audioMode == .ambient, mixWithOthers: true, useLargeThumbnail: false, autoFetchFullSizeThumbnail: false, @@ -169,12 +169,16 @@ final class StoryItemContentComponent: Component { self.environment?.presentationProgressUpdated(1.0, true) } videoNode.ownsContentNodeUpdated = { [weak self] value in - guard let self else { + guard let self, let component = self.component else { return } if value { self.videoNode?.seek(0.0) - self.videoNode?.playOnceWithSound(playAndRecord: false, actionAtEnd: .stop) + if component.audioMode != .off { + self.videoNode?.playOnceWithSound(playAndRecord: false, actionAtEnd: .stop) + } else { + self.videoNode?.play() + } } } videoNode.canAttachContent = true diff --git a/submodules/TelegramUI/Components/Stories/StoryContainerScreen/Sources/StoryItemSetContainerComponent.swift b/submodules/TelegramUI/Components/Stories/StoryContainerScreen/Sources/StoryItemSetContainerComponent.swift index 10aed94931..0e278b40c7 100644 --- a/submodules/TelegramUI/Components/Stories/StoryContainerScreen/Sources/StoryItemSetContainerComponent.swift +++ b/submodules/TelegramUI/Components/Stories/StoryContainerScreen/Sources/StoryItemSetContainerComponent.swift @@ -86,7 +86,7 @@ public final class StoryItemSetContainerComponent: Component { public let deviceMetrics: DeviceMetrics public let isProgressPaused: Bool public let isAudioMuted: Bool - public let useAmbientMode: Bool + public let audioMode: StoryContentItem.AudioMode public let hideUI: Bool public let visibilityFraction: CGFloat public let isPanning: Bool @@ -118,7 +118,7 @@ public final class StoryItemSetContainerComponent: Component { deviceMetrics: DeviceMetrics, isProgressPaused: Bool, isAudioMuted: Bool, - useAmbientMode: Bool, + audioMode: StoryContentItem.AudioMode, hideUI: Bool, visibilityFraction: CGFloat, isPanning: Bool, @@ -149,7 +149,7 @@ public final class StoryItemSetContainerComponent: Component { self.deviceMetrics = deviceMetrics self.isProgressPaused = isProgressPaused self.isAudioMuted = isAudioMuted - self.useAmbientMode = useAmbientMode + self.audioMode = audioMode self.hideUI = hideUI self.visibilityFraction = visibilityFraction self.isPanning = isPanning @@ -201,7 +201,7 @@ public final class StoryItemSetContainerComponent: Component { if lhs.isAudioMuted != rhs.isAudioMuted { return false } - if lhs.useAmbientMode != rhs.useAmbientMode { + if lhs.audioMode != rhs.audioMode { return false } if lhs.hideUI != rhs.hideUI { @@ -1047,7 +1047,7 @@ public final class StoryItemSetContainerComponent: Component { context: component.context, peer: component.slice.peer, item: item.storyItem, - useAmbientMode: component.useAmbientMode + audioMode: component.audioMode )), environment: { itemEnvironment