Fix audio handling

This commit is contained in:
Ali 2023-07-04 13:13:29 +02:00
parent 624d0d49d5
commit 3ade624e87
3 changed files with 18 additions and 14 deletions

View File

@ -1023,7 +1023,7 @@ private final class StoryContainerScreenComponent: Component {
deviceMetrics: environment.deviceMetrics, deviceMetrics: environment.deviceMetrics,
isProgressPaused: isProgressPaused || i != focusedIndex, isProgressPaused: isProgressPaused || i != focusedIndex,
isAudioMuted: self.audioMode == .off || (self.audioMode == .ambient && !self.isMuteSwitchOn), 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)), hideUI: (i == focusedIndex && (self.itemSetPanState?.didBegin == false || self.itemSetPinchState != nil)),
visibilityFraction: 1.0 - abs(panFraction + cubeAdditionalRotationFraction), visibilityFraction: 1.0 - abs(panFraction + cubeAdditionalRotationFraction),
isPanning: self.itemSetPanState?.didBegin == true, isPanning: self.itemSetPanState?.didBegin == true,

View File

@ -29,13 +29,13 @@ final class StoryItemContentComponent: Component {
let context: AccountContext let context: AccountContext
let peer: EnginePeer let peer: EnginePeer
let item: EngineStoryItem 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.context = context
self.peer = peer self.peer = peer
self.item = item self.item = item
self.useAmbientMode = useAmbientMode self.audioMode = audioMode
} }
static func ==(lhs: StoryItemContentComponent, rhs: StoryItemContentComponent) -> Bool { static func ==(lhs: StoryItemContentComponent, rhs: StoryItemContentComponent) -> Bool {
@ -138,8 +138,8 @@ final class StoryItemContentComponent: Component {
imageReference: nil, imageReference: nil,
streamVideo: .story, streamVideo: .story,
loopVideo: true, loopVideo: true,
enableSound: true, enableSound: component.audioMode != .off,
beginWithAmbientSound: component.useAmbientMode, beginWithAmbientSound: component.audioMode == .ambient,
mixWithOthers: true, mixWithOthers: true,
useLargeThumbnail: false, useLargeThumbnail: false,
autoFetchFullSizeThumbnail: false, autoFetchFullSizeThumbnail: false,
@ -169,12 +169,16 @@ final class StoryItemContentComponent: Component {
self.environment?.presentationProgressUpdated(1.0, true) self.environment?.presentationProgressUpdated(1.0, true)
} }
videoNode.ownsContentNodeUpdated = { [weak self] value in videoNode.ownsContentNodeUpdated = { [weak self] value in
guard let self else { guard let self, let component = self.component else {
return return
} }
if value { if value {
self.videoNode?.seek(0.0) 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 videoNode.canAttachContent = true

View File

@ -86,7 +86,7 @@ public final class StoryItemSetContainerComponent: Component {
public let deviceMetrics: DeviceMetrics public let deviceMetrics: DeviceMetrics
public let isProgressPaused: Bool public let isProgressPaused: Bool
public let isAudioMuted: Bool public let isAudioMuted: Bool
public let useAmbientMode: Bool public let audioMode: StoryContentItem.AudioMode
public let hideUI: Bool public let hideUI: Bool
public let visibilityFraction: CGFloat public let visibilityFraction: CGFloat
public let isPanning: Bool public let isPanning: Bool
@ -118,7 +118,7 @@ public final class StoryItemSetContainerComponent: Component {
deviceMetrics: DeviceMetrics, deviceMetrics: DeviceMetrics,
isProgressPaused: Bool, isProgressPaused: Bool,
isAudioMuted: Bool, isAudioMuted: Bool,
useAmbientMode: Bool, audioMode: StoryContentItem.AudioMode,
hideUI: Bool, hideUI: Bool,
visibilityFraction: CGFloat, visibilityFraction: CGFloat,
isPanning: Bool, isPanning: Bool,
@ -149,7 +149,7 @@ public final class StoryItemSetContainerComponent: Component {
self.deviceMetrics = deviceMetrics self.deviceMetrics = deviceMetrics
self.isProgressPaused = isProgressPaused self.isProgressPaused = isProgressPaused
self.isAudioMuted = isAudioMuted self.isAudioMuted = isAudioMuted
self.useAmbientMode = useAmbientMode self.audioMode = audioMode
self.hideUI = hideUI self.hideUI = hideUI
self.visibilityFraction = visibilityFraction self.visibilityFraction = visibilityFraction
self.isPanning = isPanning self.isPanning = isPanning
@ -201,7 +201,7 @@ public final class StoryItemSetContainerComponent: Component {
if lhs.isAudioMuted != rhs.isAudioMuted { if lhs.isAudioMuted != rhs.isAudioMuted {
return false return false
} }
if lhs.useAmbientMode != rhs.useAmbientMode { if lhs.audioMode != rhs.audioMode {
return false return false
} }
if lhs.hideUI != rhs.hideUI { if lhs.hideUI != rhs.hideUI {
@ -1047,7 +1047,7 @@ public final class StoryItemSetContainerComponent: Component {
context: component.context, context: component.context,
peer: component.slice.peer, peer: component.slice.peer,
item: item.storyItem, item: item.storyItem,
useAmbientMode: component.useAmbientMode audioMode: component.audioMode
)), )),
environment: { environment: {
itemEnvironment itemEnvironment