@stream-io/video-react-native-sdk 1.27.4 → 1.28.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -0
- package/android/src/main/java/com/streamvideo/reactnative/audio/AudioDeviceManager.kt +19 -11
- package/android/src/main/java/com/streamvideo/reactnative/audio/utils/AudioFocusUtil.kt +23 -9
- package/android/src/main/java/com/streamvideo/reactnative/callmanager/StreamInCallManagerModule.kt +48 -14
- package/dist/commonjs/index.js +2 -0
- package/dist/commonjs/index.js.map +1 -1
- package/dist/commonjs/modules/call-manager/CallManager.js +5 -0
- package/dist/commonjs/modules/call-manager/CallManager.js.map +1 -1
- package/dist/commonjs/utils/internal/registerSDKGlobals.js +34 -0
- package/dist/commonjs/utils/internal/registerSDKGlobals.js.map +1 -0
- package/dist/commonjs/utils/push/setupIosCallKeepEvents.js +44 -0
- package/dist/commonjs/utils/push/setupIosCallKeepEvents.js.map +1 -1
- package/dist/commonjs/version.js +1 -1
- package/dist/module/index.js +2 -0
- package/dist/module/index.js.map +1 -1
- package/dist/module/modules/call-manager/CallManager.js +5 -0
- package/dist/module/modules/call-manager/CallManager.js.map +1 -1
- package/dist/module/utils/internal/registerSDKGlobals.js +28 -0
- package/dist/module/utils/internal/registerSDKGlobals.js.map +1 -0
- package/dist/module/utils/push/setupIosCallKeepEvents.js +44 -0
- package/dist/module/utils/push/setupIosCallKeepEvents.js.map +1 -1
- package/dist/module/version.js +1 -1
- package/dist/typescript/index.d.ts.map +1 -1
- package/dist/typescript/modules/call-manager/CallManager.d.ts +2 -0
- package/dist/typescript/modules/call-manager/CallManager.d.ts.map +1 -1
- package/dist/typescript/modules/call-manager/types.d.ts +1 -0
- package/dist/typescript/modules/call-manager/types.d.ts.map +1 -1
- package/dist/typescript/utils/internal/registerSDKGlobals.d.ts +2 -0
- package/dist/typescript/utils/internal/registerSDKGlobals.d.ts.map +1 -0
- package/dist/typescript/utils/push/setupIosCallKeepEvents.d.ts.map +1 -1
- package/dist/typescript/version.d.ts +1 -1
- package/ios/StreamInCallManager.m +4 -0
- package/ios/StreamInCallManager.swift +213 -88
- package/package.json +7 -7
- package/src/index.ts +2 -0
- package/src/modules/call-manager/CallManager.ts +5 -0
- package/src/modules/call-manager/native-module.d.ts +11 -0
- package/src/modules/call-manager/types.ts +1 -0
- package/src/utils/internal/registerSDKGlobals.ts +30 -0
- package/src/utils/push/setupIosCallKeepEvents.ts +49 -0
- package/src/version.ts +1 -1
- package/android/src/main/java/com/streamvideo/reactnative/audio/utils/AudioSetupStoreUtil.kt +0 -41
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,31 @@
|
|
|
2
2
|
|
|
3
3
|
This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
|
|
4
4
|
|
|
5
|
+
## [1.28.1](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-native-sdk-1.28.0...@stream-io/video-react-native-sdk-1.28.1) (2026-01-26)
|
|
6
|
+
|
|
7
|
+
### Dependency Updates
|
|
8
|
+
|
|
9
|
+
- `@stream-io/video-client` updated to version `1.41.1`
|
|
10
|
+
- `@stream-io/video-react-bindings` updated to version `1.13.1`
|
|
11
|
+
|
|
12
|
+
### Bug Fixes
|
|
13
|
+
|
|
14
|
+
- always forward callkit audio events to webrtc ([#2089](https://github.com/GetStream/stream-video-js/issues/2089)) ([767041a](https://github.com/GetStream/stream-video-js/commit/767041a54dfaaa87145cbdc931a336dbe4fee821))
|
|
15
|
+
- use multiple settings to determine default audio device RN-338 ([#2096](https://github.com/GetStream/stream-video-js/issues/2096)) ([19cf136](https://github.com/GetStream/stream-video-js/commit/19cf13651112b647903587a84a70a555fc68fc9c)), closes [2BSettingsPriority.swift#L19](https://github.com/GetStream/2BSettingsPriority.swift/issues/L19)
|
|
16
|
+
|
|
17
|
+
## [1.28.0](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-native-sdk-1.27.4...@stream-io/video-react-native-sdk-1.28.0) (2026-01-20)
|
|
18
|
+
|
|
19
|
+
### Dependency Updates
|
|
20
|
+
|
|
21
|
+
- `@stream-io/noise-cancellation-react-native` updated to version `0.5.0`
|
|
22
|
+
- `@stream-io/video-filters-react-native` updated to version `0.10.0`
|
|
23
|
+
- `@stream-io/video-client` updated to version `1.41.0`
|
|
24
|
+
- `@stream-io/video-react-bindings` updated to version `1.13.0`
|
|
25
|
+
|
|
26
|
+
### Features
|
|
27
|
+
|
|
28
|
+
- stereo audio output support RN-332 ([#2038](https://github.com/GetStream/stream-video-js/issues/2038)) ([2938037](https://github.com/GetStream/stream-video-js/commit/2938037d18e70ccf112a089eb3ec44cb034aed1d))
|
|
29
|
+
|
|
5
30
|
## [1.27.4](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-native-sdk-1.27.3...@stream-io/video-react-native-sdk-1.27.4) (2026-01-16)
|
|
6
31
|
|
|
7
32
|
### Dependency Updates
|
|
@@ -31,7 +31,6 @@ import com.streamvideo.reactnative.audio.utils.AudioDeviceEndpointUtils
|
|
|
31
31
|
import com.streamvideo.reactnative.audio.utils.AudioFocusUtil
|
|
32
32
|
import com.streamvideo.reactnative.audio.utils.AudioManagerUtil
|
|
33
33
|
import com.streamvideo.reactnative.audio.utils.AudioManagerUtil.Companion.getAvailableAudioDevices
|
|
34
|
-
import com.streamvideo.reactnative.audio.utils.AudioSetupStoreUtil
|
|
35
34
|
import com.streamvideo.reactnative.audio.utils.CallAudioRole
|
|
36
35
|
import com.streamvideo.reactnative.callmanager.ProximityManager
|
|
37
36
|
import com.streamvideo.reactnative.callmanager.StreamInCallManagerModule
|
|
@@ -90,6 +89,8 @@ class AudioDeviceManager(
|
|
|
90
89
|
@EndpointType
|
|
91
90
|
private var userSelectedAudioDevice: Int? = null
|
|
92
91
|
|
|
92
|
+
var enableStereo: Boolean = false
|
|
93
|
+
|
|
93
94
|
private val mAudioManager =
|
|
94
95
|
mReactContext.getSystemService(Context.AUDIO_SERVICE) as AudioManager
|
|
95
96
|
|
|
@@ -99,7 +100,6 @@ class AudioDeviceManager(
|
|
|
99
100
|
private var audioFocusLost = false
|
|
100
101
|
|
|
101
102
|
private var audioFocusUtil = AudioFocusUtil(mAudioManager, this)
|
|
102
|
-
private var audioSetupStoreUtil = AudioSetupStoreUtil(mReactContext, mAudioManager, this)
|
|
103
103
|
|
|
104
104
|
var callAudioRole: CallAudioRole = CallAudioRole.Communicator
|
|
105
105
|
|
|
@@ -113,33 +113,38 @@ class AudioDeviceManager(
|
|
|
113
113
|
mAudioManager.registerAudioDeviceCallback(this, null)
|
|
114
114
|
}
|
|
115
115
|
|
|
116
|
+
fun setup() {
|
|
117
|
+
if (callAudioRole == CallAudioRole.Communicator) {
|
|
118
|
+
mAudioManager.mode = AudioManager.MODE_IN_COMMUNICATION
|
|
119
|
+
} else {
|
|
120
|
+
// Audio routing is handled automatically by the system in normal media mode
|
|
121
|
+
// and bluetooth microphones may not work on some devices.
|
|
122
|
+
mAudioManager.mode = AudioManager.MODE_NORMAL
|
|
123
|
+
}
|
|
124
|
+
audioFocusUtil.setup(callAudioRole, mReactContext)
|
|
125
|
+
}
|
|
126
|
+
|
|
116
127
|
fun start(activity: Activity) {
|
|
117
128
|
runInAudioThread {
|
|
129
|
+
setup()
|
|
118
130
|
userSelectedAudioDevice = null
|
|
119
131
|
selectedAudioDeviceEndpoint = null
|
|
120
|
-
audioSetupStoreUtil.storeOriginalAudioSetup()
|
|
121
132
|
if (callAudioRole == CallAudioRole.Communicator) {
|
|
122
133
|
// Audio routing is manually controlled by the SDK in communication media mode
|
|
123
134
|
// and local microphone can be published
|
|
124
|
-
mAudioManager.mode = AudioManager.MODE_IN_COMMUNICATION
|
|
125
135
|
activity.volumeControlStream = AudioManager.STREAM_VOICE_CALL
|
|
126
136
|
bluetoothManager.start()
|
|
127
137
|
mAudioManager.registerAudioDeviceCallback(this, null)
|
|
128
138
|
updateAudioDeviceState()
|
|
129
139
|
proximityManager.start()
|
|
130
140
|
} else {
|
|
131
|
-
// Audio routing is handled automatically by the system in normal media mode
|
|
132
|
-
// and bluetooth microphones may not work on some devices.
|
|
133
|
-
mAudioManager.mode = AudioManager.MODE_NORMAL
|
|
134
141
|
activity.volumeControlStream = AudioManager.USE_DEFAULT_STREAM_TYPE
|
|
135
142
|
}
|
|
136
|
-
|
|
137
|
-
audioSetupStoreUtil.storeOriginalAudioSetup()
|
|
138
143
|
audioFocusUtil.requestFocus(callAudioRole, mReactContext)
|
|
139
144
|
}
|
|
140
145
|
}
|
|
141
146
|
|
|
142
|
-
fun stop() {
|
|
147
|
+
fun stop(activity: Activity) {
|
|
143
148
|
runInAudioThread {
|
|
144
149
|
if (callAudioRole == CallAudioRole.Communicator) {
|
|
145
150
|
if (Build.VERSION.SDK_INT >= 31) {
|
|
@@ -147,10 +152,13 @@ class AudioDeviceManager(
|
|
|
147
152
|
} else {
|
|
148
153
|
mAudioManager.setSpeakerphoneOn(false)
|
|
149
154
|
}
|
|
155
|
+
callAudioRole = CallAudioRole.Communicator
|
|
156
|
+
enableStereo = false
|
|
157
|
+
defaultAudioDevice = AudioDeviceEndpoint.TYPE_SPEAKER
|
|
150
158
|
bluetoothManager.stop()
|
|
151
159
|
proximityManager.stop()
|
|
152
160
|
}
|
|
153
|
-
|
|
161
|
+
activity.volumeControlStream = AudioManager.USE_DEFAULT_STREAM_TYPE
|
|
154
162
|
audioFocusUtil.abandonFocus()
|
|
155
163
|
}
|
|
156
164
|
}
|
|
@@ -4,6 +4,7 @@ import android.media.AudioAttributes
|
|
|
4
4
|
import android.media.AudioFocusRequest
|
|
5
5
|
import android.media.AudioManager
|
|
6
6
|
import android.os.Build
|
|
7
|
+
import androidx.annotation.RequiresApi
|
|
7
8
|
import com.facebook.react.bridge.ReactContext
|
|
8
9
|
import com.oney.WebRTCModule.WebRTCModule
|
|
9
10
|
import org.webrtc.audio.JavaAudioDeviceModule
|
|
@@ -25,18 +26,31 @@ class AudioFocusUtil(
|
|
|
25
26
|
private lateinit var request: AudioFocusRequest
|
|
26
27
|
|
|
27
28
|
|
|
29
|
+
@RequiresApi(26)
|
|
30
|
+
private fun getAudioAttributes(mode: CallAudioRole): AudioAttributes {
|
|
31
|
+
return AudioAttributes.Builder()
|
|
32
|
+
.setUsage(if (mode == CallAudioRole.Communicator) AudioAttributes.USAGE_VOICE_COMMUNICATION else AudioAttributes.USAGE_MEDIA)
|
|
33
|
+
.setContentType(if (mode == CallAudioRole.Communicator) AudioAttributes.CONTENT_TYPE_SPEECH else AudioAttributes.CONTENT_TYPE_MUSIC)
|
|
34
|
+
.build()
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
private fun setup(audioAttributes: AudioAttributes, reactContext: ReactContext) {
|
|
38
|
+
val webRTCModule = reactContext.getNativeModule(WebRTCModule::class.java)!!
|
|
39
|
+
val adm = webRTCModule.audioDeviceModule as JavaAudioDeviceModule
|
|
40
|
+
WebRtcAudioTrackHelper.setAudioOutputAttributes(adm, audioAttributes)
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
fun setup(mode: CallAudioRole, reactContext: ReactContext) {
|
|
44
|
+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
45
|
+
val audioAttributes = getAudioAttributes(mode)
|
|
46
|
+
setup(audioAttributes, reactContext)
|
|
47
|
+
}
|
|
48
|
+
}
|
|
28
49
|
|
|
29
50
|
fun requestFocus(mode: CallAudioRole, reactContext: ReactContext) {
|
|
30
51
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
31
|
-
val audioAttributes =
|
|
32
|
-
|
|
33
|
-
.setContentType(if (mode == CallAudioRole.Communicator) AudioAttributes.CONTENT_TYPE_SPEECH else AudioAttributes.CONTENT_TYPE_MUSIC)
|
|
34
|
-
.build()
|
|
35
|
-
|
|
36
|
-
// 1. set audio attributes to webrtc
|
|
37
|
-
val webRTCModule = reactContext.getNativeModule(WebRTCModule::class.java)!!
|
|
38
|
-
val adm = webRTCModule.audioDeviceModule as JavaAudioDeviceModule
|
|
39
|
-
WebRtcAudioTrackHelper.setAudioOutputAttributes(adm, audioAttributes)
|
|
52
|
+
val audioAttributes = getAudioAttributes(mode)
|
|
53
|
+
setup(audioAttributes, reactContext)
|
|
40
54
|
|
|
41
55
|
// 2. request the audio focus with the audio attributes
|
|
42
56
|
request = AudioFocusRequest.Builder(AudioManager.AUDIOFOCUS_GAIN_TRANSIENT)
|
package/android/src/main/java/com/streamvideo/reactnative/callmanager/StreamInCallManagerModule.kt
CHANGED
|
@@ -80,6 +80,24 @@ class StreamInCallManagerModule(reactContext: ReactApplicationContext) :
|
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
+
@ReactMethod
|
|
84
|
+
fun setEnableStereoAudioOutput(enabled: Boolean) {
|
|
85
|
+
AudioDeviceManager.runInAudioThread {
|
|
86
|
+
if (audioManagerActivated) {
|
|
87
|
+
Log.e(TAG, "setEnableStereoAudioOutput(): AudioManager is already activated and so enabling stereo audio output cannot be changed")
|
|
88
|
+
return@runInAudioThread
|
|
89
|
+
}
|
|
90
|
+
mAudioDeviceManager.enableStereo = enabled
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
@ReactMethod
|
|
95
|
+
fun setup() {
|
|
96
|
+
AudioDeviceManager.runInAudioThread {
|
|
97
|
+
mAudioDeviceManager.setup()
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
83
101
|
@ReactMethod
|
|
84
102
|
fun start() {
|
|
85
103
|
AudioDeviceManager.runInAudioThread {
|
|
@@ -99,10 +117,12 @@ class StreamInCallManagerModule(reactContext: ReactApplicationContext) :
|
|
|
99
117
|
AudioDeviceManager.runInAudioThread {
|
|
100
118
|
if (audioManagerActivated) {
|
|
101
119
|
Log.d(TAG, "stop() mAudioDeviceManager")
|
|
102
|
-
|
|
120
|
+
reactApplicationContext.currentActivity?.let {
|
|
121
|
+
mAudioDeviceManager.stop(it)
|
|
122
|
+
audioManagerActivated = false
|
|
123
|
+
}
|
|
103
124
|
setMicrophoneMute(false)
|
|
104
125
|
setKeepScreenOn(false)
|
|
105
|
-
audioManagerActivated = false
|
|
106
126
|
}
|
|
107
127
|
}
|
|
108
128
|
}
|
|
@@ -124,11 +144,16 @@ class StreamInCallManagerModule(reactContext: ReactApplicationContext) :
|
|
|
124
144
|
@Suppress("unused")
|
|
125
145
|
@ReactMethod
|
|
126
146
|
fun setForceSpeakerphoneOn(enable: Boolean) {
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
147
|
+
AudioDeviceManager.runInAudioThread {
|
|
148
|
+
if (mAudioDeviceManager.callAudioRole !== CallAudioRole.Communicator) {
|
|
149
|
+
Log.e(
|
|
150
|
+
TAG,
|
|
151
|
+
"setForceSpeakerphoneOn() is not supported when audio role is not Communicator"
|
|
152
|
+
)
|
|
153
|
+
return@runInAudioThread
|
|
154
|
+
}
|
|
155
|
+
mAudioDeviceManager.setSpeakerphoneOn(enable)
|
|
130
156
|
}
|
|
131
|
-
mAudioDeviceManager.setSpeakerphoneOn(enable)
|
|
132
157
|
}
|
|
133
158
|
|
|
134
159
|
@ReactMethod
|
|
@@ -152,23 +177,32 @@ class StreamInCallManagerModule(reactContext: ReactApplicationContext) :
|
|
|
152
177
|
@Suppress("unused")
|
|
153
178
|
@ReactMethod
|
|
154
179
|
fun chooseAudioDeviceEndpoint(endpointDeviceName: String) {
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
180
|
+
AudioDeviceManager.runInAudioThread {
|
|
181
|
+
if (mAudioDeviceManager.callAudioRole !== CallAudioRole.Communicator) {
|
|
182
|
+
Log.e(
|
|
183
|
+
TAG,
|
|
184
|
+
"chooseAudioDeviceEndpoint() is not supported when audio role is not Communicator"
|
|
185
|
+
)
|
|
186
|
+
return@runInAudioThread
|
|
187
|
+
}
|
|
188
|
+
mAudioDeviceManager.switchDeviceFromDeviceName(
|
|
189
|
+
endpointDeviceName
|
|
190
|
+
)
|
|
158
191
|
}
|
|
159
|
-
mAudioDeviceManager.switchDeviceFromDeviceName(
|
|
160
|
-
endpointDeviceName
|
|
161
|
-
)
|
|
162
192
|
}
|
|
163
193
|
|
|
164
194
|
@ReactMethod
|
|
165
195
|
fun muteAudioOutput() {
|
|
166
|
-
|
|
196
|
+
AudioDeviceManager.runInAudioThread {
|
|
197
|
+
mAudioDeviceManager.muteAudioOutput()
|
|
198
|
+
}
|
|
167
199
|
}
|
|
168
200
|
|
|
169
201
|
@ReactMethod
|
|
170
202
|
fun unmuteAudioOutput() {
|
|
171
|
-
|
|
203
|
+
AudioDeviceManager.runInAudioThread {
|
|
204
|
+
mAudioDeviceManager.unmuteAudioOutput()
|
|
205
|
+
}
|
|
172
206
|
}
|
|
173
207
|
|
|
174
208
|
|
package/dist/commonjs/index.js
CHANGED
|
@@ -26,6 +26,7 @@ require("intl-pluralrules");
|
|
|
26
26
|
var _reactNativeWebrtc = require("@stream-io/react-native-webrtc");
|
|
27
27
|
var _Logger = _interopRequireDefault(require("@stream-io/react-native-webrtc/src/Logger"));
|
|
28
28
|
var _reactNative = require("react-native");
|
|
29
|
+
var _registerSDKGlobals = require("./utils/internal/registerSDKGlobals");
|
|
29
30
|
var _videoClient = require("@stream-io/video-client");
|
|
30
31
|
Object.keys(_videoClient).forEach(function (key) {
|
|
31
32
|
if (key === "default" || key === "__esModule") return;
|
|
@@ -160,6 +161,7 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
|
|
|
160
161
|
// Reference: https://github.com/react-native-webrtc/react-native-webrtc/blob/16cff1523da457dbcc27bb0744ee2bad3a987c41/Documentation/BasicUsage.md#registering-globals
|
|
161
162
|
if (_reactNative.Platform.OS !== 'web') {
|
|
162
163
|
(0, _reactNativeWebrtc.registerGlobals)();
|
|
164
|
+
(0, _registerSDKGlobals.registerSDKGlobals)();
|
|
163
165
|
}
|
|
164
166
|
|
|
165
167
|
// only enable warning and error logs from webrtc library
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_setClientDetails","require","_reactNativeWebrtc","_Logger","_interopRequireDefault","_reactNative","_videoClient","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_videoReactBindings","_components","_contexts","_hooks","_theme","_utils","_translations","_callManager","_StreamVideo","_StreamCall","_NoiseCancellation","e","__esModule","default","Platform","OS","registerGlobals","Logger","enable","ROOT_PREFIX","setClientDetails"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,iBAAA,GAAAC,OAAA;AAEAA,OAAA;AAEAA,OAAA;AAEAA,OAAA;AACA,IAAAC,kBAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,YAAA,GAAAJ,OAAA;
|
|
1
|
+
{"version":3,"names":["_setClientDetails","require","_reactNativeWebrtc","_Logger","_interopRequireDefault","_reactNative","_registerSDKGlobals","_videoClient","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_videoReactBindings","_components","_contexts","_hooks","_theme","_utils","_translations","_callManager","_StreamVideo","_StreamCall","_NoiseCancellation","e","__esModule","default","Platform","OS","registerGlobals","registerSDKGlobals","Logger","enable","ROOT_PREFIX","setClientDetails"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -86,6 +86,8 @@ class CallManager {
|
|
|
86
86
|
* @param config.deviceEndpointType The default audio device endpoint type to set. It can be one of the following:
|
|
87
87
|
* - `'speaker'`: (Default) For normal video or voice calls.
|
|
88
88
|
* - `'earpiece'`: For voice-only mobile call type scenarios.
|
|
89
|
+
*
|
|
90
|
+
* @param config.enableStereoAudioOutput Whether to enable stereo audio output. Only supported for listener audio role.
|
|
89
91
|
*/
|
|
90
92
|
start = config => {
|
|
91
93
|
NativeManager.setAudioRole(config?.audioRole ?? 'communicator');
|
|
@@ -93,6 +95,9 @@ class CallManager {
|
|
|
93
95
|
const type = config.deviceEndpointType ?? 'speaker';
|
|
94
96
|
NativeManager.setDefaultAudioDeviceEndpointType(type);
|
|
95
97
|
}
|
|
98
|
+
if (config?.audioRole === 'listener' && config.enableStereoAudioOutput) {
|
|
99
|
+
NativeManager.setEnableStereoAudioOutput(true);
|
|
100
|
+
}
|
|
96
101
|
NativeManager.start();
|
|
97
102
|
};
|
|
98
103
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","NativeManager","NativeModules","StreamInCallManager","invariant","condition","message","Error","AndroidCallManager","getAudioDeviceStatus","Platform","OS","selectAudioDevice","endpointName","chooseAudioDeviceEndpoint","addAudioDeviceChangeListener","onChange","eventEmitter","NativeEventEmitter","s","addListener","remove","IOSCallManager","showDeviceSelector","showAudioRoutePicker","SpeakerManager","setMute","mute","muteAudioOutput","unmuteAudioOutput","setForceSpeakerphoneOn","force","CallManager","android","ios","speaker","start","config","setAudioRole","audioRole","type","deviceEndpointType","setDefaultAudioDeviceEndpointType","stop","logAudioState","exports"],"sourceRoot":"../../../../src","sources":["modules/call-manager/CallManager.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAGA,MAAMC,aAAa,GAAGC,0BAAa,CAACC,mBAAmB;AAEvD,MAAMC,SAAS,GAAGA,CAACC,SAAkB,EAAEC,OAAe,KAAK;EACzD,IAAI,CAACD,SAAS,EAAE,MAAM,IAAIE,KAAK,CAACD,OAAO,CAAC;AAC1C,CAAC;AAED,MAAME,kBAAkB,CAAC;EAGvB;AACF;AACA;EACEC,oBAAoB,GAAG,MAAAA,CAAA,KAAwC;IAC7DL,SAAS,CAACM,qBAAQ,CAACC,EAAE,KAAK,SAAS,EAAE,2BAA2B,CAAC;IACjE,OAAOV,aAAa,CAACQ,oBAAoB,CAAC,CAAC;EAC7C,CAAC;;EAED;AACF;AACA;AACA;AACA;EACEG,iBAAiB,GAAIC,YAAoB,IAAW;IAClDT,SAAS,CAACM,qBAAQ,CAACC,EAAE,KAAK,SAAS,EAAE,2BAA2B,CAAC;IACjEV,aAAa,CAACa,yBAAyB,CAACD,YAAY,CAAC;EACvD,CAAC;;EAED;AACF;AACA;AACA;EACEE,4BAA4B,GAC1BC,QAAwD,IACvC;IACjBZ,SAAS,CAACM,qBAAQ,CAACC,EAAE,KAAK,SAAS,EAAE,2BAA2B,CAAC;IACjE,IAAI,CAACM,YAAY,KAAK,IAAIC,+BAAkB,CAACjB,aAAa,CAAC;IAC3D,MAAMkB,CAAC,GAAG,IAAI,CAACF,YAAY,CAACG,WAAW,CAAC,sBAAsB,EAAEJ,QAAQ,CAAC;IACzE,OAAO,MAAMG,CAAC,CAACE,MAAM,CAAC,CAAC;EACzB,CAAC;AACH;AAEA,MAAMC,cAAc,CAAC;EACnB;AACF;AACA;EACEC,kBAAkB,GAAGA,CAAA,KAAY;IAC/BnB,SAAS,CAACM,qBAAQ,CAACC,EAAE,KAAK,KAAK,EAAE,uBAAuB,CAAC;IACzDV,aAAa,CAACuB,oBAAoB,CAAC,CAAC;EACtC,CAAC;AACH;AAEA,MAAMC,cAAc,CAAC;EACnB;AACF;AACA;EACEC,OAAO,GAAIC,IAAa,IAAW;IACjC,IAAIA,IAAI,EAAE;MACR1B,aAAa,CAAC2B,eAAe,CAAC,CAAC;IACjC,CAAC,MAAM;MACL3B,aAAa,CAAC4B,iBAAiB,CAAC,CAAC;IACnC;EACF,CAAC;;EAED;AACF;AACA;EACEC,sBAAsB,GAAIC,KAAc,IAAW;IACjD9B,aAAa,CAAC6B,sBAAsB,CAACC,KAAK,CAAC;EAC7C,CAAC;AACH;AAEO,MAAMC,WAAW,CAAC;EACvBC,OAAO,GAAG,IAAIzB,kBAAkB,CAAC,CAAC;EAClC0B,GAAG,GAAG,IAAIZ,cAAc,CAAC,CAAC;EAC1Ba,OAAO,GAAG,IAAIV,cAAc,CAAC,CAAC;;EAE9B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEW,KAAK,GAAIC,MAAkC,IAAW;IACpDpC,aAAa,CAACqC,YAAY,CAACD,MAAM,EAAEE,SAAS,IAAI,cAAc,CAAC;IAC/D,IAAIF,MAAM,EAAEE,SAAS,KAAK,cAAc,EAAE;MACxC,MAAMC,IAAI,GAAGH,MAAM,CAACI,kBAAkB,IAAI,SAAS;MACnDxC,aAAa,CAACyC,iCAAiC,CAACF,IAAI,CAAC;IACvD;
|
|
1
|
+
{"version":3,"names":["_reactNative","require","NativeManager","NativeModules","StreamInCallManager","invariant","condition","message","Error","AndroidCallManager","getAudioDeviceStatus","Platform","OS","selectAudioDevice","endpointName","chooseAudioDeviceEndpoint","addAudioDeviceChangeListener","onChange","eventEmitter","NativeEventEmitter","s","addListener","remove","IOSCallManager","showDeviceSelector","showAudioRoutePicker","SpeakerManager","setMute","mute","muteAudioOutput","unmuteAudioOutput","setForceSpeakerphoneOn","force","CallManager","android","ios","speaker","start","config","setAudioRole","audioRole","type","deviceEndpointType","setDefaultAudioDeviceEndpointType","enableStereoAudioOutput","setEnableStereoAudioOutput","stop","logAudioState","exports"],"sourceRoot":"../../../../src","sources":["modules/call-manager/CallManager.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAGA,MAAMC,aAAa,GAAGC,0BAAa,CAACC,mBAAmB;AAEvD,MAAMC,SAAS,GAAGA,CAACC,SAAkB,EAAEC,OAAe,KAAK;EACzD,IAAI,CAACD,SAAS,EAAE,MAAM,IAAIE,KAAK,CAACD,OAAO,CAAC;AAC1C,CAAC;AAED,MAAME,kBAAkB,CAAC;EAGvB;AACF;AACA;EACEC,oBAAoB,GAAG,MAAAA,CAAA,KAAwC;IAC7DL,SAAS,CAACM,qBAAQ,CAACC,EAAE,KAAK,SAAS,EAAE,2BAA2B,CAAC;IACjE,OAAOV,aAAa,CAACQ,oBAAoB,CAAC,CAAC;EAC7C,CAAC;;EAED;AACF;AACA;AACA;AACA;EACEG,iBAAiB,GAAIC,YAAoB,IAAW;IAClDT,SAAS,CAACM,qBAAQ,CAACC,EAAE,KAAK,SAAS,EAAE,2BAA2B,CAAC;IACjEV,aAAa,CAACa,yBAAyB,CAACD,YAAY,CAAC;EACvD,CAAC;;EAED;AACF;AACA;AACA;EACEE,4BAA4B,GAC1BC,QAAwD,IACvC;IACjBZ,SAAS,CAACM,qBAAQ,CAACC,EAAE,KAAK,SAAS,EAAE,2BAA2B,CAAC;IACjE,IAAI,CAACM,YAAY,KAAK,IAAIC,+BAAkB,CAACjB,aAAa,CAAC;IAC3D,MAAMkB,CAAC,GAAG,IAAI,CAACF,YAAY,CAACG,WAAW,CAAC,sBAAsB,EAAEJ,QAAQ,CAAC;IACzE,OAAO,MAAMG,CAAC,CAACE,MAAM,CAAC,CAAC;EACzB,CAAC;AACH;AAEA,MAAMC,cAAc,CAAC;EACnB;AACF;AACA;EACEC,kBAAkB,GAAGA,CAAA,KAAY;IAC/BnB,SAAS,CAACM,qBAAQ,CAACC,EAAE,KAAK,KAAK,EAAE,uBAAuB,CAAC;IACzDV,aAAa,CAACuB,oBAAoB,CAAC,CAAC;EACtC,CAAC;AACH;AAEA,MAAMC,cAAc,CAAC;EACnB;AACF;AACA;EACEC,OAAO,GAAIC,IAAa,IAAW;IACjC,IAAIA,IAAI,EAAE;MACR1B,aAAa,CAAC2B,eAAe,CAAC,CAAC;IACjC,CAAC,MAAM;MACL3B,aAAa,CAAC4B,iBAAiB,CAAC,CAAC;IACnC;EACF,CAAC;;EAED;AACF;AACA;EACEC,sBAAsB,GAAIC,KAAc,IAAW;IACjD9B,aAAa,CAAC6B,sBAAsB,CAACC,KAAK,CAAC;EAC7C,CAAC;AACH;AAEO,MAAMC,WAAW,CAAC;EACvBC,OAAO,GAAG,IAAIzB,kBAAkB,CAAC,CAAC;EAClC0B,GAAG,GAAG,IAAIZ,cAAc,CAAC,CAAC;EAC1Ba,OAAO,GAAG,IAAIV,cAAc,CAAC,CAAC;;EAE9B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEW,KAAK,GAAIC,MAAkC,IAAW;IACpDpC,aAAa,CAACqC,YAAY,CAACD,MAAM,EAAEE,SAAS,IAAI,cAAc,CAAC;IAC/D,IAAIF,MAAM,EAAEE,SAAS,KAAK,cAAc,EAAE;MACxC,MAAMC,IAAI,GAAGH,MAAM,CAACI,kBAAkB,IAAI,SAAS;MACnDxC,aAAa,CAACyC,iCAAiC,CAACF,IAAI,CAAC;IACvD;IACA,IAAIH,MAAM,EAAEE,SAAS,KAAK,UAAU,IAAIF,MAAM,CAACM,uBAAuB,EAAE;MACtE1C,aAAa,CAAC2C,0BAA0B,CAAC,IAAI,CAAC;IAChD;IACA3C,aAAa,CAACmC,KAAK,CAAC,CAAC;EACvB,CAAC;;EAED;AACF;AACA;EACES,IAAI,GAAGA,CAAA,KAAY;IACjB5C,aAAa,CAAC4C,IAAI,CAAC,CAAC;EACtB,CAAC;;EAED;AACF;AACA;AACA;EACEC,aAAa,GAAGA,CAAA,KAAY7C,aAAa,CAAC6C,aAAa,CAAC,CAAC;AAC3D;AAACC,OAAA,CAAAf,WAAA,GAAAA,WAAA","ignoreList":[]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.registerSDKGlobals = registerSDKGlobals;
|
|
7
|
+
var _reactNative = require("react-native");
|
|
8
|
+
const StreamInCallManagerNativeModule = _reactNative.NativeModules.StreamInCallManager;
|
|
9
|
+
const streamRNVideoSDKGlobals = {
|
|
10
|
+
callManager: {
|
|
11
|
+
setup: ({
|
|
12
|
+
defaultDevice
|
|
13
|
+
}) => {
|
|
14
|
+
StreamInCallManagerNativeModule.setDefaultAudioDeviceEndpointType(defaultDevice);
|
|
15
|
+
StreamInCallManagerNativeModule.setup();
|
|
16
|
+
},
|
|
17
|
+
start: () => {
|
|
18
|
+
StreamInCallManagerNativeModule.start();
|
|
19
|
+
},
|
|
20
|
+
stop: () => {
|
|
21
|
+
StreamInCallManagerNativeModule.stop();
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
// Note: The global type declaration for `streamRNVideoSDK` is defined in
|
|
27
|
+
// @stream-io/video-client/src/types.ts and is automatically available when
|
|
28
|
+
// importing from the client package.
|
|
29
|
+
function registerSDKGlobals() {
|
|
30
|
+
if (!global.streamRNVideoSDK) {
|
|
31
|
+
global.streamRNVideoSDK = streamRNVideoSDKGlobals;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=registerSDKGlobals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNative","require","StreamInCallManagerNativeModule","NativeModules","StreamInCallManager","streamRNVideoSDKGlobals","callManager","setup","defaultDevice","setDefaultAudioDeviceEndpointType","start","stop","registerSDKGlobals","global","streamRNVideoSDK"],"sourceRoot":"../../../../src","sources":["utils/internal/registerSDKGlobals.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAEA,MAAMC,+BAA+B,GAAGC,0BAAa,CAACC,mBAAmB;AAEzE,MAAMC,uBAAgD,GAAG;EACvDC,WAAW,EAAE;IACXC,KAAK,EAAEA,CAAC;MAAEC;IAAc,CAAC,KAAK;MAC5BN,+BAA+B,CAACO,iCAAiC,CAC/DD,aACF,CAAC;MACDN,+BAA+B,CAACK,KAAK,CAAC,CAAC;IACzC,CAAC;IACDG,KAAK,EAAEA,CAAA,KAAM;MACXR,+BAA+B,CAACQ,KAAK,CAAC,CAAC;IACzC,CAAC;IACDC,IAAI,EAAEA,CAAA,KAAM;MACVT,+BAA+B,CAACS,IAAI,CAAC,CAAC;IACxC;EACF;AACF,CAAC;;AAED;AACA;AACA;AACO,SAASC,kBAAkBA,CAAA,EAAG;EACnC,IAAI,CAACC,MAAM,CAACC,gBAAgB,EAAE;IAC5BD,MAAM,CAACC,gBAAgB,GAAGT,uBAAuB;EACnD;AACF","ignoreList":[]}
|
|
@@ -9,6 +9,7 @@ var _videoClient = require("@stream-io/video-client");
|
|
|
9
9
|
var _libs = require("./libs");
|
|
10
10
|
var _utils = require("./internal/utils");
|
|
11
11
|
var _reactNative = require("react-native");
|
|
12
|
+
var _reactNativeWebrtc = require("@stream-io/react-native-webrtc");
|
|
12
13
|
var _pushLogoutCallback = require("../internal/pushLogoutCallback");
|
|
13
14
|
/**
|
|
14
15
|
* This hook is used to listen to callkeep events and do the necessary actions
|
|
@@ -52,6 +53,33 @@ function setupIosCallKeepEvents(pushConfig) {
|
|
|
52
53
|
iosCallkeepRejectCall(call_cid, callUUID, pushConfig);
|
|
53
54
|
});
|
|
54
55
|
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* CallKeep / CallKit audio-session events -> WebRTC (iOS)
|
|
59
|
+
*
|
|
60
|
+
* iOS CallKit is the authority that *activates* and *deactivates* the underlying `AVAudioSession`
|
|
61
|
+
* when a call is answered/ended from the system UI (lock screen, Call UI, Bluetooth, etc).
|
|
62
|
+
*
|
|
63
|
+
* WebRTC on iOS wraps `AVAudioSession` with `RTCAudioSession` and its AudioDeviceModule relies on
|
|
64
|
+
* being notified of those lifecycle transitions to correctly start/stop audio I/O and keep its
|
|
65
|
+
* internal activation state consistent (e.g. activation count, playout/recording start).
|
|
66
|
+
*
|
|
67
|
+
* If these callbacks don’t reach WebRTC, answering via the native dialer UI can result in:
|
|
68
|
+
* - no microphone capture / one-way audio
|
|
69
|
+
* - silent playout until the app forces an audio reconfiguration
|
|
70
|
+
* - flaky audio routing (speaker/earpiece/Bluetooth) across subsequent calls
|
|
71
|
+
*
|
|
72
|
+
* We forward CallKeep’s `didActivateAudioSession` / `didDeactivateAudioSession` events to WebRTC’s
|
|
73
|
+
* `RTCAudioSession.audioSessionDidActivate()` / `audioSessionDidDeactivate()` methods.
|
|
74
|
+
*/
|
|
75
|
+
function didActivateAudioSession() {
|
|
76
|
+
logger.debug('didActivateAudioSession');
|
|
77
|
+
_reactNativeWebrtc.RTCAudioSession.audioSessionDidActivate();
|
|
78
|
+
}
|
|
79
|
+
function didDeactivateAudioSession() {
|
|
80
|
+
logger.debug('didDeactivateAudioSession');
|
|
81
|
+
_reactNativeWebrtc.RTCAudioSession.audioSessionDidDeactivate();
|
|
82
|
+
}
|
|
55
83
|
function didDisplayIncomingCall(callUUID, payload) {
|
|
56
84
|
const voipPushNotification = (0, _libs.getVoipPushNotificationLib)();
|
|
57
85
|
// @ts-expect-error - call_cid is not part of RNCallKeepEventPayload
|
|
@@ -90,6 +118,16 @@ function setupIosCallKeepEvents(pushConfig) {
|
|
|
90
118
|
}) => {
|
|
91
119
|
didDisplayIncomingCall(callUUID, payload);
|
|
92
120
|
});
|
|
121
|
+
const {
|
|
122
|
+
remove: removeDidActivateAudioSession
|
|
123
|
+
} = callkeep.addEventListener('didActivateAudioSession', () => {
|
|
124
|
+
didActivateAudioSession();
|
|
125
|
+
});
|
|
126
|
+
const {
|
|
127
|
+
remove: removeDidDeactivateAudioSession
|
|
128
|
+
} = callkeep.addEventListener('didDeactivateAudioSession', () => {
|
|
129
|
+
didDeactivateAudioSession();
|
|
130
|
+
});
|
|
93
131
|
const {
|
|
94
132
|
remove: removeDidLoadWithEvents
|
|
95
133
|
} = callkeep.addEventListener('didLoadWithEvents', events => {
|
|
@@ -107,6 +145,10 @@ function setupIosCallKeepEvents(pushConfig) {
|
|
|
107
145
|
answerCall(data.callUUID);
|
|
108
146
|
} else if (name === 'RNCallKeepPerformEndCallAction') {
|
|
109
147
|
endCall(data.callUUID);
|
|
148
|
+
} else if (name === 'RNCallKeepDidActivateAudioSession') {
|
|
149
|
+
didActivateAudioSession();
|
|
150
|
+
} else if (name === 'RNCallKeepDidDeactivateAudioSession') {
|
|
151
|
+
didDeactivateAudioSession();
|
|
110
152
|
}
|
|
111
153
|
});
|
|
112
154
|
});
|
|
@@ -114,6 +156,8 @@ function setupIosCallKeepEvents(pushConfig) {
|
|
|
114
156
|
removeAnswerCall();
|
|
115
157
|
removeEndCall();
|
|
116
158
|
removeDisplayIncomingCall();
|
|
159
|
+
removeDidActivateAudioSession();
|
|
160
|
+
removeDidDeactivateAudioSession();
|
|
117
161
|
removeDidLoadWithEvents();
|
|
118
162
|
});
|
|
119
163
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_rxSubjects","require","_videoClient","_libs","_utils","_reactNative","_pushLogoutCallback","setupIosCallKeepEvents","pushConfig","Platform","OS","ios","pushProviderName","android","incomingCallChannel","videoLoggerSystem","getLogger","debug","logger","callkeep","getCallKeepLib","getCallCid","callUUID","call_cid","NativeModules","StreamVideoReactNative","getIncomingCallCid","voipPushNotificationCallCId","RxUtils","getCurrentValue","voipPushNotificationCallCId$","next","undefined","answerCall","then","iosCallkeepAcceptCall","endCall","iosCallkeepRejectCall","didDisplayIncomingCall","payload","voipPushNotification","getVoipPushNotificationLib","AppState","currentState","processCallFromPushInBackground","voipCallkeepCallOnForegroundMap$","uuid","cid","onVoipNotificationCompleted","remove","removeAnswerCall","addEventListener","removeEndCall","removeDisplayIncomingCall","removeDidLoadWithEvents","events","Array","isArray","length","forEach","event","name","data","setPushLogoutCallback","callUUIDFromCallkeep","shouldProcessCallFromCallkeep","clearPushWSEventSubscriptions","voipCallkeepAcceptedCallOnNativeDialerMap$","pushAcceptedIncomingCallCId$","removeIncomingCall"],"sourceRoot":"../../../../src","sources":["utils/push/setupIosCallKeepEvents.ts"],"mappings":";;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AAMA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AAEA,IAAAG,MAAA,GAAAH,OAAA;AAIA,IAAAI,YAAA,GAAAJ,OAAA;AACA,IAAAK,
|
|
1
|
+
{"version":3,"names":["_rxSubjects","require","_videoClient","_libs","_utils","_reactNative","_reactNativeWebrtc","_pushLogoutCallback","setupIosCallKeepEvents","pushConfig","Platform","OS","ios","pushProviderName","android","incomingCallChannel","videoLoggerSystem","getLogger","debug","logger","callkeep","getCallKeepLib","getCallCid","callUUID","call_cid","NativeModules","StreamVideoReactNative","getIncomingCallCid","voipPushNotificationCallCId","RxUtils","getCurrentValue","voipPushNotificationCallCId$","next","undefined","answerCall","then","iosCallkeepAcceptCall","endCall","iosCallkeepRejectCall","didActivateAudioSession","RTCAudioSession","audioSessionDidActivate","didDeactivateAudioSession","audioSessionDidDeactivate","didDisplayIncomingCall","payload","voipPushNotification","getVoipPushNotificationLib","AppState","currentState","processCallFromPushInBackground","voipCallkeepCallOnForegroundMap$","uuid","cid","onVoipNotificationCompleted","remove","removeAnswerCall","addEventListener","removeEndCall","removeDisplayIncomingCall","removeDidActivateAudioSession","removeDidDeactivateAudioSession","removeDidLoadWithEvents","events","Array","isArray","length","forEach","event","name","data","setPushLogoutCallback","callUUIDFromCallkeep","shouldProcessCallFromCallkeep","clearPushWSEventSubscriptions","voipCallkeepAcceptedCallOnNativeDialerMap$","pushAcceptedIncomingCallCId$","removeIncomingCall"],"sourceRoot":"../../../../src","sources":["utils/push/setupIosCallKeepEvents.ts"],"mappings":"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","ignoreList":[]}
|
package/dist/commonjs/version.js
CHANGED
package/dist/module/index.js
CHANGED
|
@@ -8,12 +8,14 @@ import 'intl-pluralrules';
|
|
|
8
8
|
import { registerGlobals } from '@stream-io/react-native-webrtc';
|
|
9
9
|
import Logger from '@stream-io/react-native-webrtc/src/Logger';
|
|
10
10
|
import { Platform } from 'react-native';
|
|
11
|
+
import { registerSDKGlobals } from './utils/internal/registerSDKGlobals';
|
|
11
12
|
|
|
12
13
|
// We're registering globals, because our video JS client is serving SDKs that use browser based webRTC functions.
|
|
13
14
|
// This will result in creation of 2 global objects: `window` and `navigator`
|
|
14
15
|
// Reference: https://github.com/react-native-webrtc/react-native-webrtc/blob/16cff1523da457dbcc27bb0744ee2bad3a987c41/Documentation/BasicUsage.md#registering-globals
|
|
15
16
|
if (Platform.OS !== 'web') {
|
|
16
17
|
registerGlobals();
|
|
18
|
+
registerSDKGlobals();
|
|
17
19
|
}
|
|
18
20
|
|
|
19
21
|
// only enable warning and error logs from webrtc library
|
package/dist/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["setClientDetails","registerGlobals","Logger","Platform","OS","enable","ROOT_PREFIX","StreamVideo","StreamCall"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA,SAASA,gBAAgB,QAAQ,0BAA0B;AAC3D;AACA,OAAO,wBAAwB;AAC/B;AACA,OAAO,gCAAgC;AACvC;AACA,OAAO,kBAAkB;AACzB,SAASC,eAAe,QAAQ,gCAAgC;AAChE,OAAOC,MAAM,MAAM,2CAA2C;AAC9D,SAASC,QAAQ,QAAQ,cAAc;;
|
|
1
|
+
{"version":3,"names":["setClientDetails","registerGlobals","Logger","Platform","registerSDKGlobals","OS","enable","ROOT_PREFIX","StreamVideo","StreamCall"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA,SAASA,gBAAgB,QAAQ,0BAA0B;AAC3D;AACA,OAAO,wBAAwB;AAC/B;AACA,OAAO,gCAAgC;AACvC;AACA,OAAO,kBAAkB;AACzB,SAASC,eAAe,QAAQ,gCAAgC;AAChE,OAAOC,MAAM,MAAM,2CAA2C;AAC9D,SAASC,QAAQ,QAAQ,cAAc;AACvC,SAASC,kBAAkB,QAAQ,qCAAqC;;AAExE;AACA;AACA;AACA,IAAID,QAAQ,CAACE,EAAE,KAAK,KAAK,EAAE;EACzBJ,eAAe,CAAC,CAAC;EACjBG,kBAAkB,CAAC,CAAC;AACtB;;AAEA;AACAF,MAAM,CAACI,MAAM,CAAC,GAAGJ,MAAM,CAACK,WAAW,eAAe,CAAC;AAEnD,cAAc,yBAAyB;AACvC,cAAc,iCAAiC;AAC/C,cAAc,cAAc;AAC5B,cAAc,YAAY;AAC1B,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,gBAAgB;AAC9B,cAAc,wBAAwB;;AAEtC;AACA;AACA,SAASC,WAAW,QAAQ,yBAAyB;AACrD,SAASC,UAAU,QAAQ,wBAAwB;AACnD,cAAc,+BAA+B;AAE7CT,gBAAgB,CAAC,CAAC","ignoreList":[]}
|
|
@@ -80,6 +80,8 @@ export class CallManager {
|
|
|
80
80
|
* @param config.deviceEndpointType The default audio device endpoint type to set. It can be one of the following:
|
|
81
81
|
* - `'speaker'`: (Default) For normal video or voice calls.
|
|
82
82
|
* - `'earpiece'`: For voice-only mobile call type scenarios.
|
|
83
|
+
*
|
|
84
|
+
* @param config.enableStereoAudioOutput Whether to enable stereo audio output. Only supported for listener audio role.
|
|
83
85
|
*/
|
|
84
86
|
start = config => {
|
|
85
87
|
NativeManager.setAudioRole(config?.audioRole ?? 'communicator');
|
|
@@ -87,6 +89,9 @@ export class CallManager {
|
|
|
87
89
|
const type = config.deviceEndpointType ?? 'speaker';
|
|
88
90
|
NativeManager.setDefaultAudioDeviceEndpointType(type);
|
|
89
91
|
}
|
|
92
|
+
if (config?.audioRole === 'listener' && config.enableStereoAudioOutput) {
|
|
93
|
+
NativeManager.setEnableStereoAudioOutput(true);
|
|
94
|
+
}
|
|
90
95
|
NativeManager.start();
|
|
91
96
|
};
|
|
92
97
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeEventEmitter","NativeModules","Platform","NativeManager","StreamInCallManager","invariant","condition","message","Error","AndroidCallManager","getAudioDeviceStatus","OS","selectAudioDevice","endpointName","chooseAudioDeviceEndpoint","addAudioDeviceChangeListener","onChange","eventEmitter","s","addListener","remove","IOSCallManager","showDeviceSelector","showAudioRoutePicker","SpeakerManager","setMute","mute","muteAudioOutput","unmuteAudioOutput","setForceSpeakerphoneOn","force","CallManager","android","ios","speaker","start","config","setAudioRole","audioRole","type","deviceEndpointType","setDefaultAudioDeviceEndpointType","stop","logAudioState"],"sourceRoot":"../../../../src","sources":["modules/call-manager/CallManager.ts"],"mappings":"AAAA,SAASA,kBAAkB,EAAEC,aAAa,EAAEC,QAAQ,QAAQ,cAAc;AAG1E,MAAMC,aAAa,GAAGF,aAAa,CAACG,mBAAmB;AAEvD,MAAMC,SAAS,GAAGA,CAACC,SAAkB,EAAEC,OAAe,KAAK;EACzD,IAAI,CAACD,SAAS,EAAE,MAAM,IAAIE,KAAK,CAACD,OAAO,CAAC;AAC1C,CAAC;AAED,MAAME,kBAAkB,CAAC;EAGvB;AACF;AACA;EACEC,oBAAoB,GAAG,MAAAA,CAAA,KAAwC;IAC7DL,SAAS,CAACH,QAAQ,CAACS,EAAE,KAAK,SAAS,EAAE,2BAA2B,CAAC;IACjE,OAAOR,aAAa,CAACO,oBAAoB,CAAC,CAAC;EAC7C,CAAC;;EAED;AACF;AACA;AACA;AACA;EACEE,iBAAiB,GAAIC,YAAoB,IAAW;IAClDR,SAAS,CAACH,QAAQ,CAACS,EAAE,KAAK,SAAS,EAAE,2BAA2B,CAAC;IACjER,aAAa,CAACW,yBAAyB,CAACD,YAAY,CAAC;EACvD,CAAC;;EAED;AACF;AACA;AACA;EACEE,4BAA4B,GAC1BC,QAAwD,IACvC;IACjBX,SAAS,CAACH,QAAQ,CAACS,EAAE,KAAK,SAAS,EAAE,2BAA2B,CAAC;IACjE,IAAI,CAACM,YAAY,KAAK,IAAIjB,kBAAkB,CAACG,aAAa,CAAC;IAC3D,MAAMe,CAAC,GAAG,IAAI,CAACD,YAAY,CAACE,WAAW,CAAC,sBAAsB,EAAEH,QAAQ,CAAC;IACzE,OAAO,MAAME,CAAC,CAACE,MAAM,CAAC,CAAC;EACzB,CAAC;AACH;AAEA,MAAMC,cAAc,CAAC;EACnB;AACF;AACA;EACEC,kBAAkB,GAAGA,CAAA,KAAY;IAC/BjB,SAAS,CAACH,QAAQ,CAACS,EAAE,KAAK,KAAK,EAAE,uBAAuB,CAAC;IACzDR,aAAa,CAACoB,oBAAoB,CAAC,CAAC;EACtC,CAAC;AACH;AAEA,MAAMC,cAAc,CAAC;EACnB;AACF;AACA;EACEC,OAAO,GAAIC,IAAa,IAAW;IACjC,IAAIA,IAAI,EAAE;MACRvB,aAAa,CAACwB,eAAe,CAAC,CAAC;IACjC,CAAC,MAAM;MACLxB,aAAa,CAACyB,iBAAiB,CAAC,CAAC;IACnC;EACF,CAAC;;EAED;AACF;AACA;EACEC,sBAAsB,GAAIC,KAAc,IAAW;IACjD3B,aAAa,CAAC0B,sBAAsB,CAACC,KAAK,CAAC;EAC7C,CAAC;AACH;AAEA,OAAO,MAAMC,WAAW,CAAC;EACvBC,OAAO,GAAG,IAAIvB,kBAAkB,CAAC,CAAC;EAClCwB,GAAG,GAAG,IAAIZ,cAAc,CAAC,CAAC;EAC1Ba,OAAO,GAAG,IAAIV,cAAc,CAAC,CAAC;;EAE9B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEW,KAAK,GAAIC,MAAkC,IAAW;IACpDjC,aAAa,CAACkC,YAAY,CAACD,MAAM,EAAEE,SAAS,IAAI,cAAc,CAAC;IAC/D,IAAIF,MAAM,EAAEE,SAAS,KAAK,cAAc,EAAE;MACxC,MAAMC,IAAI,GAAGH,MAAM,CAACI,kBAAkB,IAAI,SAAS;MACnDrC,aAAa,CAACsC,iCAAiC,CAACF,IAAI,CAAC;IACvD;
|
|
1
|
+
{"version":3,"names":["NativeEventEmitter","NativeModules","Platform","NativeManager","StreamInCallManager","invariant","condition","message","Error","AndroidCallManager","getAudioDeviceStatus","OS","selectAudioDevice","endpointName","chooseAudioDeviceEndpoint","addAudioDeviceChangeListener","onChange","eventEmitter","s","addListener","remove","IOSCallManager","showDeviceSelector","showAudioRoutePicker","SpeakerManager","setMute","mute","muteAudioOutput","unmuteAudioOutput","setForceSpeakerphoneOn","force","CallManager","android","ios","speaker","start","config","setAudioRole","audioRole","type","deviceEndpointType","setDefaultAudioDeviceEndpointType","enableStereoAudioOutput","setEnableStereoAudioOutput","stop","logAudioState"],"sourceRoot":"../../../../src","sources":["modules/call-manager/CallManager.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { NativeModules } from 'react-native';
|
|
2
|
+
const StreamInCallManagerNativeModule = NativeModules.StreamInCallManager;
|
|
3
|
+
const streamRNVideoSDKGlobals = {
|
|
4
|
+
callManager: {
|
|
5
|
+
setup: ({
|
|
6
|
+
defaultDevice
|
|
7
|
+
}) => {
|
|
8
|
+
StreamInCallManagerNativeModule.setDefaultAudioDeviceEndpointType(defaultDevice);
|
|
9
|
+
StreamInCallManagerNativeModule.setup();
|
|
10
|
+
},
|
|
11
|
+
start: () => {
|
|
12
|
+
StreamInCallManagerNativeModule.start();
|
|
13
|
+
},
|
|
14
|
+
stop: () => {
|
|
15
|
+
StreamInCallManagerNativeModule.stop();
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
// Note: The global type declaration for `streamRNVideoSDK` is defined in
|
|
21
|
+
// @stream-io/video-client/src/types.ts and is automatically available when
|
|
22
|
+
// importing from the client package.
|
|
23
|
+
export function registerSDKGlobals() {
|
|
24
|
+
if (!global.streamRNVideoSDK) {
|
|
25
|
+
global.streamRNVideoSDK = streamRNVideoSDKGlobals;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=registerSDKGlobals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["NativeModules","StreamInCallManagerNativeModule","StreamInCallManager","streamRNVideoSDKGlobals","callManager","setup","defaultDevice","setDefaultAudioDeviceEndpointType","start","stop","registerSDKGlobals","global","streamRNVideoSDK"],"sourceRoot":"../../../../src","sources":["utils/internal/registerSDKGlobals.ts"],"mappings":"AACA,SAASA,aAAa,QAAQ,cAAc;AAE5C,MAAMC,+BAA+B,GAAGD,aAAa,CAACE,mBAAmB;AAEzE,MAAMC,uBAAgD,GAAG;EACvDC,WAAW,EAAE;IACXC,KAAK,EAAEA,CAAC;MAAEC;IAAc,CAAC,KAAK;MAC5BL,+BAA+B,CAACM,iCAAiC,CAC/DD,aACF,CAAC;MACDL,+BAA+B,CAACI,KAAK,CAAC,CAAC;IACzC,CAAC;IACDG,KAAK,EAAEA,CAAA,KAAM;MACXP,+BAA+B,CAACO,KAAK,CAAC,CAAC;IACzC,CAAC;IACDC,IAAI,EAAEA,CAAA,KAAM;MACVR,+BAA+B,CAACQ,IAAI,CAAC,CAAC;IACxC;EACF;AACF,CAAC;;AAED;AACA;AACA;AACA,OAAO,SAASC,kBAAkBA,CAAA,EAAG;EACnC,IAAI,CAACC,MAAM,CAACC,gBAAgB,EAAE;IAC5BD,MAAM,CAACC,gBAAgB,GAAGT,uBAAuB;EACnD;AACF","ignoreList":[]}
|