Skip to content

Commit 965a210

Browse files
committed
Adapt to the new async Reducer api
1 parent b5b810e commit 965a210

File tree

8 files changed

+60
-57
lines changed

8 files changed

+60
-57
lines changed

Sources/StreamVideo/Utils/AudioSession/RTCAudioStore/Namespace/Reducers/RTCAudioStore+AVAudioSessionReducer.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ extension RTCAudioStore.Namespace {
2626
file: StaticString,
2727
function: StaticString,
2828
line: UInt
29-
) throws -> State {
29+
) async throws -> State {
3030
guard case let .avAudioSession(action) = action else {
3131
return state
3232
}
@@ -109,7 +109,7 @@ extension RTCAudioStore.Namespace {
109109
}
110110
updatedState.audioSessionConfiguration.overrideOutputAudioPort = value
111111
} else {
112-
updatedState = try setDefaultToSpeaker(
112+
updatedState = try await setDefaultToSpeaker(
113113
state: state,
114114
speakerOn: value == .speaker
115115
)
@@ -182,7 +182,7 @@ extension RTCAudioStore.Namespace {
182182
private func setDefaultToSpeaker(
183183
state: State,
184184
speakerOn: Bool
185-
) throws -> State {
185+
) async throws -> State {
186186
var categoryOptions = source.categoryOptions
187187
let defaultToSpeakerExists = categoryOptions.contains(.defaultToSpeaker)
188188

@@ -204,7 +204,7 @@ extension RTCAudioStore.Namespace {
204204
return state
205205
}
206206

207-
return try reduce(
207+
return try await reduce(
208208
state: state,
209209
action: .avAudioSession(
210210
.setCategoryAndModeAndCategoryOptions(

Sources/StreamVideo/Utils/AudioSession/RTCAudioStore/Namespace/Reducers/RTCAudioStore+CallKitReducer.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ extension RTCAudioStore.Namespace {
2525
file: StaticString,
2626
function: StaticString,
2727
line: UInt
28-
) throws -> State {
28+
) async throws -> State {
2929
guard case let .callKit(action) = action else {
3030
return state
3131
}

Sources/StreamVideo/Utils/AudioSession/RTCAudioStore/Namespace/Reducers/RTCAudioStore+DefaultReducer.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ extension RTCAudioStore.Namespace {
2626
file: StaticString,
2727
function: StaticString,
2828
line: UInt
29-
) throws -> State {
29+
) async throws -> State {
3030
var updatedState = state
3131

3232
switch action {

Sources/StreamVideo/Utils/AudioSession/RTCAudioStore/Namespace/Reducers/RTCAudioStore+WebRTCAudioSessionReducer.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ extension RTCAudioStore.Namespace {
2525
file: StaticString,
2626
function: StaticString,
2727
line: UInt
28-
) throws -> State {
28+
) async throws -> State {
2929
guard case let .webRTCAudioSession(action) = action else {
3030
return state
3131
}

StreamVideoTests/Utils/AudioSession/RTCAudioStore/Namespace/Reducers/RTCAudioStore_AVAudioSessionReducerTests.swift

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ final class RTCAudioStore_AVAudioSessionReducerTests: XCTestCase, @unchecked Sen
2525
super.tearDown()
2626
}
2727

28-
func test_reduce_nonAVAudioSessionAction_returnsUnchangedState() throws {
28+
func test_reduce_nonAVAudioSessionAction_returnsUnchangedState() async throws {
2929
let state = makeState()
3030

31-
let result = try subject.reduce(
31+
let result = try await subject.reduce(
3232
state: state,
3333
action: .setActive(true),
3434
file: #file,
@@ -40,15 +40,15 @@ final class RTCAudioStore_AVAudioSessionReducerTests: XCTestCase, @unchecked Sen
4040
XCTAssertEqual(session.timesCalled(.setConfiguration), 0)
4141
}
4242

43-
func test_reduce_setCategory_updatesSessionAndState() throws {
43+
func test_reduce_setCategory_updatesSessionAndState() async throws {
4444
let state = makeState(
4545
category: .soloAmbient,
4646
mode: .default,
4747
options: []
4848
)
4949
session.category = AVAudioSession.Category.soloAmbient.rawValue
5050

51-
let result = try subject.reduce(
51+
let result = try await subject.reduce(
5252
state: state,
5353
action: .avAudioSession(.setCategory(.playback)),
5454
file: #file,
@@ -60,15 +60,15 @@ final class RTCAudioStore_AVAudioSessionReducerTests: XCTestCase, @unchecked Sen
6060
XCTAssertEqual(session.timesCalled(.setConfiguration), 1)
6161
}
6262

63-
func test_reduce_setCategory_sameValue_skipsSessionWork() throws {
63+
func test_reduce_setCategory_sameValue_skipsSessionWork() async throws {
6464
let state = makeState(
6565
category: .playback,
6666
mode: .default,
6767
options: []
6868
)
6969
session.category = AVAudioSession.Category.playback.rawValue
7070

71-
let result = try subject.reduce(
71+
let result = try await subject.reduce(
7272
state: state,
7373
action: .avAudioSession(.setCategory(.playback)),
7474
file: #file,
@@ -80,28 +80,29 @@ final class RTCAudioStore_AVAudioSessionReducerTests: XCTestCase, @unchecked Sen
8080
XCTAssertEqual(session.timesCalled(.setConfiguration), 0)
8181
}
8282

83-
func test_reduce_setMode_invalidConfiguration_throws() {
83+
func test_reduce_setMode_invalidConfiguration_throws() async {
8484
let state = makeState(
8585
category: .playback,
8686
mode: .default,
8787
options: []
8888
)
8989

90-
XCTAssertThrowsError(
91-
try subject.reduce(
90+
do {
91+
_ = try await subject.reduce(
9292
state: state,
9393
action: .avAudioSession(.setMode(.voiceChat)),
9494
file: #file,
9595
function: #function,
9696
line: #line
9797
)
98-
) { error in
98+
XCTFail()
99+
} catch {
99100
XCTAssertTrue(error is ClientError)
100101
XCTAssertEqual(self.session.timesCalled(.setConfiguration), 0)
101102
}
102103
}
103104

104-
func test_reduce_setCategoryOptions_activeSession_restartsAudioSession() throws {
105+
func test_reduce_setCategoryOptions_activeSession_restartsAudioSession() async throws {
105106
let state = makeState(
106107
category: .playAndRecord,
107108
mode: .voiceChat,
@@ -112,7 +113,7 @@ final class RTCAudioStore_AVAudioSessionReducerTests: XCTestCase, @unchecked Sen
112113
session.categoryOptions = [.allowBluetooth]
113114
session.isActive = true
114115

115-
let result = try subject.reduce(
116+
let result = try await subject.reduce(
116117
state: state,
117118
action: .avAudioSession(.setCategoryOptions([.allowBluetooth, .defaultToSpeaker])),
118119
file: #file,
@@ -126,15 +127,15 @@ final class RTCAudioStore_AVAudioSessionReducerTests: XCTestCase, @unchecked Sen
126127
XCTAssertEqual(session.timesCalled(.setConfiguration), 1)
127128
}
128129

129-
func test_reduce_setOverrideOutputAudioPort_playAndRecord_forwardsToSession() throws {
130+
func test_reduce_setOverrideOutputAudioPort_playAndRecord_forwardsToSession() async throws {
130131
let state = makeState(
131132
category: .playAndRecord,
132133
mode: .voiceChat,
133134
options: []
134135
)
135136
session.category = AVAudioSession.Category.playAndRecord.rawValue
136137

137-
let result = try subject.reduce(
138+
let result = try await subject.reduce(
138139
state: state,
139140
action: .avAudioSession(.setOverrideOutputAudioPort(.speaker)),
140141
file: #file,
@@ -150,7 +151,7 @@ final class RTCAudioStore_AVAudioSessionReducerTests: XCTestCase, @unchecked Sen
150151
XCTAssertEqual(recorded, [.speaker])
151152
}
152153

153-
func test_reduce_setOverrideOutputAudioPort_updatesDefaultToSpeakerOption() throws {
154+
func test_reduce_setOverrideOutputAudioPort_updatesDefaultToSpeakerOption() async throws {
154155
let state = makeState(
155156
category: .playback,
156157
mode: .default,
@@ -159,7 +160,7 @@ final class RTCAudioStore_AVAudioSessionReducerTests: XCTestCase, @unchecked Sen
159160
session.category = AVAudioSession.Category.playback.rawValue
160161
session.categoryOptions = []
161162

162-
let result = try subject.reduce(
163+
let result = try await subject.reduce(
163164
state: state,
164165
action: .avAudioSession(.setOverrideOutputAudioPort(.speaker)),
165166
file: #file,
@@ -171,7 +172,7 @@ final class RTCAudioStore_AVAudioSessionReducerTests: XCTestCase, @unchecked Sen
171172
XCTAssertEqual(session.timesCalled(.setConfiguration), 1)
172173
}
173174

174-
func test_reduce_setOverrideOutputAudioPort_disablingSpeakerRemovesOption() throws {
175+
func test_reduce_setOverrideOutputAudioPort_disablingSpeakerRemovesOption() async throws {
175176
let state = makeState(
176177
category: .playback,
177178
mode: .default,
@@ -180,7 +181,7 @@ final class RTCAudioStore_AVAudioSessionReducerTests: XCTestCase, @unchecked Sen
180181
session.category = AVAudioSession.Category.playback.rawValue
181182
session.categoryOptions = [.defaultToSpeaker]
182183

183-
let result = try subject.reduce(
184+
let result = try await subject.reduce(
184185
state: state,
185186
action: .avAudioSession(.setOverrideOutputAudioPort(.none)),
186187
file: #file,

StreamVideoTests/Utils/AudioSession/RTCAudioStore/Namespace/Reducers/RTCAudioStore_CallKitReducerTests.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@ final class RTCAudioStore_CallKitReducerTests: XCTestCase, @unchecked Sendable {
2323
super.tearDown()
2424
}
2525

26-
func test_reduce_nonCallKitAction_returnsUnchangedState() throws {
26+
func test_reduce_nonCallKitAction_returnsUnchangedState() async throws {
2727
let state = makeState()
2828

29-
let result = try subject.reduce(
29+
let result = try await subject.reduce(
3030
state: state,
3131
action: .setActive(true),
3232
file: #file,
@@ -39,12 +39,12 @@ final class RTCAudioStore_CallKitReducerTests: XCTestCase, @unchecked Sendable {
3939
XCTAssertEqual(session.timesCalled(.audioSessionDidDeactivate), 0)
4040
}
4141

42-
func test_reduce_activate_forwardsToSessionAndUpdatesState() throws {
42+
func test_reduce_activate_forwardsToSessionAndUpdatesState() async throws {
4343
let state = makeState(isActive: false)
4444
session.isActive = true
4545
let avSession = AVAudioSession.sharedInstance()
4646

47-
let result = try subject.reduce(
47+
let result = try await subject.reduce(
4848
state: state,
4949
action: .callKit(.activate(avSession)),
5050
file: #file,
@@ -61,12 +61,12 @@ final class RTCAudioStore_CallKitReducerTests: XCTestCase, @unchecked Sendable {
6161
XCTAssertTrue(result.isActive)
6262
}
6363

64-
func test_reduce_deactivate_forwardsToSessionAndUpdatesState() throws {
64+
func test_reduce_deactivate_forwardsToSessionAndUpdatesState() async throws {
6565
let state = makeState(isActive: true)
6666
session.isActive = false
6767
let avSession = AVAudioSession.sharedInstance()
6868

69-
let result = try subject.reduce(
69+
let result = try await subject.reduce(
7070
state: state,
7171
action: .callKit(.deactivate(avSession)),
7272
file: #file,

StreamVideoTests/Utils/AudioSession/RTCAudioStore/Namespace/Reducers/RTCAudioStore_DefaultReducerTests.swift

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,11 @@ final class RTCAudioStore_DefaultReducerTests: XCTestCase, @unchecked Sendable {
2626

2727
// MARK: - setActive
2828

29-
func test_reduce_setActive_whenStateDiffers_updatesSessionAndState() throws {
29+
func test_reduce_setActive_whenStateDiffers_updatesSessionAndState() async throws {
3030
session.isActive = false
3131
let state = makeState(isActive: false)
3232

33-
let result = try subject.reduce(
33+
let result = try await subject.reduce(
3434
state: state,
3535
action: .setActive(true),
3636
file: #file,
@@ -49,11 +49,11 @@ final class RTCAudioStore_DefaultReducerTests: XCTestCase, @unchecked Sendable {
4949
XCTAssertEqual(setIsActiveCalls, [true])
5050
}
5151

52-
func test_reduce_setActive_whenStateMatches_skipsSessionWork() throws {
52+
func test_reduce_setActive_whenStateMatches_skipsSessionWork() async throws {
5353
session.isActive = false
5454
let state = makeState(isActive: false)
5555

56-
let result = try subject.reduce(
56+
let result = try await subject.reduce(
5757
state: state,
5858
action: .setActive(false),
5959
file: #file,
@@ -70,7 +70,7 @@ final class RTCAudioStore_DefaultReducerTests: XCTestCase, @unchecked Sendable {
7070
XCTAssertTrue((avSession.recordedInputPayload(Bool.self, for: .setIsActive) ?? []).isEmpty)
7171
}
7272

73-
func test_reduce_setActive_whenSessionThrows_propagatesError() {
73+
func test_reduce_setActive_whenSessionThrows_propagatesError() async {
7474
session.isActive = false
7575
let state = makeState(isActive: false)
7676

@@ -79,15 +79,16 @@ final class RTCAudioStore_DefaultReducerTests: XCTestCase, @unchecked Sendable {
7979
}
8080
avSession.stub(for: .setIsActive, with: TestError.stub)
8181

82-
XCTAssertThrowsError(
83-
try subject.reduce(
82+
do {
83+
_ = try await subject.reduce(
8484
state: state,
8585
action: .setActive(true),
8686
file: #file,
8787
function: #function,
8888
line: #line
8989
)
90-
) { error in
90+
XCTFail()
91+
} catch {
9192
XCTAssertTrue(error is TestError)
9293
let calls = self.session.recordedInputPayload(Bool.self, for: .setActive) ?? []
9394
XCTAssertEqual(calls, [true])
@@ -96,7 +97,7 @@ final class RTCAudioStore_DefaultReducerTests: XCTestCase, @unchecked Sendable {
9697

9798
// MARK: - setAudioDeviceModule
9899

99-
func test_reduce_setAudioDeviceModule_nil_resetsRecordingFlags() throws {
100+
func test_reduce_setAudioDeviceModule_nil_resetsRecordingFlags() async throws {
100101
let module = AudioDeviceModule(MockRTCAudioDeviceModule())
101102
let state = makeState(
102103
shouldRecord: true,
@@ -105,7 +106,7 @@ final class RTCAudioStore_DefaultReducerTests: XCTestCase, @unchecked Sendable {
105106
audioDeviceModule: module
106107
)
107108

108-
let result = try subject.reduce(
109+
let result = try await subject.reduce(
109110
state: state,
110111
action: .setAudioDeviceModule(nil),
111112
file: #file,
@@ -119,7 +120,7 @@ final class RTCAudioStore_DefaultReducerTests: XCTestCase, @unchecked Sendable {
119120
XCTAssertFalse(result.isMicrophoneMuted)
120121
}
121122

122-
func test_reduce_setAudioDeviceModule_nonNil_preservesRecordingFlags() throws {
123+
func test_reduce_setAudioDeviceModule_nonNil_preservesRecordingFlags() async throws {
123124
let currentModule = AudioDeviceModule(MockRTCAudioDeviceModule())
124125
let replacement = AudioDeviceModule(MockRTCAudioDeviceModule())
125126
let state = makeState(
@@ -129,7 +130,7 @@ final class RTCAudioStore_DefaultReducerTests: XCTestCase, @unchecked Sendable {
129130
audioDeviceModule: currentModule
130131
)
131132

132-
let result = try subject.reduce(
133+
let result = try await subject.reduce(
133134
state: state,
134135
action: .setAudioDeviceModule(replacement),
135136
file: #file,
@@ -145,10 +146,10 @@ final class RTCAudioStore_DefaultReducerTests: XCTestCase, @unchecked Sendable {
145146

146147
// MARK: - Passthrough actions
147148

148-
func test_reduce_avAudioSessionAction_returnsUnchangedState() throws {
149+
func test_reduce_avAudioSessionAction_returnsUnchangedState() async throws {
149150
let state = makeState()
150151

151-
let result = try subject.reduce(
152+
let result = try await subject.reduce(
152153
state: state,
153154
action: .avAudioSession(.setMode(.voiceChat)),
154155
file: #file,

0 commit comments

Comments
 (0)