Skip to content

Commit 06aec4b

Browse files
authored
[Enhancement]HiFi feature implementation (#975)
1 parent 8dd7ded commit 06aec4b

File tree

146 files changed

+8992
-3077
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

146 files changed

+8992
-3077
lines changed

.vscode/tasks.json

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,6 @@
11
{
22
"version": "2.0.0",
33
"tasks": [
4-
{
5-
"type": "shell",
6-
"label": "Fastlane: Build SwiftUI Demo",
7-
"command": "bundle exec fastlane build_swiftui_demo",
8-
"group": {
9-
"kind": "build",
10-
"isDefault": true
11-
}
12-
},
13-
{
14-
"type": "shell",
15-
"label": "Fastlane: Test StreamVideo",
16-
"command": "bundle exec fastlane test",
17-
"group": {
18-
"kind": "test",
19-
"isDefault": true
20-
}
21-
},
4+
225
]
236
}

DemoApp/Sources/Components/AppEnvironment.swift

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -554,14 +554,16 @@ extension AppEnvironment {
554554
extension AppEnvironment {
555555

556556
enum AudioSessionPolicyDebugConfiguration: Hashable, Debuggable, Sendable {
557-
case `default`, ownCapabilities
557+
case `default`, ownCapabilities, livestream
558558

559559
var title: String {
560560
switch self {
561561
case .default:
562562
return "Default"
563563
case .ownCapabilities:
564564
return "OwnCapabilities"
565+
case .livestream:
566+
return "Livestream"
565567
}
566568
}
567569

@@ -571,6 +573,8 @@ extension AppEnvironment {
571573
return DefaultAudioSessionPolicy()
572574
case .ownCapabilities:
573575
return OwnCapabilitiesAudioSessionPolicy()
576+
case .livestream:
577+
return LivestreamAudioSessionPolicy()
574578
}
575579
}
576580
}
@@ -616,7 +620,7 @@ extension AppEnvironment {
616620
}
617621

618622
static var proximityPolicies: Set<ProximityPolicyDebugConfiguration> = {
619-
[.speaker, .video]
623+
[.video, .speaker]
620624
}()
621625
}
622626

@@ -634,6 +638,19 @@ extension ClientCapability: Debuggable {
634638
}
635639
}
636640

641+
extension Logger.WebRTC.LogMode: Debuggable {
642+
var title: String {
643+
switch self {
644+
case .none:
645+
return "None"
646+
case .validFilesOnly:
647+
return "Valid Files only"
648+
case .all:
649+
return "All"
650+
}
651+
}
652+
}
653+
637654
extension String: Debuggable {
638655
var title: String {
639656
self

DemoApp/Sources/Components/MemoryLogDestination/LogQueue.swift

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,12 @@ import Foundation
66
import StreamVideo
77

88
enum LogQueue {
9-
static let queue: Queue<LogDetails> = .init(maxCount: 3000)
9+
#if DEBUG
10+
private static let queueCapaity = 10000
11+
#else
12+
private static let queueCapaity = 1000
13+
#endif
14+
static let queue: Queue<LogDetails> = .init(maxCount: queueCapaity)
1015

1116
static func insert(_ element: LogDetails) { queue.insert(element) }
1217

DemoApp/Sources/Views/Login/DebugMenu.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ struct DebugMenu: View {
231231
}
232232

233233
makeMenu(
234-
for: [.default, .ownCapabilities],
234+
for: [.default, .ownCapabilities, .livestream],
235235
currentValue: audioSessionPolicy,
236236
label: "AudioSession policy"
237237
) { self.audioSessionPolicy = $0 }
@@ -302,10 +302,10 @@ struct DebugMenu: View {
302302
) { LogConfig.level = $0 }
303303

304304
makeMenu(
305-
for: [true, false],
306-
currentValue: LogConfig.webRTCLogsEnabled,
305+
for: [.none, .validFilesOnly, .all],
306+
currentValue: Logger.WebRTC.mode,
307307
label: "WebRTC Logs"
308-
) { LogConfig.webRTCLogsEnabled = $0 }
308+
) { Logger.WebRTC.mode = $0 }
309309

310310
Button {
311311
isLogsViewerVisible = true

Package.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ let package = Package(
2323
],
2424
dependencies: [
2525
.package(url: "https://github.com/apple/swift-protobuf.git", exact: "1.30.0"),
26-
.package(url: "https://github.com/GetStream/stream-video-swift-webrtc.git", exact: "137.0.43")
26+
.package(url: "https://github.com/GetStream/stream-video-swift-webrtc.git", exact: "137.0.52")
2727
],
2828
targets: [
2929
.target(

Sources/StreamVideo/Call.swift

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -174,11 +174,11 @@ public class Call: @unchecked Sendable, WSEventsSubscriber {
174174
currentStage.id == .joining {
175175
return stateMachine
176176
.publisher
177-
.tryCompactMap {
178-
switch $0.id {
177+
.tryMap { (stage) -> JoinCallResponse? in
178+
switch stage.id {
179179
case .joined:
180180
guard
181-
let stage = $0 as? Call.StateMachine.Stage.JoinedStage
181+
let stage = stage as? Call.StateMachine.Stage.JoinedStage
182182
else {
183183
throw ClientError()
184184
}
@@ -190,7 +190,7 @@ public class Call: @unchecked Sendable, WSEventsSubscriber {
190190
}
191191
case .error:
192192
guard
193-
let stage = $0 as? Call.StateMachine.Stage.ErrorStage
193+
let stage = stage as? Call.StateMachine.Stage.ErrorStage
194194
else {
195195
throw ClientError()
196196
}
@@ -201,7 +201,7 @@ public class Call: @unchecked Sendable, WSEventsSubscriber {
201201
}
202202
.eraseToAnyPublisher()
203203
} else {
204-
let deliverySubject = PassthroughSubject<JoinCallResponse, Error>()
204+
let deliverySubject = CurrentValueSubject<JoinCallResponse?, Error>(nil)
205205
transitionHandler(
206206
.joining(
207207
self,
@@ -224,8 +224,11 @@ public class Call: @unchecked Sendable, WSEventsSubscriber {
224224

225225
if let joinResponse = result as? JoinCallResponse {
226226
return joinResponse
227-
} else if let publisher = result as? AnyPublisher<JoinCallResponse, Error> {
228-
return try await publisher.nextValue(timeout: CallConfiguration.timeout.join)
227+
} else if let publisher = result as? AnyPublisher<JoinCallResponse?, Error> {
228+
let result = try await publisher
229+
.compactMap { $0 }
230+
.nextValue(timeout: CallConfiguration.timeout.join)
231+
return result
229232
} else {
230233
throw ClientError("Call was unable to join call.")
231234
}

0 commit comments

Comments
 (0)