Skip to content

Commit 62ff07b

Browse files
committed
Revert "fix: use methodQueue from rn to specify the dispatch queue"
This reverts commit b1ead45.
1 parent 0f00703 commit 62ff07b

File tree

1 file changed

+40
-40
lines changed

1 file changed

+40
-40
lines changed

packages/react-native-sdk/ios/StreamInCallManager.swift

Lines changed: 40 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ enum DefaultAudioDevice {
1919
@objc(StreamInCallManager)
2020
class StreamInCallManager: RCTEventEmitter {
2121

22+
private let audioSessionQueue = DispatchQueue(label: "io.getstream.rn.audioSessionQueue")
23+
2224
private var audioManagerActivated = false
2325
private var callAudioRole: CallAudioRole = .communicator
2426
private var defaultAudioDevice: DefaultAudioDevice = .speaker
@@ -44,55 +46,60 @@ class StreamInCallManager: RCTEventEmitter {
4446

4547
@objc(setAudioRole:)
4648
func setAudioRole(audioRole: String) {
47-
if audioManagerActivated {
48-
log("AudioManager is already activated, audio role cannot be changed.")
49-
return
49+
audioSessionQueue.async { [self] in
50+
if audioManagerActivated {
51+
log("AudioManager is already activated, audio role cannot be changed.")
52+
return
53+
}
54+
self.callAudioRole = audioRole.lowercased() == "listener" ? .listener : .communicator
5055
}
51-
self.callAudioRole = audioRole.lowercased() == "listener" ? .listener : .communicator
52-
5356
}
5457

5558
@objc(setDefaultAudioDeviceEndpointType:)
5659
func setDefaultAudioDeviceEndpointType(endpointType: String) {
57-
if audioManagerActivated {
58-
log("AudioManager is already activated, default audio device cannot be changed.")
59-
return
60+
audioSessionQueue.async { [self] in
61+
if audioManagerActivated {
62+
log("AudioManager is already activated, default audio device cannot be changed.")
63+
return
64+
}
65+
self.defaultAudioDevice = endpointType.lowercased() == "earpiece" ? .earpiece : .speaker
6066
}
61-
self.defaultAudioDevice = endpointType.lowercased() == "earpiece" ? .earpiece : .speaker
62-
6367
}
6468

6569
@objc
6670
func start() {
67-
if audioManagerActivated {
68-
return
71+
audioSessionQueue.async { [self] in
72+
if audioManagerActivated {
73+
return
74+
}
75+
let session = AVAudioSession.sharedInstance()
76+
previousAudioSessionState = AudioSessionState(
77+
category: session.category,
78+
mode: session.mode,
79+
options: session.categoryOptions
80+
)
81+
configureAudioSession()
82+
audioManagerActivated = true
6983
}
70-
let session = AVAudioSession.sharedInstance()
71-
previousAudioSessionState = AudioSessionState(
72-
category: session.category,
73-
mode: session.mode,
74-
options: session.categoryOptions
75-
)
76-
configureAudioSession()
77-
audioManagerActivated = true
7884
}
7985

8086
@objc
8187
func stop() {
82-
if !audioManagerActivated {
83-
return
84-
}
85-
if let prev = previousAudioSessionState {
86-
let session = AVAudioSession.sharedInstance()
87-
do {
88-
try session.setCategory(prev.category, mode: prev.mode, options: prev.options)
89-
} catch {
90-
log("Error restoring previous audio session: \(error.localizedDescription)")
88+
audioSessionQueue.async { [self] in
89+
if !audioManagerActivated {
90+
return
91+
}
92+
if let prev = previousAudioSessionState {
93+
let session = AVAudioSession.sharedInstance()
94+
do {
95+
try session.setCategory(prev.category, mode: prev.mode, options: prev.options)
96+
} catch {
97+
log("Error restoring previous audio session: \(error.localizedDescription)")
98+
}
99+
previousAudioSessionState = nil
91100
}
92-
previousAudioSessionState = nil
101+
audioManagerActivated = false
93102
}
94-
audioManagerActivated = false
95-
96103
}
97104

98105
private func configureAudioSession() {
@@ -135,9 +142,6 @@ class StreamInCallManager: RCTEventEmitter {
135142

136143
if currentCategory != intendedCategory.rawValue || currentMode != intendedMode.rawValue || currentOptions != intendedOptions || !currentIsActive {
137144
session.lockForConfiguration()
138-
defer {
139-
session.unlockForConfiguration()
140-
}
141145
do {
142146
try session.setCategory(intendedCategory, mode: intendedMode, options: intendedOptions)
143147
try session.setActive(true)
@@ -152,6 +156,7 @@ class StreamInCallManager: RCTEventEmitter {
152156
log("configureAudioSession: Error setting mode: \(error.localizedDescription)")
153157
}
154158
}
159+
session.unlockForConfiguration()
155160
} else {
156161
log("configureAudioSession: no change needed")
157162
}
@@ -290,11 +295,6 @@ class StreamInCallManager: RCTEventEmitter {
290295
}
291296
}
292297

293-
@objc
294-
func methodQueue() -> DispatchQueue {
295-
return DispatchQueue(label: "io.getstream.rn.audioSessionQueue")
296-
}
297-
298298
// MARK: - Logging Helper
299299
private func log(_ message: String) {
300300
NSLog("InCallManager: %@", message)

0 commit comments

Comments
 (0)