@stream-io/video-react-native-sdk 1.30.5 → 1.31.1-beta.0
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 +11 -0
- package/android/src/main/AndroidManifest.xml +8 -1
- package/android/src/main/AndroidManifestNew.xml +11 -0
- package/android/src/main/java/com/streamvideo/reactnative/StreamVideoReactNativeModule.kt +127 -5
- package/android/src/main/java/com/streamvideo/reactnative/audio/utils/WebRtcAudioUtils.kt +70 -6
- package/android/src/main/java/com/streamvideo/reactnative/callmanager/StreamInCallManagerModule.kt +6 -4
- package/android/src/main/java/com/streamvideo/reactnative/keepalive/KeepAliveNotification.kt +83 -0
- package/android/src/main/java/com/streamvideo/reactnative/keepalive/StreamCallKeepAliveHeadlessService.kt +149 -0
- package/android/src/main/java/com/streamvideo/reactnative/screenshare/ScreenAudioCapture.kt +111 -0
- package/dist/commonjs/components/Call/CallControls/ScreenShareToggleButton.js +3 -2
- package/dist/commonjs/components/Call/CallControls/ScreenShareToggleButton.js.map +1 -1
- package/dist/commonjs/hooks/index.js +11 -0
- package/dist/commonjs/hooks/index.js.map +1 -1
- package/dist/commonjs/hooks/push/index.js +0 -2
- package/dist/commonjs/hooks/push/index.js.map +1 -1
- package/dist/commonjs/hooks/push/useCallingExpWithCallingStateEffect.js +144 -0
- package/dist/commonjs/hooks/push/useCallingExpWithCallingStateEffect.js.map +1 -0
- package/dist/commonjs/hooks/push/useIosVoipPushEventsSetupEffect.js +18 -31
- package/dist/commonjs/hooks/push/useIosVoipPushEventsSetupEffect.js.map +1 -1
- package/dist/commonjs/hooks/useAndroidKeepCallAliveEffect.js +64 -97
- package/dist/commonjs/hooks/useAndroidKeepCallAliveEffect.js.map +1 -1
- package/dist/commonjs/hooks/useScreenShareAudioMixing.js +126 -0
- package/dist/commonjs/hooks/useScreenShareAudioMixing.js.map +1 -0
- package/dist/commonjs/hooks/useScreenShareButton.js +57 -3
- package/dist/commonjs/hooks/useScreenShareButton.js.map +1 -1
- package/dist/commonjs/index.js +1 -0
- package/dist/commonjs/index.js.map +1 -1
- package/dist/commonjs/modules/ScreenShareAudioManager.js +54 -0
- package/dist/commonjs/modules/ScreenShareAudioManager.js.map +1 -0
- package/dist/commonjs/modules/call-manager/CallManager.js +26 -0
- package/dist/commonjs/modules/call-manager/CallManager.js.map +1 -1
- package/dist/commonjs/providers/StreamCall/index.js +16 -6
- package/dist/commonjs/providers/StreamCall/index.js.map +1 -1
- package/dist/commonjs/utils/StreamVideoRN/index.js +35 -21
- package/dist/commonjs/utils/StreamVideoRN/index.js.map +1 -1
- package/dist/commonjs/utils/internal/callingx/audioSessionPromise.js +68 -0
- package/dist/commonjs/utils/internal/callingx/audioSessionPromise.js.map +1 -0
- package/dist/commonjs/utils/internal/callingx/callingx.js +150 -0
- package/dist/commonjs/utils/internal/callingx/callingx.js.map +1 -0
- package/dist/commonjs/utils/internal/registerSDKGlobals.js +53 -3
- package/dist/commonjs/utils/internal/registerSDKGlobals.js.map +1 -1
- package/dist/commonjs/utils/keepCallAliveHeadlessTask.js +48 -0
- package/dist/commonjs/utils/keepCallAliveHeadlessTask.js.map +1 -0
- package/dist/commonjs/utils/push/android.js +135 -202
- package/dist/commonjs/utils/push/android.js.map +1 -1
- package/dist/commonjs/utils/push/internal/ios.js +17 -34
- package/dist/commonjs/utils/push/internal/ios.js.map +1 -1
- package/dist/commonjs/utils/push/internal/rxSubjects.js +1 -45
- package/dist/commonjs/utils/push/internal/rxSubjects.js.map +1 -1
- package/dist/commonjs/utils/push/internal/utils.js +71 -53
- package/dist/commonjs/utils/push/internal/utils.js.map +1 -1
- package/dist/commonjs/utils/push/ios.js.map +1 -1
- package/dist/commonjs/utils/push/libs/callingx.js +75 -0
- package/dist/commonjs/utils/push/libs/callingx.js.map +1 -0
- package/dist/commonjs/utils/push/libs/index.js +8 -19
- package/dist/commonjs/utils/push/libs/index.js.map +1 -1
- package/dist/commonjs/utils/push/libs/notifee/index.js +0 -19
- package/dist/commonjs/utils/push/libs/notifee/index.js.map +1 -1
- package/dist/commonjs/utils/push/setupCallingExpEvents.js +105 -0
- package/dist/commonjs/utils/push/setupCallingExpEvents.js.map +1 -0
- package/dist/commonjs/utils/push/setupIosVoipPushEvents.js +7 -6
- package/dist/commonjs/utils/push/setupIosVoipPushEvents.js.map +1 -1
- package/dist/commonjs/version.js +1 -1
- package/dist/commonjs/version.js.map +1 -1
- package/dist/module/components/Call/CallControls/ScreenShareToggleButton.js +3 -2
- package/dist/module/components/Call/CallControls/ScreenShareToggleButton.js.map +1 -1
- package/dist/module/hooks/index.js +1 -0
- package/dist/module/hooks/index.js.map +1 -1
- package/dist/module/hooks/push/index.js +0 -2
- package/dist/module/hooks/push/index.js.map +1 -1
- package/dist/module/hooks/push/useCallingExpWithCallingStateEffect.js +137 -0
- package/dist/module/hooks/push/useCallingExpWithCallingStateEffect.js.map +1 -0
- package/dist/module/hooks/push/useIosVoipPushEventsSetupEffect.js +18 -31
- package/dist/module/hooks/push/useIosVoipPushEventsSetupEffect.js.map +1 -1
- package/dist/module/hooks/useAndroidKeepCallAliveEffect.js +66 -99
- package/dist/module/hooks/useAndroidKeepCallAliveEffect.js.map +1 -1
- package/dist/module/hooks/useScreenShareAudioMixing.js +119 -0
- package/dist/module/hooks/useScreenShareAudioMixing.js.map +1 -0
- package/dist/module/hooks/useScreenShareButton.js +57 -3
- package/dist/module/hooks/useScreenShareButton.js.map +1 -1
- package/dist/module/index.js +1 -0
- package/dist/module/index.js.map +1 -1
- package/dist/module/modules/ScreenShareAudioManager.js +47 -0
- package/dist/module/modules/ScreenShareAudioManager.js.map +1 -0
- package/dist/module/modules/call-manager/CallManager.js +26 -0
- package/dist/module/modules/call-manager/CallManager.js.map +1 -1
- package/dist/module/providers/StreamCall/index.js +16 -6
- package/dist/module/providers/StreamCall/index.js.map +1 -1
- package/dist/module/utils/StreamVideoRN/index.js +35 -21
- package/dist/module/utils/StreamVideoRN/index.js.map +1 -1
- package/dist/module/utils/internal/callingx/audioSessionPromise.js +61 -0
- package/dist/module/utils/internal/callingx/audioSessionPromise.js.map +1 -0
- package/dist/module/utils/internal/callingx/callingx.js +140 -0
- package/dist/module/utils/internal/callingx/callingx.js.map +1 -0
- package/dist/module/utils/internal/registerSDKGlobals.js +53 -3
- package/dist/module/utils/internal/registerSDKGlobals.js.map +1 -1
- package/dist/module/utils/keepCallAliveHeadlessTask.js +42 -0
- package/dist/module/utils/keepCallAliveHeadlessTask.js.map +1 -0
- package/dist/module/utils/push/android.js +137 -204
- package/dist/module/utils/push/android.js.map +1 -1
- package/dist/module/utils/push/internal/ios.js +17 -34
- package/dist/module/utils/push/internal/ios.js.map +1 -1
- package/dist/module/utils/push/internal/rxSubjects.js +0 -44
- package/dist/module/utils/push/internal/rxSubjects.js.map +1 -1
- package/dist/module/utils/push/internal/utils.js +67 -50
- package/dist/module/utils/push/internal/utils.js.map +1 -1
- package/dist/module/utils/push/ios.js.map +1 -1
- package/dist/module/utils/push/libs/callingx.js +67 -0
- package/dist/module/utils/push/libs/callingx.js.map +1 -0
- package/dist/module/utils/push/libs/index.js +1 -2
- package/dist/module/utils/push/libs/index.js.map +1 -1
- package/dist/module/utils/push/libs/notifee/index.js +0 -18
- package/dist/module/utils/push/libs/notifee/index.js.map +1 -1
- package/dist/module/utils/push/setupCallingExpEvents.js +99 -0
- package/dist/module/utils/push/setupCallingExpEvents.js.map +1 -0
- package/dist/module/utils/push/setupIosVoipPushEvents.js +7 -6
- package/dist/module/utils/push/setupIosVoipPushEvents.js.map +1 -1
- package/dist/module/version.js +1 -1
- package/dist/module/version.js.map +1 -1
- package/dist/typescript/components/Call/CallControls/ScreenShareToggleButton.d.ts +6 -1
- package/dist/typescript/components/Call/CallControls/ScreenShareToggleButton.d.ts.map +1 -1
- package/dist/typescript/hooks/index.d.ts +1 -0
- package/dist/typescript/hooks/index.d.ts.map +1 -1
- package/dist/typescript/hooks/push/index.d.ts.map +1 -1
- package/dist/typescript/hooks/push/useCallingExpWithCallingStateEffect.d.ts +5 -0
- package/dist/typescript/hooks/push/useCallingExpWithCallingStateEffect.d.ts.map +1 -0
- package/dist/typescript/hooks/push/useIosVoipPushEventsSetupEffect.d.ts.map +1 -1
- package/dist/typescript/hooks/useAndroidKeepCallAliveEffect.d.ts.map +1 -1
- package/dist/typescript/hooks/useScreenShareAudioMixing.d.ts +14 -0
- package/dist/typescript/hooks/useScreenShareAudioMixing.d.ts.map +1 -0
- package/dist/typescript/hooks/useScreenShareButton.d.ts +39 -2
- package/dist/typescript/hooks/useScreenShareButton.d.ts.map +1 -1
- package/dist/typescript/index.d.ts +1 -0
- package/dist/typescript/index.d.ts.map +1 -1
- package/dist/typescript/modules/ScreenShareAudioManager.d.ts +28 -0
- package/dist/typescript/modules/ScreenShareAudioManager.d.ts.map +1 -0
- package/dist/typescript/modules/call-manager/CallManager.d.ts +5 -0
- package/dist/typescript/modules/call-manager/CallManager.d.ts.map +1 -1
- package/dist/typescript/providers/StreamCall/index.d.ts.map +1 -1
- package/dist/typescript/utils/StreamVideoRN/index.d.ts +22 -2
- package/dist/typescript/utils/StreamVideoRN/index.d.ts.map +1 -1
- package/dist/typescript/utils/StreamVideoRN/types.d.ts +59 -25
- package/dist/typescript/utils/StreamVideoRN/types.d.ts.map +1 -1
- package/dist/typescript/utils/internal/callingx/audioSessionPromise.d.ts +16 -0
- package/dist/typescript/utils/internal/callingx/audioSessionPromise.d.ts.map +1 -0
- package/dist/typescript/utils/internal/callingx/callingx.d.ts +18 -0
- package/dist/typescript/utils/internal/callingx/callingx.d.ts.map +1 -0
- package/dist/typescript/utils/internal/registerSDKGlobals.d.ts.map +1 -1
- package/dist/typescript/utils/keepCallAliveHeadlessTask.d.ts +10 -0
- package/dist/typescript/utils/keepCallAliveHeadlessTask.d.ts.map +1 -0
- package/dist/typescript/utils/push/android.d.ts +1 -2
- package/dist/typescript/utils/push/android.d.ts.map +1 -1
- package/dist/typescript/utils/push/internal/ios.d.ts.map +1 -1
- package/dist/typescript/utils/push/internal/rxSubjects.d.ts +0 -33
- package/dist/typescript/utils/push/internal/rxSubjects.d.ts.map +1 -1
- package/dist/typescript/utils/push/internal/utils.d.ts +14 -8
- package/dist/typescript/utils/push/internal/utils.d.ts.map +1 -1
- package/dist/typescript/utils/push/ios.d.ts +1 -2
- package/dist/typescript/utils/push/ios.d.ts.map +1 -1
- package/dist/typescript/utils/push/libs/callingx.d.ts +9 -0
- package/dist/typescript/utils/push/libs/callingx.d.ts.map +1 -0
- package/dist/typescript/utils/push/libs/firebaseMessaging/index.d.ts +16 -2
- package/dist/typescript/utils/push/libs/firebaseMessaging/index.d.ts.map +1 -1
- package/dist/typescript/utils/push/libs/index.d.ts +1 -2
- package/dist/typescript/utils/push/libs/index.d.ts.map +1 -1
- package/dist/typescript/utils/push/libs/notifee/index.d.ts +0 -1
- package/dist/typescript/utils/push/libs/notifee/index.d.ts.map +1 -1
- package/dist/typescript/utils/push/setupCallingExpEvents.d.ts +8 -0
- package/dist/typescript/utils/push/setupCallingExpEvents.d.ts.map +1 -0
- package/dist/typescript/utils/push/setupIosVoipPushEvents.d.ts.map +1 -1
- package/dist/typescript/version.d.ts +1 -1
- package/dist/typescript/version.d.ts.map +1 -1
- package/expo-config-plugin/dist/withAndroidManifest.js +1 -33
- package/expo-config-plugin/dist/withAndroidPermissions.js +2 -7
- package/expo-config-plugin/dist/withAppDelegate.js +19 -197
- package/expo-config-plugin/dist/withMainActivity.js +1 -1
- package/expo-config-plugin/dist/withiOSInfoPlist.js +2 -3
- package/ios/StreamInCallManager.m +2 -0
- package/ios/StreamInCallManager.swift +19 -7
- package/ios/StreamVideoReactNative.h +7 -4
- package/ios/StreamVideoReactNative.m +282 -86
- package/package.json +13 -18
- package/src/components/Call/CallControls/ScreenShareToggleButton.tsx +11 -1
- package/src/hooks/index.ts +1 -0
- package/src/hooks/push/index.ts +0 -2
- package/src/hooks/push/useCallingExpWithCallingStateEffect.ts +189 -0
- package/src/hooks/push/useIosVoipPushEventsSetupEffect.ts +21 -34
- package/src/hooks/useAndroidKeepCallAliveEffect.ts +94 -120
- package/src/hooks/useScreenShareAudioMixing.ts +130 -0
- package/src/hooks/useScreenShareButton.ts +87 -2
- package/src/index.ts +1 -0
- package/src/modules/ScreenShareAudioManager.ts +49 -0
- package/src/modules/call-manager/CallManager.ts +36 -0
- package/src/modules/call-manager/native-module.d.ts +7 -0
- package/src/providers/StreamCall/index.tsx +17 -6
- package/src/utils/StreamVideoRN/index.ts +42 -30
- package/src/utils/StreamVideoRN/types.ts +61 -25
- package/src/utils/internal/callingx/audioSessionPromise.ts +65 -0
- package/src/utils/internal/callingx/callingx.ts +194 -0
- package/src/utils/internal/registerSDKGlobals.ts +52 -4
- package/src/utils/keepCallAliveHeadlessTask.ts +54 -0
- package/src/utils/push/android.ts +198 -311
- package/src/utils/push/internal/ios.ts +28 -44
- package/src/utils/push/internal/rxSubjects.ts +0 -61
- package/src/utils/push/internal/utils.ts +108 -64
- package/src/utils/push/ios.ts +1 -6
- package/src/utils/push/libs/callingx.ts +89 -0
- package/src/utils/push/libs/index.ts +1 -2
- package/src/utils/push/libs/notifee/index.ts +0 -27
- package/src/utils/push/setupCallingExpEvents.ts +135 -0
- package/src/utils/push/setupIosVoipPushEvents.ts +11 -7
- package/src/version.ts +1 -1
- package/android/src/main/java/com/streamvideo/reactnative/util/CallAliveServiceChecker.kt +0 -95
- package/dist/commonjs/hooks/push/useIosCallkeepWithCallingStateEffect.js +0 -160
- package/dist/commonjs/hooks/push/useIosCallkeepWithCallingStateEffect.js.map +0 -1
- package/dist/commonjs/hooks/push/useProcessPushCallEffect.js +0 -67
- package/dist/commonjs/hooks/push/useProcessPushCallEffect.js.map +0 -1
- package/dist/commonjs/utils/push/libs/callkeep.js +0 -17
- package/dist/commonjs/utils/push/libs/callkeep.js.map +0 -1
- package/dist/commonjs/utils/push/libs/voipPushNotification.js +0 -17
- package/dist/commonjs/utils/push/libs/voipPushNotification.js.map +0 -1
- package/dist/commonjs/utils/push/setupIosCallKeepEvents.js +0 -205
- package/dist/commonjs/utils/push/setupIosCallKeepEvents.js.map +0 -1
- package/dist/module/hooks/push/useIosCallkeepWithCallingStateEffect.js +0 -153
- package/dist/module/hooks/push/useIosCallkeepWithCallingStateEffect.js.map +0 -1
- package/dist/module/hooks/push/useProcessPushCallEffect.js +0 -60
- package/dist/module/hooks/push/useProcessPushCallEffect.js.map +0 -1
- package/dist/module/utils/push/libs/callkeep.js +0 -11
- package/dist/module/utils/push/libs/callkeep.js.map +0 -1
- package/dist/module/utils/push/libs/voipPushNotification.js +0 -11
- package/dist/module/utils/push/libs/voipPushNotification.js.map +0 -1
- package/dist/module/utils/push/setupIosCallKeepEvents.js +0 -199
- package/dist/module/utils/push/setupIosCallKeepEvents.js.map +0 -1
- package/dist/typescript/hooks/push/useIosCallkeepWithCallingStateEffect.d.ts +0 -5
- package/dist/typescript/hooks/push/useIosCallkeepWithCallingStateEffect.d.ts.map +0 -1
- package/dist/typescript/hooks/push/useProcessPushCallEffect.d.ts +0 -8
- package/dist/typescript/hooks/push/useProcessPushCallEffect.d.ts.map +0 -1
- package/dist/typescript/utils/push/libs/callkeep.d.ts +0 -3
- package/dist/typescript/utils/push/libs/callkeep.d.ts.map +0 -1
- package/dist/typescript/utils/push/libs/voipPushNotification.d.ts +0 -3
- package/dist/typescript/utils/push/libs/voipPushNotification.d.ts.map +0 -1
- package/dist/typescript/utils/push/setupIosCallKeepEvents.d.ts +0 -6
- package/dist/typescript/utils/push/setupIosCallKeepEvents.d.ts.map +0 -1
- package/src/hooks/push/useIosCallkeepWithCallingStateEffect.ts +0 -235
- package/src/hooks/push/useProcessPushCallEffect.ts +0 -108
- package/src/utils/push/libs/callkeep.ts +0 -16
- package/src/utils/push/libs/voipPushNotification.ts +0 -17
- package/src/utils/push/setupIosCallKeepEvents.ts +0 -252
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.screenShareAudioMixingManager = exports.ScreenShareAudioManager = void 0;
|
|
7
|
+
var _reactNative = require("react-native");
|
|
8
|
+
const StreamVideoReactNative = _reactNative.NativeModules.StreamVideoReactNative;
|
|
9
|
+
class ScreenShareAudioManager {
|
|
10
|
+
/**
|
|
11
|
+
* Starts mixing screen share audio into the microphone audio track.
|
|
12
|
+
* On iOS, this enables audio buffer processing on the prepared mixer.
|
|
13
|
+
* On Android, this registers an audio processor that captures system media
|
|
14
|
+
* audio via AudioPlaybackCaptureConfiguration and mixes it into the mic buffer.
|
|
15
|
+
*/
|
|
16
|
+
async startScreenShareAudioMixing() {
|
|
17
|
+
return StreamVideoReactNative?.startScreenShareAudioMixing();
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Stops mixing screen share audio into the microphone audio track
|
|
22
|
+
* and restores the original audio pipeline.
|
|
23
|
+
*/
|
|
24
|
+
async stopScreenShareAudioMixing() {
|
|
25
|
+
return StreamVideoReactNative?.stopScreenShareAudioMixing();
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Starts in-app screen capture using RPScreenRecorder (iOS only).
|
|
30
|
+
* Unlike broadcast screen sharing, in-app capture runs in the main app process
|
|
31
|
+
* and can directly provide `.audioApp` sample buffers for mixing.
|
|
32
|
+
*
|
|
33
|
+
* @param includeAudio Whether to capture and mix app audio.
|
|
34
|
+
*/
|
|
35
|
+
async startInAppScreenCapture(includeAudio) {
|
|
36
|
+
if (_reactNative.Platform.OS !== 'ios') {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
return StreamVideoReactNative?.startInAppScreenCapture(includeAudio);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Stops in-app screen capture (iOS only).
|
|
44
|
+
*/
|
|
45
|
+
async stopInAppScreenCapture() {
|
|
46
|
+
if (_reactNative.Platform.OS !== 'ios') {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
return StreamVideoReactNative?.stopInAppScreenCapture();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
exports.ScreenShareAudioManager = ScreenShareAudioManager;
|
|
53
|
+
const screenShareAudioMixingManager = exports.screenShareAudioMixingManager = new ScreenShareAudioManager();
|
|
54
|
+
//# sourceMappingURL=ScreenShareAudioManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNative","require","StreamVideoReactNative","NativeModules","ScreenShareAudioManager","startScreenShareAudioMixing","stopScreenShareAudioMixing","startInAppScreenCapture","includeAudio","Platform","OS","stopInAppScreenCapture","exports","screenShareAudioMixingManager"],"sourceRoot":"../../../src","sources":["modules/ScreenShareAudioManager.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA,MAAMC,sBAAsB,GAAGC,0BAAa,CAACD,sBAAsB;AAE5D,MAAME,uBAAuB,CAAC;EACnC;AACF;AACA;AACA;AACA;AACA;EACE,MAAMC,2BAA2BA,CAAA,EAAkB;IACjD,OAAOH,sBAAsB,EAAEG,2BAA2B,CAAC,CAAC;EAC9D;;EAEA;AACF;AACA;AACA;EACE,MAAMC,0BAA0BA,CAAA,EAAkB;IAChD,OAAOJ,sBAAsB,EAAEI,0BAA0B,CAAC,CAAC;EAC7D;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACE,MAAMC,uBAAuBA,CAACC,YAAqB,EAAiB;IAClE,IAAIC,qBAAQ,CAACC,EAAE,KAAK,KAAK,EAAE;MACzB;IACF;IACA,OAAOR,sBAAsB,EAAEK,uBAAuB,CAACC,YAAY,CAAC;EACtE;;EAEA;AACF;AACA;EACE,MAAMG,sBAAsBA,CAAA,EAAkB;IAC5C,IAAIF,qBAAQ,CAACC,EAAE,KAAK,KAAK,EAAE;MACzB;IACF;IACA,OAAOR,sBAAsB,EAAES,sBAAsB,CAAC,CAAC;EACzD;AACF;AAACC,OAAA,CAAAR,uBAAA,GAAAA,uBAAA;AAEM,MAAMS,6BAA6B,GAAAD,OAAA,CAAAC,6BAAA,GAAG,IAAIT,uBAAuB,CAAC,CAAC","ignoreList":[]}
|
|
@@ -5,7 +5,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.CallManager = void 0;
|
|
7
7
|
var _reactNative = require("react-native");
|
|
8
|
+
var _callingx = require("../../utils/push/libs/callingx");
|
|
9
|
+
var _videoClient = require("@stream-io/video-client");
|
|
8
10
|
const NativeManager = _reactNative.NativeModules.StreamInCallManager;
|
|
11
|
+
const CallingxModule = (0, _callingx.getCallingxLibIfAvailable)();
|
|
9
12
|
const invariant = (condition, message) => {
|
|
10
13
|
if (!condition) throw new Error(message);
|
|
11
14
|
};
|
|
@@ -67,6 +70,15 @@ class SpeakerManager {
|
|
|
67
70
|
NativeManager.setForceSpeakerphoneOn(force);
|
|
68
71
|
};
|
|
69
72
|
}
|
|
73
|
+
const shouldBypassForCallKit = () => {
|
|
74
|
+
if (_reactNative.Platform.OS !== 'ios') {
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
if (!CallingxModule) {
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
return CallingxModule.isSetup && (CallingxModule.hasRegisteredCall() || CallingxModule.isOngoingCallsEnabled);
|
|
81
|
+
};
|
|
70
82
|
class CallManager {
|
|
71
83
|
android = new AndroidCallManager();
|
|
72
84
|
ios = new IOSCallManager();
|
|
@@ -90,6 +102,10 @@ class CallManager {
|
|
|
90
102
|
* @param config.enableStereoAudioOutput Whether to enable stereo audio output. Only supported for listener audio role.
|
|
91
103
|
*/
|
|
92
104
|
start = config => {
|
|
105
|
+
if (shouldBypassForCallKit()) {
|
|
106
|
+
_videoClient.videoLoggerSystem.getLogger('CallManager').debug('start: skipping start as callkit is handling the audio session');
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
93
109
|
NativeManager.setAudioRole(config?.audioRole ?? 'communicator');
|
|
94
110
|
if (config?.audioRole === 'communicator') {
|
|
95
111
|
const type = config.deviceEndpointType ?? 'speaker';
|
|
@@ -105,6 +121,10 @@ class CallManager {
|
|
|
105
121
|
* Stops the in call manager.
|
|
106
122
|
*/
|
|
107
123
|
stop = () => {
|
|
124
|
+
if (shouldBypassForCallKit()) {
|
|
125
|
+
_videoClient.videoLoggerSystem.getLogger('CallManager').debug('stop: skipping stop as callkit is handling the audio session');
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
108
128
|
NativeManager.stop();
|
|
109
129
|
};
|
|
110
130
|
|
|
@@ -113,6 +133,12 @@ class CallManager {
|
|
|
113
133
|
* in the native layer.
|
|
114
134
|
*/
|
|
115
135
|
logAudioState = () => NativeManager.logAudioState();
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* For debugging purposes, returns the current audio state as a string.
|
|
139
|
+
* @returns A string containing the current audio state information.
|
|
140
|
+
*/
|
|
141
|
+
getAudioStateLog = () => NativeManager.getAudioStateLog();
|
|
116
142
|
}
|
|
117
143
|
exports.CallManager = CallManager;
|
|
118
144
|
//# sourceMappingURL=CallManager.js.map
|
|
@@ -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","enableStereoAudioOutput","setEnableStereoAudioOutput","stop","logAudioState","exports"],"sourceRoot":"../../../../src","sources":["modules/call-manager/CallManager.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_callingx","_videoClient","NativeManager","NativeModules","StreamInCallManager","CallingxModule","getCallingxLibIfAvailable","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","shouldBypassForCallKit","isSetup","hasRegisteredCall","isOngoingCallsEnabled","CallManager","android","ios","speaker","start","config","videoLoggerSystem","getLogger","debug","setAudioRole","audioRole","type","deviceEndpointType","setDefaultAudioDeviceEndpointType","enableStereoAudioOutput","setEnableStereoAudioOutput","stop","logAudioState","getAudioStateLog","exports"],"sourceRoot":"../../../../src","sources":["modules/call-manager/CallManager.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -6,12 +6,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.StreamCall = void 0;
|
|
7
7
|
var _videoReactBindings = require("@stream-io/video-react-bindings");
|
|
8
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
-
var _useIosCallkeepWithCallingStateEffect = require("../../hooks/push/useIosCallkeepWithCallingStateEffect");
|
|
10
9
|
var _utils = require("../../utils/push/internal/utils");
|
|
11
10
|
var _useAndroidKeepCallAliveEffect = require("../../hooks/useAndroidKeepCallAliveEffect");
|
|
11
|
+
var _useScreenShareAudioMixing = require("../../hooks/useScreenShareAudioMixing");
|
|
12
12
|
var _AppStateListener = require("./AppStateListener");
|
|
13
13
|
var _DeviceStats = require("./DeviceStats");
|
|
14
14
|
var _constants = require("../../utils/push/internal/constants");
|
|
15
|
+
var _useCallingExpWithCallingStateEffect = require("../../hooks/push/useCallingExpWithCallingStateEffect");
|
|
15
16
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
16
17
|
// const PIP_CHANGE_EVENT = 'StreamVideoReactNative_PIP_CHANGE_EVENT';
|
|
17
18
|
|
|
@@ -30,7 +31,7 @@ const StreamCall = ({
|
|
|
30
31
|
}) => {
|
|
31
32
|
return /*#__PURE__*/_react.default.createElement(_videoReactBindings.StreamCallProvider, {
|
|
32
33
|
call: call
|
|
33
|
-
}, /*#__PURE__*/_react.default.createElement(_AppStateListener.AppStateListener, null), /*#__PURE__*/_react.default.createElement(AndroidKeepCallAlive, null), /*#__PURE__*/_react.default.createElement(
|
|
34
|
+
}, /*#__PURE__*/_react.default.createElement(_AppStateListener.AppStateListener, null), /*#__PURE__*/_react.default.createElement(AndroidKeepCallAlive, null), /*#__PURE__*/_react.default.createElement(CallingExpWithCallingState, null), /*#__PURE__*/_react.default.createElement(ClearPushWSSubscriptions, null), /*#__PURE__*/_react.default.createElement(ScreenShareAudioMixer, null), /*#__PURE__*/_react.default.createElement(_DeviceStats.DeviceStats, null), children);
|
|
34
35
|
};
|
|
35
36
|
|
|
36
37
|
/**
|
|
@@ -44,11 +45,20 @@ const AndroidKeepCallAlive = () => {
|
|
|
44
45
|
};
|
|
45
46
|
|
|
46
47
|
/**
|
|
47
|
-
* This is a renderless component to
|
|
48
|
-
*
|
|
48
|
+
* This is a renderless component to sync state between stream call and CallKit/Telecom.
|
|
49
|
+
* useCallingExpWithCallingStateEffect needs to called inside a child of StreamCallProvider.
|
|
50
|
+
*/
|
|
51
|
+
const CallingExpWithCallingState = () => {
|
|
52
|
+
(0, _useCallingExpWithCallingStateEffect.useCallingExpWithCallingStateEffect)();
|
|
53
|
+
return null;
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* This is a renderless component to manage screen share audio mixing lifecycle.
|
|
58
|
+
* It starts/stops native audio mixing based on screen share status and audio preference.
|
|
49
59
|
*/
|
|
50
|
-
const
|
|
51
|
-
(0,
|
|
60
|
+
const ScreenShareAudioMixer = () => {
|
|
61
|
+
(0, _useScreenShareAudioMixing.useScreenShareAudioMixing)();
|
|
52
62
|
return null;
|
|
53
63
|
};
|
|
54
64
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_videoReactBindings","require","_react","_interopRequireWildcard","
|
|
1
|
+
{"version":3,"names":["_videoReactBindings","require","_react","_interopRequireWildcard","_utils","_useAndroidKeepCallAliveEffect","_useScreenShareAudioMixing","_AppStateListener","_DeviceStats","_constants","_useCallingExpWithCallingStateEffect","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","StreamCall","children","createElement","StreamCallProvider","AppStateListener","AndroidKeepCallAlive","CallingExpWithCallingState","ClearPushWSSubscriptions","ScreenShareAudioMixer","DeviceStats","exports","useAndroidKeepCallAliveEffect","useCallingExpWithCallingStateEffect","useScreenShareAudioMixing","useEffect","pushUnsubscriptionCallbacks","forEach","cbArray","cb","clear","canAddPushWSSubscriptionsRef","current"],"sourceRoot":"../../../../src","sources":["providers/StreamCall/index.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -6,9 +6,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.StreamVideoRN = void 0;
|
|
7
7
|
var _pushLogoutCallback = _interopRequireDefault(require("../internal/pushLogoutCallback"));
|
|
8
8
|
var _newNotificationCallbacks = _interopRequireDefault(require("../internal/newNotificationCallbacks"));
|
|
9
|
-
var _setupIosCallKeepEvents = require("../push/setupIosCallKeepEvents");
|
|
10
9
|
var _setupIosVoipPushEvents = require("../push/setupIosVoipPushEvents");
|
|
10
|
+
var _setupCallingExpEvents = require("../push/setupCallingExpEvents");
|
|
11
|
+
var _callingx = require("../push/libs/callingx");
|
|
11
12
|
var _reactNative = require("react-native");
|
|
13
|
+
var _videoClient = require("@stream-io/video-client");
|
|
12
14
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
15
|
// Utility type for deep partial
|
|
14
16
|
|
|
@@ -33,10 +35,7 @@ const DEFAULT_STREAM_VIDEO_CONFIG = {
|
|
|
33
35
|
android: {
|
|
34
36
|
channel: {
|
|
35
37
|
id: 'stream_call_foreground_service',
|
|
36
|
-
name: '
|
|
37
|
-
lights: false,
|
|
38
|
-
vibration: false,
|
|
39
|
-
importance: 3
|
|
38
|
+
name: 'Ongoing calls'
|
|
40
39
|
},
|
|
41
40
|
notificationTexts: {
|
|
42
41
|
title: 'Call in progress',
|
|
@@ -58,15 +57,6 @@ class StreamVideoRN {
|
|
|
58
57
|
static updateConfig(updateConfig) {
|
|
59
58
|
this.config = deepMerge(this.config, updateConfig);
|
|
60
59
|
}
|
|
61
|
-
static updateAndroidIncomingCallChannel(updateChannel) {
|
|
62
|
-
const prevChannel = this.config.push?.android?.incomingCallChannel;
|
|
63
|
-
if (prevChannel) {
|
|
64
|
-
this.config.push.android.incomingCallChannel = {
|
|
65
|
-
...prevChannel,
|
|
66
|
-
...updateChannel
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
60
|
|
|
71
61
|
/**
|
|
72
62
|
* Set the push config for StreamVideoRN.
|
|
@@ -80,7 +70,28 @@ class StreamVideoRN {
|
|
|
80
70
|
* import App from './App';
|
|
81
71
|
* // Set push config
|
|
82
72
|
* const pushConfig = {}; // construct your config
|
|
83
|
-
*
|
|
73
|
+
* // Set CallKit/Android Telecom API integration options. All params are optional. If not provided, the default values will be used.
|
|
74
|
+
* const callingExpOptions = {
|
|
75
|
+
* ios: {
|
|
76
|
+
* callsHistory: true,
|
|
77
|
+
* displayCallTimeout: 60000,
|
|
78
|
+
* sound: 'ringtone',
|
|
79
|
+
* imageName: 'callkit_icon',
|
|
80
|
+
* },
|
|
81
|
+
* android: {
|
|
82
|
+
* incomingChannel: {
|
|
83
|
+
* id: 'stream_incoming_call_notifications',
|
|
84
|
+
* name: 'Call notifications',
|
|
85
|
+
* vibration: true,
|
|
86
|
+
* sound: 'default',
|
|
87
|
+
* },
|
|
88
|
+
* titleTransformer: (memberName: string, incoming: boolean) =>
|
|
89
|
+
* incoming
|
|
90
|
+
* ? `${memberName} is calling you`
|
|
91
|
+
* : `You are calling ${memberName}`,
|
|
92
|
+
* },
|
|
93
|
+
* };
|
|
94
|
+
* StreamVideoRN.setPushConfig(pushConfig, callingExpOptions);
|
|
84
95
|
* AppRegistry.registerComponent('app', () => App);
|
|
85
96
|
*/
|
|
86
97
|
static setPushConfig(pushConfig) {
|
|
@@ -88,13 +99,16 @@ class StreamVideoRN {
|
|
|
88
99
|
// Ignoring this config as push config was already set
|
|
89
100
|
return;
|
|
90
101
|
}
|
|
91
|
-
if (__DEV__ && (pushConfig.navigateAcceptCall || pushConfig.navigateToIncomingCall)) {
|
|
92
|
-
throw new Error(`Support for navigateAcceptCall or navigateToIncomingCall in pushConfig has been removed.
|
|
93
|
-
Please watch for incoming and outgoing calls in the root component of your app.
|
|
94
|
-
Please see https://getstream.io/video/docs/react-native/advanced/ringing-calls/#watch-for-incoming-and-outgoing-calls for more information.`);
|
|
95
|
-
}
|
|
96
102
|
this.config.push = pushConfig;
|
|
97
|
-
|
|
103
|
+
try {
|
|
104
|
+
const callingx = (0, _callingx.getCallingxLib)();
|
|
105
|
+
_videoClient.videoLoggerSystem.getLogger('StreamVideoRN.setPushConfig').info(JSON.stringify(this.config));
|
|
106
|
+
const options = (0, _callingx.extractCallingExpOptions)(this.config);
|
|
107
|
+
callingx.setup(options);
|
|
108
|
+
} catch {
|
|
109
|
+
throw new Error('react-native-callingx library is not installed. Please check the installation instructions: https://getstream.io/video/docs/react-native/incoming-calls/ringing-setup/react-native/.');
|
|
110
|
+
}
|
|
111
|
+
(0, _setupCallingExpEvents.setupCallingExpEvents)(pushConfig);
|
|
98
112
|
(0, _setupIosVoipPushEvents.setupIosVoipPushEvents)(pushConfig);
|
|
99
113
|
}
|
|
100
114
|
static getConfig() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_pushLogoutCallback","_interopRequireDefault","require","_newNotificationCallbacks","
|
|
1
|
+
{"version":3,"names":["_pushLogoutCallback","_interopRequireDefault","require","_newNotificationCallbacks","_setupIosVoipPushEvents","_setupCallingExpEvents","_callingx","_reactNative","_videoClient","e","__esModule","default","deepMerge","target","source","result","key","undefined","Array","isArray","DEFAULT_STREAM_VIDEO_CONFIG","foregroundService","android","channel","id","name","notificationTexts","title","body","taskToRun","Promise","StreamVideoRN","config","busyToneTimeout","updateConfig","setPushConfig","pushConfig","push","callingx","getCallingxLib","videoLoggerSystem","getLogger","info","JSON","stringify","options","extractCallingExpOptions","setup","Error","setupCallingExpEvents","setupIosVoipPushEvents","getConfig","onPushLogout","pushLogoutCallbacks","current","all","map","callback","then","resolve","clearPushLogoutCallbacks","addOnNewCallNotificationListener","newNotificationCallbacks","filter","cb","playBusyTone","NativeModules","StreamVideoReactNative","stopBusyTone","androidHasAudioOutputHardware","Platform","OS","hasAudioOutputHardware","androidHasMicrophoneHardware","hasMicrophoneHardware","androidHasCameraHardware","hasCameraHardware","exports"],"sourceRoot":"../../../../src","sources":["utils/StreamVideoRN/index.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.resolvePendingAudioSession = resolvePendingAudioSession;
|
|
7
|
+
exports.waitForAudioSessionActivation = waitForAudioSessionActivation;
|
|
8
|
+
var _videoClient = require("@stream-io/video-client");
|
|
9
|
+
/**
|
|
10
|
+
* Module to manage pending promise for audio session activation.
|
|
11
|
+
* Used to wait for iOS CallKit's didActivateAudioSession event after starting a call.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
const logger = _videoClient.videoLoggerSystem.getLogger('callingx');
|
|
15
|
+
let pendingResolve = null;
|
|
16
|
+
let pendingTimeout = null;
|
|
17
|
+
let resolveSetTime = null;
|
|
18
|
+
/**
|
|
19
|
+
* Flag to check if the audio session is already activated.
|
|
20
|
+
* This solves race condition for a cold start case, when the audio session is activated before the promise is created.
|
|
21
|
+
*/
|
|
22
|
+
let isAudioSessionAlreadyActivated = false;
|
|
23
|
+
const AUDIO_SESSION_TIMEOUT_MS = 5000;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Creates a promise that resolves when the audio session is activated,
|
|
27
|
+
* or after a timeout to prevent hanging indefinitely.
|
|
28
|
+
* @returns Promise that resolves when audio session is activated or timeout occurs
|
|
29
|
+
*/
|
|
30
|
+
function waitForAudioSessionActivation() {
|
|
31
|
+
if (isAudioSessionAlreadyActivated) {
|
|
32
|
+
isAudioSessionAlreadyActivated = false;
|
|
33
|
+
return Promise.resolve();
|
|
34
|
+
}
|
|
35
|
+
resolveSetTime = Date.now();
|
|
36
|
+
return new Promise(resolve => {
|
|
37
|
+
pendingResolve = resolve;
|
|
38
|
+
pendingTimeout = setTimeout(() => {
|
|
39
|
+
// Resolve on timeout to prevent hanging
|
|
40
|
+
logger.debug('audioSessionPromise timed out');
|
|
41
|
+
resolvePendingAudioSession();
|
|
42
|
+
}, AUDIO_SESSION_TIMEOUT_MS);
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Resolves the pending audio session activation promise.
|
|
48
|
+
* Called when the didActivateAudioSession event fires or on timeout.
|
|
49
|
+
*/
|
|
50
|
+
function resolvePendingAudioSession() {
|
|
51
|
+
if (pendingTimeout) {
|
|
52
|
+
clearTimeout(pendingTimeout);
|
|
53
|
+
pendingTimeout = null;
|
|
54
|
+
}
|
|
55
|
+
if (pendingResolve) {
|
|
56
|
+
pendingResolve();
|
|
57
|
+
if (resolveSetTime) {
|
|
58
|
+
const elapsedTime = Date.now() - resolveSetTime;
|
|
59
|
+
resolveSetTime = null;
|
|
60
|
+
logger.debug(`audioSessionPromise resolved in ${elapsedTime}ms`);
|
|
61
|
+
}
|
|
62
|
+
pendingResolve = null;
|
|
63
|
+
isAudioSessionAlreadyActivated = false;
|
|
64
|
+
} else {
|
|
65
|
+
isAudioSessionAlreadyActivated = true;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=audioSessionPromise.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_videoClient","require","logger","videoLoggerSystem","getLogger","pendingResolve","pendingTimeout","resolveSetTime","isAudioSessionAlreadyActivated","AUDIO_SESSION_TIMEOUT_MS","waitForAudioSessionActivation","Promise","resolve","Date","now","setTimeout","debug","resolvePendingAudioSession","clearTimeout","elapsedTime"],"sourceRoot":"../../../../../src","sources":["utils/internal/callingx/audioSessionPromise.ts"],"mappings":";;;;;;;AAKA,IAAAA,YAAA,GAAAC,OAAA;AALA;AACA;AACA;AACA;;AAIA,MAAMC,MAAM,GAAGC,8BAAiB,CAACC,SAAS,CAAC,UAAU,CAAC;AAEtD,IAAIC,cAAmC,GAAG,IAAI;AAC9C,IAAIC,cAAoD,GAAG,IAAI;AAC/D,IAAIC,cAA6B,GAAG,IAAI;AACxC;AACA;AACA;AACA;AACA,IAAIC,8BAA8B,GAAG,KAAK;AAE1C,MAAMC,wBAAwB,GAAG,IAAI;;AAErC;AACA;AACA;AACA;AACA;AACO,SAASC,6BAA6BA,CAAA,EAAkB;EAC7D,IAAIF,8BAA8B,EAAE;IAClCA,8BAA8B,GAAG,KAAK;IACtC,OAAOG,OAAO,CAACC,OAAO,CAAC,CAAC;EAC1B;EAEAL,cAAc,GAAGM,IAAI,CAACC,GAAG,CAAC,CAAC;EAC3B,OAAO,IAAIH,OAAO,CAAEC,OAAO,IAAK;IAC9BP,cAAc,GAAGO,OAAO;IACxBN,cAAc,GAAGS,UAAU,CAAC,MAAM;MAChC;MACAb,MAAM,CAACc,KAAK,CAAC,+BAA+B,CAAC;MAC7CC,0BAA0B,CAAC,CAAC;IAC9B,CAAC,EAAER,wBAAwB,CAAC;EAC9B,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACO,SAASQ,0BAA0BA,CAAA,EAAS;EACjD,IAAIX,cAAc,EAAE;IAClBY,YAAY,CAACZ,cAAc,CAAC;IAC5BA,cAAc,GAAG,IAAI;EACvB;EAEA,IAAID,cAAc,EAAE;IAClBA,cAAc,CAAC,CAAC;IAChB,IAAIE,cAAc,EAAE;MAClB,MAAMY,WAAW,GAAGN,IAAI,CAACC,GAAG,CAAC,CAAC,GAAGP,cAAc;MAC/CA,cAAc,GAAG,IAAI;MACrBL,MAAM,CAACc,KAAK,CAAC,mCAAmCG,WAAW,IAAI,CAAC;IAClE;IACAd,cAAc,GAAG,IAAI;IACrBG,8BAA8B,GAAG,KAAK;EACxC,CAAC,MAAM;IACLA,8BAA8B,GAAG,IAAI;EACvC;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.endCallingxCall = endCallingxCall;
|
|
7
|
+
exports.getCallDisplayName = getCallDisplayName;
|
|
8
|
+
exports.joinCallingxCall = joinCallingxCall;
|
|
9
|
+
exports.registerOutgoingCall = registerOutgoingCall;
|
|
10
|
+
var _reactNative = require("react-native");
|
|
11
|
+
var _callingx = require("../../push/libs/callingx");
|
|
12
|
+
var _audioSessionPromise = require("./audioSessionPromise");
|
|
13
|
+
var _videoClient = require("@stream-io/video-client");
|
|
14
|
+
/***
|
|
15
|
+
* Internal utils for callingx library usage from video-client.
|
|
16
|
+
* See @./registerSDKGlobals.ts for more usage details.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
const CallingxModule = (0, _callingx.getCallingxLibIfAvailable)();
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Gets the call display name. To be used for display in native call screen.
|
|
23
|
+
*/
|
|
24
|
+
function getCallDisplayName(callMembers, participants, currentUserId) {
|
|
25
|
+
if (!callMembers || !participants || !currentUserId) {
|
|
26
|
+
return 'Call';
|
|
27
|
+
}
|
|
28
|
+
let names = [];
|
|
29
|
+
if (callMembers.length > 0) {
|
|
30
|
+
// for ringing calls, members array contains all call members from the very early state and participants array is empty in the beginning
|
|
31
|
+
names = callMembers.filter(member => member.user.id !== currentUserId).map(member => member.user.name).filter(name => name !== undefined);
|
|
32
|
+
} else if (participants.length > 0) {
|
|
33
|
+
// for non-ringing calls, members array is empty and we rely on participants array there
|
|
34
|
+
names = participants.filter(participant => participant.userId !== currentUserId).map(participant => participant.name).filter(Boolean);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// if no names are found, we use the name of the current user
|
|
38
|
+
if (names.length === 0) {
|
|
39
|
+
names = [participants.find(participant => participant.userId === currentUserId)?.name ?? 'Call'];
|
|
40
|
+
}
|
|
41
|
+
return names.sort().join(', ');
|
|
42
|
+
}
|
|
43
|
+
function getCallDisplayNameFromCall(call) {
|
|
44
|
+
return getCallDisplayName(call.state.members, call.state.participants, call.currentUserId);
|
|
45
|
+
}
|
|
46
|
+
async function registerOutgoingCall(call) {
|
|
47
|
+
if (!CallingxModule || !CallingxModule.isSetup) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
const isOutcomingCall = call.ringing && call.isCreatedByMe;
|
|
51
|
+
if (!isOutcomingCall) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const logger = _videoClient.videoLoggerSystem.getLogger('callingx');
|
|
55
|
+
try {
|
|
56
|
+
logger.debug(`registerOutgoingCall: Registering outgoing call ${call.cid}`);
|
|
57
|
+
await CallingxModule.startCall(call.cid,
|
|
58
|
+
// unique id for call
|
|
59
|
+
call.id,
|
|
60
|
+
// phone number for display in dialer (we use call id as phone number)
|
|
61
|
+
getCallDisplayNameFromCall(call),
|
|
62
|
+
// display name for display in call screen
|
|
63
|
+
call.state.settings?.video?.enabled ?? false // is video call?
|
|
64
|
+
);
|
|
65
|
+
} catch (error) {
|
|
66
|
+
logger.error(`registerOutgoingCall: Error registering outgoing call in callingx: ${call.cid}`, error);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Starts the call in the callingx library.
|
|
72
|
+
* It is done by client on every join
|
|
73
|
+
* Does either of the following:
|
|
74
|
+
* 1. Sets the state for outgoing calls in the callingx library
|
|
75
|
+
* 2. Displays the incoming call in the callingx library
|
|
76
|
+
* 3. Optionally for non-ringing calls also when ongoing calls are enabled.
|
|
77
|
+
*/
|
|
78
|
+
async function joinCallingxCall(call, activeCalls) {
|
|
79
|
+
if (!CallingxModule || !CallingxModule.isSetup) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
const logger = _videoClient.videoLoggerSystem.getLogger('callingx');
|
|
83
|
+
const isOutcomingCall = call.ringing && call.isCreatedByMe;
|
|
84
|
+
const isIncomingCall = call.ringing && !call.isCreatedByMe;
|
|
85
|
+
if (isOutcomingCall || !call.ringing && CallingxModule.isOngoingCallsEnabled) {
|
|
86
|
+
logger.debug(`joinCallingxCall: Joining call ${call.cid}`);
|
|
87
|
+
try {
|
|
88
|
+
await CallingxModule.startCall(call.cid,
|
|
89
|
+
// unique id for call
|
|
90
|
+
call.id,
|
|
91
|
+
// phone number for display in dialer (we use call id as phone number)
|
|
92
|
+
getCallDisplayNameFromCall(call),
|
|
93
|
+
// display name for display in call screen
|
|
94
|
+
call.state.settings?.video?.enabled ?? false // is video call?
|
|
95
|
+
);
|
|
96
|
+
|
|
97
|
+
// Wait for audio session activation on iOS only
|
|
98
|
+
if (_reactNative.Platform.OS === 'ios') {
|
|
99
|
+
await (0, _audioSessionPromise.waitForAudioSessionActivation)();
|
|
100
|
+
}
|
|
101
|
+
} catch (error) {
|
|
102
|
+
logger.error(`startCallingxCall: Error starting call in callingx: ${call.cid}`, error);
|
|
103
|
+
}
|
|
104
|
+
} else if (isIncomingCall) {
|
|
105
|
+
logger.debug(`joinCallingxCall: Joining incoming call ${call.cid}`);
|
|
106
|
+
try {
|
|
107
|
+
// Leave any existing active ringing calls before joining a new ringing call
|
|
108
|
+
const activeCallsToLeave = activeCalls.filter(c => c.cid !== call.cid && c.ringing && c.state.callingState !== _videoClient.CallingState.LEFT);
|
|
109
|
+
for (const activeCall of activeCallsToLeave) {
|
|
110
|
+
logger.debug(`leaving active call ${activeCall.cid} before joining ${call.cid}`);
|
|
111
|
+
await activeCall.leave({
|
|
112
|
+
reason: 'cancel'
|
|
113
|
+
}).catch(e => {
|
|
114
|
+
logger.error(`failed to leave active call ${activeCall.cid}`, e);
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// Awaits native CallKit/Telecom registration before answering.
|
|
119
|
+
// Safe to call even if the call is already registered (e.g. from VoIP push) --
|
|
120
|
+
// iOS early-returns with no error, Android sends the registered broadcast.
|
|
121
|
+
await CallingxModule.displayIncomingCall(call.cid,
|
|
122
|
+
// unique id for call
|
|
123
|
+
call.id,
|
|
124
|
+
// phone number for display in dialer (we use call id as phone number)
|
|
125
|
+
getCallDisplayNameFromCall(call),
|
|
126
|
+
// display name for display in call screen
|
|
127
|
+
call.state.settings?.video?.enabled ?? false // is video call?
|
|
128
|
+
);
|
|
129
|
+
await CallingxModule.answerIncomingCall(call.cid);
|
|
130
|
+
if (_reactNative.Platform.OS === 'ios') {
|
|
131
|
+
await (0, _audioSessionPromise.waitForAudioSessionActivation)();
|
|
132
|
+
}
|
|
133
|
+
} catch (error) {
|
|
134
|
+
logger.error(`Error displaying incoming call in callingx: ${call.cid}`, error);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
async function endCallingxCall(call, reason) {
|
|
139
|
+
if (!CallingxModule || !CallingxModule.isSetup || !CallingxModule.isCallTracked(call.cid)) {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
const logger = _videoClient.videoLoggerSystem.getLogger('callingx');
|
|
143
|
+
try {
|
|
144
|
+
logger.debug(`endCallingxCall: Ending call ${call.cid}`);
|
|
145
|
+
await CallingxModule.endCallWithReason(call.cid, reason ?? 'local');
|
|
146
|
+
} catch (error) {
|
|
147
|
+
logger.error(`endCallingxCall: Error ending call in callingx: ${call.cid}`, error);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=callingx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_callingx","_audioSessionPromise","_videoClient","CallingxModule","getCallingxLibIfAvailable","getCallDisplayName","callMembers","participants","currentUserId","names","length","filter","member","user","id","map","name","undefined","participant","userId","Boolean","find","sort","join","getCallDisplayNameFromCall","call","state","members","registerOutgoingCall","isSetup","isOutcomingCall","ringing","isCreatedByMe","logger","videoLoggerSystem","getLogger","debug","cid","startCall","settings","video","enabled","error","joinCallingxCall","activeCalls","isIncomingCall","isOngoingCallsEnabled","Platform","OS","waitForAudioSessionActivation","activeCallsToLeave","c","callingState","CallingState","LEFT","activeCall","leave","reason","catch","e","displayIncomingCall","answerIncomingCall","endCallingxCall","isCallTracked","endCallWithReason"],"sourceRoot":"../../../../../src","sources":["utils/internal/callingx/callingx.ts"],"mappings":"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","ignoreList":[]}
|