@stream-io/video-react-native-sdk 1.28.0 → 1.28.2
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 +19 -0
- package/dist/commonjs/utils/internal/registerSDKGlobals.js +2 -2
- package/dist/commonjs/utils/internal/registerSDKGlobals.js.map +1 -1
- 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/utils/internal/registerSDKGlobals.js +2 -2
- package/dist/module/utils/internal/registerSDKGlobals.js.map +1 -1
- 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/utils/push/setupIosCallKeepEvents.d.ts.map +1 -1
- package/dist/typescript/version.d.ts +1 -1
- package/package.json +3 -3
- package/src/utils/internal/registerSDKGlobals.ts +2 -2
- package/src/utils/push/setupIosCallKeepEvents.ts +49 -0
- package/src/version.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,25 @@
|
|
|
2
2
|
|
|
3
3
|
This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
|
|
4
4
|
|
|
5
|
+
## [1.28.2](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-native-sdk-1.28.1...@stream-io/video-react-native-sdk-1.28.2) (2026-01-28)
|
|
6
|
+
|
|
7
|
+
### Dependency Updates
|
|
8
|
+
|
|
9
|
+
- `@stream-io/video-client` updated to version `1.41.2`
|
|
10
|
+
- `@stream-io/video-react-bindings` updated to version `1.13.2`
|
|
11
|
+
|
|
12
|
+
## [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)
|
|
13
|
+
|
|
14
|
+
### Dependency Updates
|
|
15
|
+
|
|
16
|
+
- `@stream-io/video-client` updated to version `1.41.1`
|
|
17
|
+
- `@stream-io/video-react-bindings` updated to version `1.13.1`
|
|
18
|
+
|
|
19
|
+
### Bug Fixes
|
|
20
|
+
|
|
21
|
+
- 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))
|
|
22
|
+
- 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)
|
|
23
|
+
|
|
5
24
|
## [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)
|
|
6
25
|
|
|
7
26
|
### Dependency Updates
|
|
@@ -9,9 +9,9 @@ const StreamInCallManagerNativeModule = _reactNative.NativeModules.StreamInCallM
|
|
|
9
9
|
const streamRNVideoSDKGlobals = {
|
|
10
10
|
callManager: {
|
|
11
11
|
setup: ({
|
|
12
|
-
|
|
12
|
+
defaultDevice
|
|
13
13
|
}) => {
|
|
14
|
-
StreamInCallManagerNativeModule.setDefaultAudioDeviceEndpointType(
|
|
14
|
+
StreamInCallManagerNativeModule.setDefaultAudioDeviceEndpointType(defaultDevice);
|
|
15
15
|
StreamInCallManagerNativeModule.setup();
|
|
16
16
|
},
|
|
17
17
|
start: () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","StreamInCallManagerNativeModule","NativeModules","StreamInCallManager","streamRNVideoSDKGlobals","callManager","setup","
|
|
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
|
@@ -3,9 +3,9 @@ const StreamInCallManagerNativeModule = NativeModules.StreamInCallManager;
|
|
|
3
3
|
const streamRNVideoSDKGlobals = {
|
|
4
4
|
callManager: {
|
|
5
5
|
setup: ({
|
|
6
|
-
|
|
6
|
+
defaultDevice
|
|
7
7
|
}) => {
|
|
8
|
-
StreamInCallManagerNativeModule.setDefaultAudioDeviceEndpointType(
|
|
8
|
+
StreamInCallManagerNativeModule.setDefaultAudioDeviceEndpointType(defaultDevice);
|
|
9
9
|
StreamInCallManagerNativeModule.setup();
|
|
10
10
|
},
|
|
11
11
|
start: () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeModules","StreamInCallManagerNativeModule","StreamInCallManager","streamRNVideoSDKGlobals","callManager","setup","
|
|
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":[]}
|
|
@@ -3,6 +3,7 @@ import { RxUtils, videoLoggerSystem } from '@stream-io/video-client';
|
|
|
3
3
|
import { getCallKeepLib, getVoipPushNotificationLib } from './libs';
|
|
4
4
|
import { clearPushWSEventSubscriptions, processCallFromPushInBackground } from './internal/utils';
|
|
5
5
|
import { AppState, NativeModules, Platform } from 'react-native';
|
|
6
|
+
import { RTCAudioSession } from '@stream-io/react-native-webrtc';
|
|
6
7
|
import { setPushLogoutCallback } from '../internal/pushLogoutCallback';
|
|
7
8
|
/**
|
|
8
9
|
* This hook is used to listen to callkeep events and do the necessary actions
|
|
@@ -46,6 +47,33 @@ export function setupIosCallKeepEvents(pushConfig) {
|
|
|
46
47
|
iosCallkeepRejectCall(call_cid, callUUID, pushConfig);
|
|
47
48
|
});
|
|
48
49
|
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* CallKeep / CallKit audio-session events -> WebRTC (iOS)
|
|
53
|
+
*
|
|
54
|
+
* iOS CallKit is the authority that *activates* and *deactivates* the underlying `AVAudioSession`
|
|
55
|
+
* when a call is answered/ended from the system UI (lock screen, Call UI, Bluetooth, etc).
|
|
56
|
+
*
|
|
57
|
+
* WebRTC on iOS wraps `AVAudioSession` with `RTCAudioSession` and its AudioDeviceModule relies on
|
|
58
|
+
* being notified of those lifecycle transitions to correctly start/stop audio I/O and keep its
|
|
59
|
+
* internal activation state consistent (e.g. activation count, playout/recording start).
|
|
60
|
+
*
|
|
61
|
+
* If these callbacks don’t reach WebRTC, answering via the native dialer UI can result in:
|
|
62
|
+
* - no microphone capture / one-way audio
|
|
63
|
+
* - silent playout until the app forces an audio reconfiguration
|
|
64
|
+
* - flaky audio routing (speaker/earpiece/Bluetooth) across subsequent calls
|
|
65
|
+
*
|
|
66
|
+
* We forward CallKeep’s `didActivateAudioSession` / `didDeactivateAudioSession` events to WebRTC’s
|
|
67
|
+
* `RTCAudioSession.audioSessionDidActivate()` / `audioSessionDidDeactivate()` methods.
|
|
68
|
+
*/
|
|
69
|
+
function didActivateAudioSession() {
|
|
70
|
+
logger.debug('didActivateAudioSession');
|
|
71
|
+
RTCAudioSession.audioSessionDidActivate();
|
|
72
|
+
}
|
|
73
|
+
function didDeactivateAudioSession() {
|
|
74
|
+
logger.debug('didDeactivateAudioSession');
|
|
75
|
+
RTCAudioSession.audioSessionDidDeactivate();
|
|
76
|
+
}
|
|
49
77
|
function didDisplayIncomingCall(callUUID, payload) {
|
|
50
78
|
const voipPushNotification = getVoipPushNotificationLib();
|
|
51
79
|
// @ts-expect-error - call_cid is not part of RNCallKeepEventPayload
|
|
@@ -84,6 +112,16 @@ export function setupIosCallKeepEvents(pushConfig) {
|
|
|
84
112
|
}) => {
|
|
85
113
|
didDisplayIncomingCall(callUUID, payload);
|
|
86
114
|
});
|
|
115
|
+
const {
|
|
116
|
+
remove: removeDidActivateAudioSession
|
|
117
|
+
} = callkeep.addEventListener('didActivateAudioSession', () => {
|
|
118
|
+
didActivateAudioSession();
|
|
119
|
+
});
|
|
120
|
+
const {
|
|
121
|
+
remove: removeDidDeactivateAudioSession
|
|
122
|
+
} = callkeep.addEventListener('didDeactivateAudioSession', () => {
|
|
123
|
+
didDeactivateAudioSession();
|
|
124
|
+
});
|
|
87
125
|
const {
|
|
88
126
|
remove: removeDidLoadWithEvents
|
|
89
127
|
} = callkeep.addEventListener('didLoadWithEvents', events => {
|
|
@@ -101,6 +139,10 @@ export function setupIosCallKeepEvents(pushConfig) {
|
|
|
101
139
|
answerCall(data.callUUID);
|
|
102
140
|
} else if (name === 'RNCallKeepPerformEndCallAction') {
|
|
103
141
|
endCall(data.callUUID);
|
|
142
|
+
} else if (name === 'RNCallKeepDidActivateAudioSession') {
|
|
143
|
+
didActivateAudioSession();
|
|
144
|
+
} else if (name === 'RNCallKeepDidDeactivateAudioSession') {
|
|
145
|
+
didDeactivateAudioSession();
|
|
104
146
|
}
|
|
105
147
|
});
|
|
106
148
|
});
|
|
@@ -108,6 +150,8 @@ export function setupIosCallKeepEvents(pushConfig) {
|
|
|
108
150
|
removeAnswerCall();
|
|
109
151
|
removeEndCall();
|
|
110
152
|
removeDisplayIncomingCall();
|
|
153
|
+
removeDidActivateAudioSession();
|
|
154
|
+
removeDidDeactivateAudioSession();
|
|
111
155
|
removeDidLoadWithEvents();
|
|
112
156
|
});
|
|
113
157
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["pushAcceptedIncomingCallCId$","voipCallkeepAcceptedCallOnNativeDialerMap$","voipCallkeepCallOnForegroundMap$","voipPushNotificationCallCId$","RxUtils","videoLoggerSystem","getCallKeepLib","getVoipPushNotificationLib","clearPushWSEventSubscriptions","processCallFromPushInBackground","AppState","NativeModules","Platform","setPushLogoutCallback","setupIosCallKeepEvents","pushConfig","OS","ios","pushProviderName","android","incomingCallChannel","getLogger","debug","logger","callkeep","getCallCid","callUUID","call_cid","StreamVideoReactNative","getIncomingCallCid","voipPushNotificationCallCId","getCurrentValue","next","undefined","answerCall","then","iosCallkeepAcceptCall","endCall","iosCallkeepRejectCall","didDisplayIncomingCall","payload","voipPushNotification","currentState","uuid","cid","onVoipNotificationCompleted","remove","removeAnswerCall","addEventListener","removeEndCall","removeDisplayIncomingCall","removeDidLoadWithEvents","events","Array","isArray","length","forEach","event","name","data","callUUIDFromCallkeep","shouldProcessCallFromCallkeep","removeIncomingCall"],"sourceRoot":"../../../../src","sources":["utils/push/setupIosCallKeepEvents.ts"],"mappings":"AAAA,SACEA,4BAA4B,EAC5BC,0CAA0C,EAC1CC,gCAAgC,EAChCC,4BAA4B,QACvB,uBAAuB;AAC9B,SAASC,OAAO,EAAEC,iBAAiB,QAAQ,yBAAyB;AACpE,SAASC,cAAc,EAAEC,0BAA0B,QAAQ,QAAQ;AAEnE,SACEC,6BAA6B,EAC7BC,+BAA+B,QAC1B,kBAAkB;AACzB,SAASC,QAAQ,EAAEC,aAAa,EAAEC,QAAQ,QAAQ,cAAc;AAChE,SAASC,qBAAqB,QAAQ,gCAAgC;AAItE;AACA;AACA;AACA,OAAO,SAASC,sBAAsBA,CACpCC,UAAkD,EAClD;EACA,
|
|
1
|
+
{"version":3,"names":["pushAcceptedIncomingCallCId$","voipCallkeepAcceptedCallOnNativeDialerMap$","voipCallkeepCallOnForegroundMap$","voipPushNotificationCallCId$","RxUtils","videoLoggerSystem","getCallKeepLib","getVoipPushNotificationLib","clearPushWSEventSubscriptions","processCallFromPushInBackground","AppState","NativeModules","Platform","RTCAudioSession","setPushLogoutCallback","setupIosCallKeepEvents","pushConfig","OS","ios","pushProviderName","android","incomingCallChannel","getLogger","debug","logger","callkeep","getCallCid","callUUID","call_cid","StreamVideoReactNative","getIncomingCallCid","voipPushNotificationCallCId","getCurrentValue","next","undefined","answerCall","then","iosCallkeepAcceptCall","endCall","iosCallkeepRejectCall","didActivateAudioSession","audioSessionDidActivate","didDeactivateAudioSession","audioSessionDidDeactivate","didDisplayIncomingCall","payload","voipPushNotification","currentState","uuid","cid","onVoipNotificationCompleted","remove","removeAnswerCall","addEventListener","removeEndCall","removeDisplayIncomingCall","removeDidActivateAudioSession","removeDidDeactivateAudioSession","removeDidLoadWithEvents","events","Array","isArray","length","forEach","event","name","data","callUUIDFromCallkeep","shouldProcessCallFromCallkeep","removeIncomingCall"],"sourceRoot":"../../../../src","sources":["utils/push/setupIosCallKeepEvents.ts"],"mappings":"AAAA,SACEA,4BAA4B,EAC5BC,0CAA0C,EAC1CC,gCAAgC,EAChCC,4BAA4B,QACvB,uBAAuB;AAC9B,SAASC,OAAO,EAAEC,iBAAiB,QAAQ,yBAAyB;AACpE,SAASC,cAAc,EAAEC,0BAA0B,QAAQ,QAAQ;AAEnE,SACEC,6BAA6B,EAC7BC,+BAA+B,QAC1B,kBAAkB;AACzB,SAASC,QAAQ,EAAEC,aAAa,EAAEC,QAAQ,QAAQ,cAAc;AAChE,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,qBAAqB,QAAQ,gCAAgC;AAItE;AACA;AACA;AACA,OAAO,SAASC,sBAAsBA,CACpCC,UAAkD,EAClD;EACA,IAAIJ,QAAQ,CAACK,EAAE,KAAK,KAAK,IAAI,CAACD,UAAU,CAACE,GAAG,CAACC,gBAAgB,EAAE;IAC7D;EACF;EACA,IAAI,CAACH,UAAU,CAACI,OAAO,CAACC,mBAAmB,EAAE;IAC3C;IACAhB,iBAAiB,CACdiB,SAAS,CAAC,wBAAwB,CAAC,CACnCC,KAAK,CACJ,oFACF,CAAC;IACH;EACF;EACA,MAAMC,MAAM,GAAGnB,iBAAiB,CAACiB,SAAS,CAAC,wBAAwB,CAAC;EACpE,MAAMG,QAAQ,GAAGnB,cAAc,CAAC,CAAC;EAEjC,eAAeoB,UAAUA,CAACC,QAAgB,EAA+B;IACvE,IAAI;MACF,MAAMC,QAAQ,GACZ,MAAMjB,aAAa,CAACkB,sBAAsB,CAACC,kBAAkB,CAACH,QAAQ,CAAC;MACzE;MACA;MACA,MAAMI,2BAA2B,GAAG3B,OAAO,CAAC4B,eAAe,CACzD7B,4BACF,CAAC;MACD,IAAI,CAAC4B,2BAA2B,EAAE;QAChCP,MAAM,CAACD,KAAK,CACV,yEAAyEK,QAAQ,kBAAkBD,QAAQ,EAC7G,CAAC;QACDxB,4BAA4B,CAAC8B,IAAI,CAACL,QAAQ,CAAC;MAC7C;MACA,OAAOA,QAAQ;IACjB,CAAC,CAAC,MAAM;MACNJ,MAAM,CAACD,KAAK,CACV,8DAA8DI,QAAQ,6EACxE,CAAC;IACH;IACA,OAAOO,SAAS;EAClB;EAEA,SAASC,UAAUA,CAACR,QAAgB,EAAE;IACpCD,UAAU,CAACC,QAAQ,CAAC,CAACS,IAAI,CAAER,QAAQ,IAAK;MACtCJ,MAAM,CAACD,KAAK,CAAC,mCAAmCK,QAAQ,EAAE,CAAC;MAC3DS,qBAAqB,CAACT,QAAQ,EAAED,QAAQ,CAAC;IAC3C,CAAC,CAAC;EACJ;EAEA,SAASW,OAAOA,CAACX,QAAgB,EAAE;IACjCD,UAAU,CAACC,QAAQ,CAAC,CAACS,IAAI,CAAER,QAAQ,IAAK;MACtCJ,MAAM,CAACD,KAAK,CAAC,gCAAgCK,QAAQ,EAAE,CAAC;MACxDW,qBAAqB,CAACX,QAAQ,EAAED,QAAQ,EAAEX,UAAW,CAAC;IACxD,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,SAASwB,uBAAuBA,CAAA,EAAG;IACjChB,MAAM,CAACD,KAAK,CAAC,yBAAyB,CAAC;IACvCV,eAAe,CAAC4B,uBAAuB,CAAC,CAAC;EAC3C;EAEA,SAASC,yBAAyBA,CAAA,EAAG;IACnClB,MAAM,CAACD,KAAK,CAAC,2BAA2B,CAAC;IACzCV,eAAe,CAAC8B,yBAAyB,CAAC,CAAC;EAC7C;EAEA,SAASC,sBAAsBA,CAACjB,QAAgB,EAAEkB,OAAe,EAAE;IACjE,MAAMC,oBAAoB,GAAGvC,0BAA0B,CAAC,CAAC;IACzD;IACA,MAAMqB,QAAQ,GAAGiB,OAAO,EAAEjB,QAA8B;IACxDJ,MAAM,CAACD,KAAK,CACV,+CAA+CI,QAAQ,cAAcC,QAAQ,EAC/E,CAAC;IACD,IAAIA,QAAQ,EAAE;MACZ,IAAIlB,QAAQ,CAACqC,YAAY,KAAK,YAAY,EAAE;QAC1CtC,+BAA+B,CAC7BO,UAAU,EACVY,QAAQ,EACR,qBACF,CAAC;MACH;MACA1B,gCAAgC,CAAC+B,IAAI,CAAC;QACpCe,IAAI,EAAErB,QAAQ;QACdsB,GAAG,EAAErB;MACP,CAAC,CAAC;IACJ;IACAkB,oBAAoB,CAACI,2BAA2B,CAACvB,QAAQ,CAAC;EAC5D;EAEA,MAAM;IAAEwB,MAAM,EAAEC;EAAiB,CAAC,GAAG3B,QAAQ,CAAC4B,gBAAgB,CAC5D,YAAY,EACZ,CAAC;IAAE1B;EAAS,CAAC,KAAK;IAChBQ,UAAU,CAACR,QAAQ,CAAC;EACtB,CACF,CAAC;EACD,MAAM;IAAEwB,MAAM,EAAEG;EAAc,CAAC,GAAG7B,QAAQ,CAAC4B,gBAAgB,CACzD,SAAS,EACT,CAAC;IAAE1B;EAAS,CAAC,KAAK;IAChBW,OAAO,CAACX,QAAQ,CAAC;EACnB,CACF,CAAC;EAED,MAAM;IAAEwB,MAAM,EAAEI;EAA0B,CAAC,GAAG9B,QAAQ,CAAC4B,gBAAgB,CACrE,wBAAwB,EACxB,CAAC;IAAE1B,QAAQ;IAAEkB;EAAQ,CAAC,KAAK;IACzBD,sBAAsB,CAACjB,QAAQ,EAAEkB,OAAO,CAAC;EAC3C,CACF,CAAC;EAED,MAAM;IAAEM,MAAM,EAAEK;EAA8B,CAAC,GAAG/B,QAAQ,CAAC4B,gBAAgB,CACzE,yBAAyB,EACzB,MAAM;IACJb,uBAAuB,CAAC,CAAC;EAC3B,CACF,CAAC;EAED,MAAM;IAAEW,MAAM,EAAEM;EAAgC,CAAC,GAAGhC,QAAQ,CAAC4B,gBAAgB,CAC3E,2BAA2B,EAC3B,MAAM;IACJX,yBAAyB,CAAC,CAAC;EAC7B,CACF,CAAC;EAED,MAAM;IAAES,MAAM,EAAEO;EAAwB,CAAC,GAAGjC,QAAQ,CAAC4B,gBAAgB,CACnE,mBAAmB,EAClBM,MAAM,IAAK;IACV,IAAI,CAACA,MAAM,IAAI,CAACC,KAAK,CAACC,OAAO,CAACF,MAAM,CAAC,IAAIA,MAAM,CAACG,MAAM,GAAG,CAAC,EAAE;MAC1D;IACF;IAEAH,MAAM,CAACI,OAAO,CAAEC,KAAK,IAAK;MACxB,MAAM;QAAEC,IAAI;QAAEC;MAAK,CAAC,GAAGF,KAAK;MAC5B,IAAIC,IAAI,KAAK,kCAAkC,EAAE;QAC/CrB,sBAAsB,CAACsB,IAAI,CAACvC,QAAQ,EAAEuC,IAAI,CAACrB,OAAO,CAAC;MACrD,CAAC,MAAM,IAAIoB,IAAI,KAAK,mCAAmC,EAAE;QACvD9B,UAAU,CAAC+B,IAAI,CAACvC,QAAQ,CAAC;MAC3B,CAAC,MAAM,IAAIsC,IAAI,KAAK,gCAAgC,EAAE;QACpD3B,OAAO,CAAC4B,IAAI,CAACvC,QAAQ,CAAC;MACxB,CAAC,MAAM,IAAIsC,IAAI,KAAK,mCAAmC,EAAE;QACvDzB,uBAAuB,CAAC,CAAC;MAC3B,CAAC,MAAM,IAAIyB,IAAI,KAAK,qCAAqC,EAAE;QACzDvB,yBAAyB,CAAC,CAAC;MAC7B;IACF,CAAC,CAAC;EACJ,CACF,CAAC;EAED5B,qBAAqB,CAAC,YAAY;IAChCsC,gBAAgB,CAAC,CAAC;IAClBE,aAAa,CAAC,CAAC;IACfC,yBAAyB,CAAC,CAAC;IAC3BC,6BAA6B,CAAC,CAAC;IAC/BC,+BAA+B,CAAC,CAAC;IACjCC,uBAAuB,CAAC,CAAC;EAC3B,CAAC,CAAC;AACJ;AAEA,MAAMrB,qBAAqB,GAAGA,CAC5BT,QAA4B,EAC5BuC,oBAA4B,KACzB;EACH,IAAI,CAACC,6BAA6B,CAACxC,QAAQ,EAAEuC,oBAAoB,CAAC,EAAE;IAClE;EACF;EACA3D,6BAA6B,CAACoB,QAAQ,CAAC;EACvC;EACA3B,0CAA0C,CAACgC,IAAI,CAAC;IAC9Ce,IAAI,EAAEmB,oBAAoB;IAC1BlB,GAAG,EAAErB;EACP,CAAC,CAAC;EACF;EACA5B,4BAA4B,CAACiC,IAAI,CAACL,QAAQ,CAAC;EAC3C;EACA1B,gCAAgC,CAAC+B,IAAI,CAACC,SAAS,CAAC;AAClD,CAAC;AAED,MAAMK,qBAAqB,GAAG,MAAAA,CAC5BX,QAA4B,EAC5BuC,oBAA4B,EAC5BnD,UAAsB,KACnB;EACH,IAAI,CAACoD,6BAA6B,CAACxC,QAAQ,EAAEuC,oBAAoB,CAAC,EAAE;IAClE;EACF;EACA3D,6BAA6B,CAACoB,QAAQ,CAAC;EACvC;EACA,MAAMG,2BAA2B,GAAG3B,OAAO,CAAC4B,eAAe,CACzD7B,4BACF,CAAC;EACD,IAAI4B,2BAA2B,KAAKH,QAAQ,EAAE;IAC5C3B,0CAA0C,CAACgC,IAAI,CAACC,SAAS,CAAC;IAC1DhC,gCAAgC,CAAC+B,IAAI,CAACC,SAAS,CAAC;IAChD/B,4BAA4B,CAAC8B,IAAI,CAACC,SAAS,CAAC;EAC9C;EAEA,MAAMzB,+BAA+B,CAACO,UAAU,EAAEY,QAAQ,EAAE,SAAS,CAAC;EACtE,MAAMjB,aAAa,CAACkB,sBAAsB,EAAEwC,kBAAkB,CAACzC,QAAQ,CAAC;AAC1E,CAAC;;AAED;AACA;AACA;AACA;AACA,MAAMwC,6BAA6B,GAAGA,CACpCxC,QAA4B,EAC5BuC,oBAA4B,KACL;EACvB,IAAI,CAACvC,QAAQ,IAAI,CAACuC,oBAAoB,EAAE;IACtC,OAAO,KAAK;EACd;EACA,OAAO,IAAI;AACb,CAAC","ignoreList":[]}
|
package/dist/module/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const version = '1.28.
|
|
1
|
+
export const version = '1.28.2';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setupIosCallKeepEvents.d.ts","sourceRoot":"","sources":["../../../../src/utils/push/setupIosCallKeepEvents.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"setupIosCallKeepEvents.d.ts","sourceRoot":"","sources":["../../../../src/utils/push/setupIosCallKeepEvents.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAWhE;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,WAAW,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,QA4KnD"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "1.28.
|
|
1
|
+
export declare const version = "1.28.2";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stream-io/video-react-native-sdk",
|
|
3
|
-
"version": "1.28.
|
|
3
|
+
"version": "1.28.2",
|
|
4
4
|
"description": "Stream Video SDK for React Native",
|
|
5
5
|
"author": "https://getstream.io",
|
|
6
6
|
"homepage": "https://getstream.io/video/docs/react-native/",
|
|
@@ -50,8 +50,8 @@
|
|
|
50
50
|
"!**/.*"
|
|
51
51
|
],
|
|
52
52
|
"dependencies": {
|
|
53
|
-
"@stream-io/video-client": "1.41.
|
|
54
|
-
"@stream-io/video-react-bindings": "1.13.
|
|
53
|
+
"@stream-io/video-client": "1.41.2",
|
|
54
|
+
"@stream-io/video-react-bindings": "1.13.2",
|
|
55
55
|
"intl-pluralrules": "2.0.1",
|
|
56
56
|
"lodash.merge": "^4.6.2",
|
|
57
57
|
"react-native-url-polyfill": "^3.0.0",
|
|
@@ -5,9 +5,9 @@ const StreamInCallManagerNativeModule = NativeModules.StreamInCallManager;
|
|
|
5
5
|
|
|
6
6
|
const streamRNVideoSDKGlobals: StreamRNVideoSDKGlobals = {
|
|
7
7
|
callManager: {
|
|
8
|
-
setup: ({
|
|
8
|
+
setup: ({ defaultDevice }) => {
|
|
9
9
|
StreamInCallManagerNativeModule.setDefaultAudioDeviceEndpointType(
|
|
10
|
-
|
|
10
|
+
defaultDevice,
|
|
11
11
|
);
|
|
12
12
|
StreamInCallManagerNativeModule.setup();
|
|
13
13
|
},
|
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
processCallFromPushInBackground,
|
|
13
13
|
} from './internal/utils';
|
|
14
14
|
import { AppState, NativeModules, Platform } from 'react-native';
|
|
15
|
+
import { RTCAudioSession } from '@stream-io/react-native-webrtc';
|
|
15
16
|
import { setPushLogoutCallback } from '../internal/pushLogoutCallback';
|
|
16
17
|
|
|
17
18
|
type PushConfig = NonNullable<StreamVideoConfig['push']>;
|
|
@@ -75,6 +76,34 @@ export function setupIosCallKeepEvents(
|
|
|
75
76
|
});
|
|
76
77
|
}
|
|
77
78
|
|
|
79
|
+
/**
|
|
80
|
+
* CallKeep / CallKit audio-session events -> WebRTC (iOS)
|
|
81
|
+
*
|
|
82
|
+
* iOS CallKit is the authority that *activates* and *deactivates* the underlying `AVAudioSession`
|
|
83
|
+
* when a call is answered/ended from the system UI (lock screen, Call UI, Bluetooth, etc).
|
|
84
|
+
*
|
|
85
|
+
* WebRTC on iOS wraps `AVAudioSession` with `RTCAudioSession` and its AudioDeviceModule relies on
|
|
86
|
+
* being notified of those lifecycle transitions to correctly start/stop audio I/O and keep its
|
|
87
|
+
* internal activation state consistent (e.g. activation count, playout/recording start).
|
|
88
|
+
*
|
|
89
|
+
* If these callbacks don’t reach WebRTC, answering via the native dialer UI can result in:
|
|
90
|
+
* - no microphone capture / one-way audio
|
|
91
|
+
* - silent playout until the app forces an audio reconfiguration
|
|
92
|
+
* - flaky audio routing (speaker/earpiece/Bluetooth) across subsequent calls
|
|
93
|
+
*
|
|
94
|
+
* We forward CallKeep’s `didActivateAudioSession` / `didDeactivateAudioSession` events to WebRTC’s
|
|
95
|
+
* `RTCAudioSession.audioSessionDidActivate()` / `audioSessionDidDeactivate()` methods.
|
|
96
|
+
*/
|
|
97
|
+
function didActivateAudioSession() {
|
|
98
|
+
logger.debug('didActivateAudioSession');
|
|
99
|
+
RTCAudioSession.audioSessionDidActivate();
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
function didDeactivateAudioSession() {
|
|
103
|
+
logger.debug('didDeactivateAudioSession');
|
|
104
|
+
RTCAudioSession.audioSessionDidDeactivate();
|
|
105
|
+
}
|
|
106
|
+
|
|
78
107
|
function didDisplayIncomingCall(callUUID: string, payload: object) {
|
|
79
108
|
const voipPushNotification = getVoipPushNotificationLib();
|
|
80
109
|
// @ts-expect-error - call_cid is not part of RNCallKeepEventPayload
|
|
@@ -118,6 +147,20 @@ export function setupIosCallKeepEvents(
|
|
|
118
147
|
},
|
|
119
148
|
);
|
|
120
149
|
|
|
150
|
+
const { remove: removeDidActivateAudioSession } = callkeep.addEventListener(
|
|
151
|
+
'didActivateAudioSession',
|
|
152
|
+
() => {
|
|
153
|
+
didActivateAudioSession();
|
|
154
|
+
},
|
|
155
|
+
);
|
|
156
|
+
|
|
157
|
+
const { remove: removeDidDeactivateAudioSession } = callkeep.addEventListener(
|
|
158
|
+
'didDeactivateAudioSession',
|
|
159
|
+
() => {
|
|
160
|
+
didDeactivateAudioSession();
|
|
161
|
+
},
|
|
162
|
+
);
|
|
163
|
+
|
|
121
164
|
const { remove: removeDidLoadWithEvents } = callkeep.addEventListener(
|
|
122
165
|
'didLoadWithEvents',
|
|
123
166
|
(events) => {
|
|
@@ -133,6 +176,10 @@ export function setupIosCallKeepEvents(
|
|
|
133
176
|
answerCall(data.callUUID);
|
|
134
177
|
} else if (name === 'RNCallKeepPerformEndCallAction') {
|
|
135
178
|
endCall(data.callUUID);
|
|
179
|
+
} else if (name === 'RNCallKeepDidActivateAudioSession') {
|
|
180
|
+
didActivateAudioSession();
|
|
181
|
+
} else if (name === 'RNCallKeepDidDeactivateAudioSession') {
|
|
182
|
+
didDeactivateAudioSession();
|
|
136
183
|
}
|
|
137
184
|
});
|
|
138
185
|
},
|
|
@@ -142,6 +189,8 @@ export function setupIosCallKeepEvents(
|
|
|
142
189
|
removeAnswerCall();
|
|
143
190
|
removeEndCall();
|
|
144
191
|
removeDisplayIncomingCall();
|
|
192
|
+
removeDidActivateAudioSession();
|
|
193
|
+
removeDidDeactivateAudioSession();
|
|
145
194
|
removeDidLoadWithEvents();
|
|
146
195
|
});
|
|
147
196
|
}
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const version = '1.28.
|
|
1
|
+
export const version = '1.28.2';
|