@stream-io/video-react-native-sdk 1.31.1-beta.0 → 1.31.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 +11 -0
- package/android/src/main/AndroidManifest.xml +1 -8
- package/android/src/main/AndroidManifestNew.xml +0 -11
- package/android/src/main/java/com/streamvideo/reactnative/StreamVideoReactNativeModule.kt +5 -42
- package/android/src/main/java/com/streamvideo/reactnative/audio/utils/WebRtcAudioUtils.kt +6 -70
- package/android/src/main/java/com/streamvideo/reactnative/callmanager/StreamInCallManagerModule.kt +4 -6
- package/android/src/main/java/com/streamvideo/reactnative/util/CallAliveServiceChecker.kt +95 -0
- package/dist/commonjs/components/Participant/ParticipantView/ParticipantLabel.js +2 -6
- package/dist/commonjs/components/Participant/ParticipantView/ParticipantLabel.js.map +1 -1
- package/dist/commonjs/hooks/push/index.js +2 -0
- package/dist/commonjs/hooks/push/index.js.map +1 -1
- package/dist/commonjs/hooks/push/useIosCallkeepWithCallingStateEffect.js +160 -0
- package/dist/commonjs/hooks/push/useIosCallkeepWithCallingStateEffect.js.map +1 -0
- package/dist/commonjs/hooks/push/useIosVoipPushEventsSetupEffect.js +31 -18
- package/dist/commonjs/hooks/push/useIosVoipPushEventsSetupEffect.js.map +1 -1
- package/dist/commonjs/hooks/push/useProcessPushCallEffect.js +67 -0
- package/dist/commonjs/hooks/push/useProcessPushCallEffect.js.map +1 -0
- package/dist/commonjs/hooks/useAndroidKeepCallAliveEffect.js +97 -64
- package/dist/commonjs/hooks/useAndroidKeepCallAliveEffect.js.map +1 -1
- package/dist/commonjs/index.js +0 -1
- package/dist/commonjs/index.js.map +1 -1
- package/dist/commonjs/modules/call-manager/CallManager.js +0 -26
- package/dist/commonjs/modules/call-manager/CallManager.js.map +1 -1
- package/dist/commonjs/providers/StreamCall/index.js +6 -6
- package/dist/commonjs/providers/StreamCall/index.js.map +1 -1
- package/dist/commonjs/utils/StreamVideoRN/index.js +21 -35
- package/dist/commonjs/utils/StreamVideoRN/index.js.map +1 -1
- package/dist/commonjs/utils/internal/registerSDKGlobals.js +3 -53
- package/dist/commonjs/utils/internal/registerSDKGlobals.js.map +1 -1
- package/dist/commonjs/utils/push/android.js +202 -135
- package/dist/commonjs/utils/push/android.js.map +1 -1
- package/dist/commonjs/utils/push/internal/ios.js +34 -17
- package/dist/commonjs/utils/push/internal/ios.js.map +1 -1
- package/dist/commonjs/utils/push/internal/rxSubjects.js +45 -1
- package/dist/commonjs/utils/push/internal/rxSubjects.js.map +1 -1
- package/dist/commonjs/utils/push/internal/utils.js +53 -71
- 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/callkeep.js +17 -0
- package/dist/commonjs/utils/push/libs/callkeep.js.map +1 -0
- package/dist/commonjs/utils/push/libs/index.js +19 -8
- package/dist/commonjs/utils/push/libs/index.js.map +1 -1
- package/dist/commonjs/utils/push/libs/notifee/index.js +19 -0
- package/dist/commonjs/utils/push/libs/notifee/index.js.map +1 -1
- package/dist/commonjs/utils/push/libs/voipPushNotification.js +17 -0
- package/dist/commonjs/utils/push/libs/voipPushNotification.js.map +1 -0
- package/dist/commonjs/utils/push/setupIosCallKeepEvents.js +205 -0
- package/dist/commonjs/utils/push/setupIosCallKeepEvents.js.map +1 -0
- package/dist/commonjs/utils/push/setupIosVoipPushEvents.js +6 -7
- 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/Participant/ParticipantView/ParticipantLabel.js +2 -6
- package/dist/module/components/Participant/ParticipantView/ParticipantLabel.js.map +1 -1
- package/dist/module/hooks/push/index.js +2 -0
- package/dist/module/hooks/push/index.js.map +1 -1
- package/dist/module/hooks/push/useIosCallkeepWithCallingStateEffect.js +153 -0
- package/dist/module/hooks/push/useIosCallkeepWithCallingStateEffect.js.map +1 -0
- package/dist/module/hooks/push/useIosVoipPushEventsSetupEffect.js +31 -18
- package/dist/module/hooks/push/useIosVoipPushEventsSetupEffect.js.map +1 -1
- package/dist/module/hooks/push/useProcessPushCallEffect.js +60 -0
- package/dist/module/hooks/push/useProcessPushCallEffect.js.map +1 -0
- package/dist/module/hooks/useAndroidKeepCallAliveEffect.js +99 -66
- package/dist/module/hooks/useAndroidKeepCallAliveEffect.js.map +1 -1
- package/dist/module/index.js +0 -1
- package/dist/module/index.js.map +1 -1
- package/dist/module/modules/call-manager/CallManager.js +0 -26
- package/dist/module/modules/call-manager/CallManager.js.map +1 -1
- package/dist/module/providers/StreamCall/index.js +6 -6
- package/dist/module/providers/StreamCall/index.js.map +1 -1
- package/dist/module/utils/StreamVideoRN/index.js +21 -35
- package/dist/module/utils/StreamVideoRN/index.js.map +1 -1
- package/dist/module/utils/internal/registerSDKGlobals.js +3 -53
- package/dist/module/utils/internal/registerSDKGlobals.js.map +1 -1
- package/dist/module/utils/push/android.js +204 -137
- package/dist/module/utils/push/android.js.map +1 -1
- package/dist/module/utils/push/internal/ios.js +34 -17
- package/dist/module/utils/push/internal/ios.js.map +1 -1
- package/dist/module/utils/push/internal/rxSubjects.js +44 -0
- package/dist/module/utils/push/internal/rxSubjects.js.map +1 -1
- package/dist/module/utils/push/internal/utils.js +50 -67
- 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/callkeep.js +11 -0
- package/dist/module/utils/push/libs/callkeep.js.map +1 -0
- package/dist/module/utils/push/libs/index.js +2 -1
- package/dist/module/utils/push/libs/index.js.map +1 -1
- package/dist/module/utils/push/libs/notifee/index.js +18 -0
- package/dist/module/utils/push/libs/notifee/index.js.map +1 -1
- package/dist/module/utils/push/libs/voipPushNotification.js +11 -0
- package/dist/module/utils/push/libs/voipPushNotification.js.map +1 -0
- package/dist/module/utils/push/setupIosCallKeepEvents.js +199 -0
- package/dist/module/utils/push/setupIosCallKeepEvents.js.map +1 -0
- package/dist/module/utils/push/setupIosVoipPushEvents.js +6 -7
- 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/Participant/ParticipantView/ParticipantLabel.d.ts.map +1 -1
- package/dist/typescript/hooks/push/index.d.ts.map +1 -1
- package/dist/typescript/hooks/push/useIosCallkeepWithCallingStateEffect.d.ts +5 -0
- package/dist/typescript/hooks/push/useIosCallkeepWithCallingStateEffect.d.ts.map +1 -0
- package/dist/typescript/hooks/push/useIosVoipPushEventsSetupEffect.d.ts.map +1 -1
- package/dist/typescript/hooks/push/useProcessPushCallEffect.d.ts +8 -0
- package/dist/typescript/hooks/push/useProcessPushCallEffect.d.ts.map +1 -0
- package/dist/typescript/hooks/useAndroidKeepCallAliveEffect.d.ts.map +1 -1
- package/dist/typescript/index.d.ts +0 -1
- package/dist/typescript/index.d.ts.map +1 -1
- package/dist/typescript/modules/call-manager/CallManager.d.ts +0 -5
- package/dist/typescript/modules/call-manager/CallManager.d.ts.map +1 -1
- package/dist/typescript/utils/StreamVideoRN/index.d.ts +2 -22
- package/dist/typescript/utils/StreamVideoRN/index.d.ts.map +1 -1
- package/dist/typescript/utils/StreamVideoRN/types.d.ts +25 -59
- package/dist/typescript/utils/StreamVideoRN/types.d.ts.map +1 -1
- package/dist/typescript/utils/internal/registerSDKGlobals.d.ts.map +1 -1
- package/dist/typescript/utils/push/android.d.ts +2 -1
- 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 +33 -0
- package/dist/typescript/utils/push/internal/rxSubjects.d.ts.map +1 -1
- package/dist/typescript/utils/push/internal/utils.d.ts +8 -14
- package/dist/typescript/utils/push/internal/utils.d.ts.map +1 -1
- package/dist/typescript/utils/push/ios.d.ts +2 -1
- package/dist/typescript/utils/push/ios.d.ts.map +1 -1
- package/dist/typescript/utils/push/libs/callkeep.d.ts +3 -0
- package/dist/typescript/utils/push/libs/callkeep.d.ts.map +1 -0
- package/dist/typescript/utils/push/libs/firebaseMessaging/index.d.ts +2 -16
- package/dist/typescript/utils/push/libs/firebaseMessaging/index.d.ts.map +1 -1
- package/dist/typescript/utils/push/libs/index.d.ts +2 -1
- package/dist/typescript/utils/push/libs/index.d.ts.map +1 -1
- package/dist/typescript/utils/push/libs/notifee/index.d.ts +1 -0
- package/dist/typescript/utils/push/libs/notifee/index.d.ts.map +1 -1
- package/dist/typescript/utils/push/libs/voipPushNotification.d.ts +3 -0
- package/dist/typescript/utils/push/libs/voipPushNotification.d.ts.map +1 -0
- package/dist/typescript/utils/push/setupIosCallKeepEvents.d.ts +6 -0
- package/dist/typescript/utils/push/setupIosCallKeepEvents.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 +33 -1
- package/expo-config-plugin/dist/withAndroidPermissions.js +7 -2
- package/expo-config-plugin/dist/withAppDelegate.js +197 -19
- package/expo-config-plugin/dist/withMainActivity.js +1 -1
- package/expo-config-plugin/dist/withiOSInfoPlist.js +3 -2
- package/ios/StreamInCallManager.m +0 -2
- package/ios/StreamInCallManager.swift +7 -19
- package/ios/StreamVideoReactNative.h +4 -7
- package/ios/StreamVideoReactNative.m +82 -189
- package/package.json +16 -11
- package/src/components/Participant/ParticipantView/ParticipantLabel.tsx +2 -7
- package/src/hooks/push/index.ts +2 -0
- package/src/hooks/push/useIosCallkeepWithCallingStateEffect.ts +235 -0
- package/src/hooks/push/useIosVoipPushEventsSetupEffect.ts +34 -21
- package/src/hooks/push/useProcessPushCallEffect.ts +108 -0
- package/src/hooks/useAndroidKeepCallAliveEffect.ts +120 -94
- package/src/index.ts +0 -1
- package/src/modules/call-manager/CallManager.ts +0 -36
- package/src/modules/call-manager/native-module.d.ts +0 -7
- package/src/providers/StreamCall/index.tsx +6 -6
- package/src/utils/StreamVideoRN/index.ts +30 -42
- package/src/utils/StreamVideoRN/types.ts +25 -61
- package/src/utils/internal/registerSDKGlobals.ts +4 -52
- package/src/utils/push/android.ts +311 -198
- package/src/utils/push/internal/ios.ts +44 -28
- package/src/utils/push/internal/rxSubjects.ts +61 -0
- package/src/utils/push/internal/utils.ts +64 -108
- package/src/utils/push/ios.ts +6 -1
- package/src/utils/push/libs/callkeep.ts +16 -0
- package/src/utils/push/libs/index.ts +2 -1
- package/src/utils/push/libs/notifee/index.ts +27 -0
- package/src/utils/push/libs/voipPushNotification.ts +17 -0
- package/src/utils/push/setupIosCallKeepEvents.ts +252 -0
- package/src/utils/push/setupIosVoipPushEvents.ts +7 -11
- package/src/version.ts +1 -1
- package/android/src/main/java/com/streamvideo/reactnative/keepalive/KeepAliveNotification.kt +0 -83
- package/android/src/main/java/com/streamvideo/reactnative/keepalive/StreamCallKeepAliveHeadlessService.kt +0 -149
- package/dist/commonjs/hooks/push/useCallingExpWithCallingStateEffect.js +0 -144
- package/dist/commonjs/hooks/push/useCallingExpWithCallingStateEffect.js.map +0 -1
- package/dist/commonjs/utils/internal/callingx/audioSessionPromise.js +0 -68
- package/dist/commonjs/utils/internal/callingx/audioSessionPromise.js.map +0 -1
- package/dist/commonjs/utils/internal/callingx/callingx.js +0 -150
- package/dist/commonjs/utils/internal/callingx/callingx.js.map +0 -1
- package/dist/commonjs/utils/keepCallAliveHeadlessTask.js +0 -48
- package/dist/commonjs/utils/keepCallAliveHeadlessTask.js.map +0 -1
- package/dist/commonjs/utils/push/libs/callingx.js +0 -75
- package/dist/commonjs/utils/push/libs/callingx.js.map +0 -1
- package/dist/commonjs/utils/push/setupCallingExpEvents.js +0 -105
- package/dist/commonjs/utils/push/setupCallingExpEvents.js.map +0 -1
- package/dist/module/hooks/push/useCallingExpWithCallingStateEffect.js +0 -137
- package/dist/module/hooks/push/useCallingExpWithCallingStateEffect.js.map +0 -1
- package/dist/module/utils/internal/callingx/audioSessionPromise.js +0 -61
- package/dist/module/utils/internal/callingx/audioSessionPromise.js.map +0 -1
- package/dist/module/utils/internal/callingx/callingx.js +0 -140
- package/dist/module/utils/internal/callingx/callingx.js.map +0 -1
- package/dist/module/utils/keepCallAliveHeadlessTask.js +0 -42
- package/dist/module/utils/keepCallAliveHeadlessTask.js.map +0 -1
- package/dist/module/utils/push/libs/callingx.js +0 -67
- package/dist/module/utils/push/libs/callingx.js.map +0 -1
- package/dist/module/utils/push/setupCallingExpEvents.js +0 -99
- package/dist/module/utils/push/setupCallingExpEvents.js.map +0 -1
- package/dist/typescript/hooks/push/useCallingExpWithCallingStateEffect.d.ts +0 -5
- package/dist/typescript/hooks/push/useCallingExpWithCallingStateEffect.d.ts.map +0 -1
- package/dist/typescript/utils/internal/callingx/audioSessionPromise.d.ts +0 -16
- package/dist/typescript/utils/internal/callingx/audioSessionPromise.d.ts.map +0 -1
- package/dist/typescript/utils/internal/callingx/callingx.d.ts +0 -18
- package/dist/typescript/utils/internal/callingx/callingx.d.ts.map +0 -1
- package/dist/typescript/utils/keepCallAliveHeadlessTask.d.ts +0 -10
- package/dist/typescript/utils/keepCallAliveHeadlessTask.d.ts.map +0 -1
- package/dist/typescript/utils/push/libs/callingx.d.ts +0 -9
- package/dist/typescript/utils/push/libs/callingx.d.ts.map +0 -1
- package/dist/typescript/utils/push/setupCallingExpEvents.d.ts +0 -8
- package/dist/typescript/utils/push/setupCallingExpEvents.d.ts.map +0 -1
- package/src/hooks/push/useCallingExpWithCallingStateEffect.ts +0 -189
- package/src/utils/internal/callingx/audioSessionPromise.ts +0 -65
- package/src/utils/internal/callingx/callingx.ts +0 -194
- package/src/utils/keepCallAliveHeadlessTask.ts +0 -54
- package/src/utils/push/libs/callingx.ts +0 -89
- package/src/utils/push/setupCallingExpEvents.ts +0 -135
|
@@ -1,68 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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":[]}
|
|
@@ -1,150 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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":[]}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.keepCallAliveCallRef = exports.KEEP_CALL_ALIVE_HEADLESS_TASK_NAME = void 0;
|
|
7
|
-
var _reactNative = require("react-native");
|
|
8
|
-
var _videoClient = require("@stream-io/video-client");
|
|
9
|
-
var _StreamVideoRN = require("./StreamVideoRN");
|
|
10
|
-
const KEEP_CALL_ALIVE_HEADLESS_TASK_NAME = exports.KEEP_CALL_ALIVE_HEADLESS_TASK_NAME = 'StreamVideoKeepCallAlive';
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* The keep-alive headless task needs access to the active `Call` instance.
|
|
14
|
-
* The keep-alive hook will set this reference before starting the native service.
|
|
15
|
-
*/
|
|
16
|
-
const keepCallAliveCallRef = exports.keepCallAliveCallRef = {
|
|
17
|
-
current: undefined
|
|
18
|
-
};
|
|
19
|
-
function registerKeepCallAliveHeadlessTaskOnce() {
|
|
20
|
-
if (_reactNative.Platform.OS !== 'android') return;
|
|
21
|
-
_reactNative.AppRegistry.registerHeadlessTask(KEEP_CALL_ALIVE_HEADLESS_TASK_NAME, () => async data => {
|
|
22
|
-
const logger = _videoClient.videoLoggerSystem.getLogger('KEEP_CALL_ALIVE_HEADLESS_TASK');
|
|
23
|
-
const callCid = data?.callCid;
|
|
24
|
-
const call = keepCallAliveCallRef.current;
|
|
25
|
-
if (!call) {
|
|
26
|
-
logger.warn('No active call instance available for keep-alive task; skipping.', {
|
|
27
|
-
callCid
|
|
28
|
-
});
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
if (callCid && call.cid && call.cid !== callCid) {
|
|
32
|
-
logger.warn('Keep-alive task callCid does not match active call; skipping.', {
|
|
33
|
-
callCid,
|
|
34
|
-
activeCallCid: call.cid
|
|
35
|
-
});
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
const config = _StreamVideoRN.StreamVideoRN.getConfig();
|
|
39
|
-
const taskToRun = config.foregroundService.android.taskToRun;
|
|
40
|
-
try {
|
|
41
|
-
await taskToRun(call);
|
|
42
|
-
} catch (e) {
|
|
43
|
-
logger.error('Keep-alive headless task failed', e);
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
registerKeepCallAliveHeadlessTaskOnce();
|
|
48
|
-
//# sourceMappingURL=keepCallAliveHeadlessTask.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_videoClient","_StreamVideoRN","KEEP_CALL_ALIVE_HEADLESS_TASK_NAME","exports","keepCallAliveCallRef","current","undefined","registerKeepCallAliveHeadlessTaskOnce","Platform","OS","AppRegistry","registerHeadlessTask","data","logger","videoLoggerSystem","getLogger","callCid","call","warn","cid","activeCallCid","config","StreamVideoRN","getConfig","taskToRun","foregroundService","android","e","error"],"sourceRoot":"../../../src","sources":["utils/keepCallAliveHeadlessTask.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA;AAEO,MAAMG,kCAAkC,GAAAC,OAAA,CAAAD,kCAAA,GAAG,0BAA0B;;AAE5E;AACA;AACA;AACA;AACO,MAAME,oBAAmD,GAAAD,OAAA,CAAAC,oBAAA,GAAG;EACjEC,OAAO,EAAEC;AACX,CAAC;AAED,SAASC,qCAAqCA,CAAA,EAAG;EAC/C,IAAIC,qBAAQ,CAACC,EAAE,KAAK,SAAS,EAAE;EAE/BC,wBAAW,CAACC,oBAAoB,CAC9BT,kCAAkC,EAClC,MAAM,MAAOU,IAAsC,IAAK;IACtD,MAAMC,MAAM,GAAGC,8BAAiB,CAACC,SAAS,CACxC,+BACF,CAAC;IACD,MAAMC,OAAO,GAAGJ,IAAI,EAAEI,OAAO;IAE7B,MAAMC,IAAI,GAAGb,oBAAoB,CAACC,OAAO;IACzC,IAAI,CAACY,IAAI,EAAE;MACTJ,MAAM,CAACK,IAAI,CACT,kEAAkE,EAClE;QAAEF;MAAQ,CACZ,CAAC;MACD;IACF;IACA,IAAIA,OAAO,IAAIC,IAAI,CAACE,GAAG,IAAIF,IAAI,CAACE,GAAG,KAAKH,OAAO,EAAE;MAC/CH,MAAM,CAACK,IAAI,CACT,+DAA+D,EAC/D;QAAEF,OAAO;QAAEI,aAAa,EAAEH,IAAI,CAACE;MAAI,CACrC,CAAC;MACD;IACF;IAEA,MAAME,MAAM,GAAGC,4BAAa,CAACC,SAAS,CAAC,CAAC;IACxC,MAAMC,SAAS,GAAGH,MAAM,CAACI,iBAAiB,CAACC,OAAO,CAACF,SAAS;IAC5D,IAAI;MACF,MAAMA,SAAS,CAACP,IAAI,CAAC;IACvB,CAAC,CAAC,OAAOU,CAAC,EAAE;MACVd,MAAM,CAACe,KAAK,CAAC,iCAAiC,EAAED,CAAC,CAAC;IACpD;EACF,CACF,CAAC;AACH;AAEApB,qCAAqC,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.extractCallingExpOptions = extractCallingExpOptions;
|
|
7
|
-
exports.getCallingxLib = getCallingxLib;
|
|
8
|
-
exports.getCallingxLibIfAvailable = getCallingxLibIfAvailable;
|
|
9
|
-
let callingx;
|
|
10
|
-
try {
|
|
11
|
-
callingx = require('@stream-io/react-native-callingx').CallingxModule;
|
|
12
|
-
} catch {}
|
|
13
|
-
function getCallingxLib() {
|
|
14
|
-
if (!callingx) {
|
|
15
|
-
throw Error('react-native-callingx library is not installed.');
|
|
16
|
-
}
|
|
17
|
-
return callingx;
|
|
18
|
-
}
|
|
19
|
-
function getCallingxLibIfAvailable() {
|
|
20
|
-
return callingx ?? undefined;
|
|
21
|
-
}
|
|
22
|
-
function extractCallingExpOptions(config) {
|
|
23
|
-
const {
|
|
24
|
-
push: pushConfig,
|
|
25
|
-
foregroundService: foregroundServiceConfig
|
|
26
|
-
} = config;
|
|
27
|
-
const callingExpOptions = {};
|
|
28
|
-
if (pushConfig?.ios) {
|
|
29
|
-
const iosOptions = {};
|
|
30
|
-
if (pushConfig.ios.supportsVideo !== undefined) {
|
|
31
|
-
iosOptions.supportsVideo = pushConfig.ios.supportsVideo;
|
|
32
|
-
}
|
|
33
|
-
if (pushConfig.ios.sound !== undefined) {
|
|
34
|
-
iosOptions.sound = pushConfig.ios.sound;
|
|
35
|
-
}
|
|
36
|
-
if (pushConfig.ios.imageName !== undefined) {
|
|
37
|
-
iosOptions.imageName = pushConfig.ios.imageName;
|
|
38
|
-
}
|
|
39
|
-
if (pushConfig.ios.callsHistory !== undefined) {
|
|
40
|
-
iosOptions.callsHistory = pushConfig.ios.callsHistory;
|
|
41
|
-
}
|
|
42
|
-
if (pushConfig.ios.displayCallTimeout !== undefined) {
|
|
43
|
-
iosOptions.displayCallTimeout = pushConfig.ios.displayCallTimeout;
|
|
44
|
-
}
|
|
45
|
-
if (Object.keys(iosOptions).length > 0) {
|
|
46
|
-
callingExpOptions.ios = iosOptions;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
const androidOptions = {};
|
|
50
|
-
if (pushConfig?.android) {
|
|
51
|
-
if (pushConfig.android.incomingChannel) {
|
|
52
|
-
androidOptions.incomingChannel = pushConfig.android.incomingChannel;
|
|
53
|
-
}
|
|
54
|
-
if (pushConfig.android.titleTransformer) {
|
|
55
|
-
androidOptions.titleTransformer = pushConfig.android.titleTransformer;
|
|
56
|
-
}
|
|
57
|
-
if (pushConfig.android.notificationTexts) {
|
|
58
|
-
androidOptions.notificationTexts = pushConfig.android.notificationTexts;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
if (foregroundServiceConfig.android.channel) {
|
|
62
|
-
androidOptions.ongoingChannel = foregroundServiceConfig.android.channel;
|
|
63
|
-
}
|
|
64
|
-
if (Object.keys(androidOptions).length > 0) {
|
|
65
|
-
callingExpOptions.android = androidOptions;
|
|
66
|
-
}
|
|
67
|
-
if (pushConfig?.shouldRejectCallWhenBusy !== undefined) {
|
|
68
|
-
callingExpOptions.shouldRejectCallWhenBusy = pushConfig.shouldRejectCallWhenBusy;
|
|
69
|
-
}
|
|
70
|
-
if (pushConfig?.enableOngoingCalls !== undefined) {
|
|
71
|
-
callingExpOptions.enableOngoingCalls = pushConfig?.enableOngoingCalls;
|
|
72
|
-
}
|
|
73
|
-
return callingExpOptions;
|
|
74
|
-
}
|
|
75
|
-
//# sourceMappingURL=callingx.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["callingx","require","CallingxModule","getCallingxLib","Error","getCallingxLibIfAvailable","undefined","extractCallingExpOptions","config","push","pushConfig","foregroundService","foregroundServiceConfig","callingExpOptions","ios","iosOptions","supportsVideo","sound","imageName","callsHistory","displayCallTimeout","Object","keys","length","androidOptions","android","incomingChannel","titleTransformer","notificationTexts","channel","ongoingChannel","shouldRejectCallWhenBusy","enableOngoingCalls"],"sourceRoot":"../../../../../src","sources":["utils/push/libs/callingx.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.setupCallingExpEvents = setupCallingExpEvents;
|
|
7
|
-
var _videoClient = require("@stream-io/video-client");
|
|
8
|
-
var _utils = require("./internal/utils");
|
|
9
|
-
var _pushLogoutCallback = require("../internal/pushLogoutCallback");
|
|
10
|
-
var _audioSessionPromise = require("../internal/callingx/audioSessionPromise");
|
|
11
|
-
var _callingx = require("./libs/callingx");
|
|
12
|
-
var _reactNative = require("react-native");
|
|
13
|
-
const logger = _videoClient.videoLoggerSystem.getLogger('callingx');
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Sets up callingx event listeners for handling call actions from the native calling UI.
|
|
17
|
-
*/
|
|
18
|
-
function setupCallingExpEvents(pushConfig) {
|
|
19
|
-
const hasPushProvider = _reactNative.Platform.OS === 'android' && pushConfig.android?.pushProviderName || _reactNative.Platform.OS === 'ios' && pushConfig.ios?.pushProviderName;
|
|
20
|
-
if (!hasPushProvider) {
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
|
-
const callingx = (0, _callingx.getCallingxLib)();
|
|
24
|
-
const {
|
|
25
|
-
remove: removeAnswerCall
|
|
26
|
-
} = callingx.addEventListener('answerCall', params => {
|
|
27
|
-
onAcceptCall(pushConfig)(params);
|
|
28
|
-
});
|
|
29
|
-
const {
|
|
30
|
-
remove: removeEndCall
|
|
31
|
-
} = callingx.addEventListener('endCall', params => {
|
|
32
|
-
onEndCall(pushConfig)(params);
|
|
33
|
-
});
|
|
34
|
-
const {
|
|
35
|
-
remove: removeDidActivateAudioSession
|
|
36
|
-
} = callingx.addEventListener('didActivateAudioSession', onDidActivateAudioSession);
|
|
37
|
-
const {
|
|
38
|
-
remove: removeDidDeactivateAudioSession
|
|
39
|
-
} = callingx.addEventListener('didDeactivateAudioSession', onDidDeactivateAudioSession);
|
|
40
|
-
|
|
41
|
-
//NOTE: until getInitialEvents invocation, events are delayed and won't be sent to event listeners, this is a way to make sure none of required events are missed
|
|
42
|
-
//in most cases there will be no delayed answers or ends, but if so we don't want to miss any of them
|
|
43
|
-
const events = callingx.getInitialEvents();
|
|
44
|
-
events.forEach(event => {
|
|
45
|
-
const {
|
|
46
|
-
eventName,
|
|
47
|
-
params
|
|
48
|
-
} = event;
|
|
49
|
-
if (eventName === 'answerCall') {
|
|
50
|
-
logger.debug(`answerCall delayed event callId: ${params?.callId}`);
|
|
51
|
-
onAcceptCall(pushConfig)(params);
|
|
52
|
-
} else if (eventName === 'endCall') {
|
|
53
|
-
logger.debug(`endCall delayed event callId: ${params?.callId}`);
|
|
54
|
-
onEndCall(pushConfig)(params);
|
|
55
|
-
} else if (eventName === 'didActivateAudioSession') {
|
|
56
|
-
onDidActivateAudioSession();
|
|
57
|
-
} else if (eventName === 'didDeactivateAudioSession') {
|
|
58
|
-
onDidDeactivateAudioSession();
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
(0, _pushLogoutCallback.setPushLogoutCallback)(async () => {
|
|
62
|
-
removeAnswerCall();
|
|
63
|
-
removeEndCall();
|
|
64
|
-
removeDidActivateAudioSession();
|
|
65
|
-
removeDidDeactivateAudioSession();
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
const onDidActivateAudioSession = () => {
|
|
69
|
-
logger.debug('callingExpDidActivateAudioSession');
|
|
70
|
-
(0, _audioSessionPromise.resolvePendingAudioSession)();
|
|
71
|
-
};
|
|
72
|
-
const onDidDeactivateAudioSession = () => {
|
|
73
|
-
logger.debug('callingExpDidDeactivateAudioSession');
|
|
74
|
-
};
|
|
75
|
-
const onAcceptCall = pushConfig => ({
|
|
76
|
-
callId: call_cid,
|
|
77
|
-
source
|
|
78
|
-
}) => {
|
|
79
|
-
logger.debug(`onAcceptCall event call_cid: ${call_cid} source: ${source}`);
|
|
80
|
-
if (source === 'app' || !call_cid) {
|
|
81
|
-
// App-initiated actions are fulfilled on the native side immediately — nothing to do here
|
|
82
|
-
return;
|
|
83
|
-
}
|
|
84
|
-
const callingx = (0, _callingx.getCallingxLib)();
|
|
85
|
-
(0, _utils.clearPushWSEventSubscriptions)(call_cid);
|
|
86
|
-
(0, _utils.processCallFromPushInBackground)(pushConfig, call_cid, 'accept', didFail => {
|
|
87
|
-
callingx.fulfillAnswerCallAction(call_cid, didFail);
|
|
88
|
-
});
|
|
89
|
-
};
|
|
90
|
-
const onEndCall = pushConfig => ({
|
|
91
|
-
callId: call_cid,
|
|
92
|
-
source
|
|
93
|
-
}) => {
|
|
94
|
-
logger.debug(`onEndCall event call_cid: ${call_cid} source: ${source}`);
|
|
95
|
-
if (source === 'app' || !call_cid) {
|
|
96
|
-
// App-initiated actions are fulfilled on the native side immediately — nothing to do here
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
const callingx = (0, _callingx.getCallingxLib)();
|
|
100
|
-
(0, _utils.clearPushWSEventSubscriptions)(call_cid);
|
|
101
|
-
(0, _utils.processCallFromPushInBackground)(pushConfig, call_cid, 'decline', didFail => {
|
|
102
|
-
callingx.fulfillEndCallAction(call_cid, didFail);
|
|
103
|
-
});
|
|
104
|
-
};
|
|
105
|
-
//# sourceMappingURL=setupCallingExpEvents.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_videoClient","require","_utils","_pushLogoutCallback","_audioSessionPromise","_callingx","_reactNative","logger","videoLoggerSystem","getLogger","setupCallingExpEvents","pushConfig","hasPushProvider","Platform","OS","android","pushProviderName","ios","callingx","getCallingxLib","remove","removeAnswerCall","addEventListener","params","onAcceptCall","removeEndCall","onEndCall","removeDidActivateAudioSession","onDidActivateAudioSession","removeDidDeactivateAudioSession","onDidDeactivateAudioSession","events","getInitialEvents","forEach","event","eventName","debug","callId","setPushLogoutCallback","resolvePendingAudioSession","call_cid","source","clearPushWSEventSubscriptions","processCallFromPushInBackground","didFail","fulfillAnswerCallAction","fulfillEndCallAction"],"sourceRoot":"../../../../src","sources":["utils/push/setupCallingExpEvents.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
import { CallingState, videoLoggerSystem } from '@stream-io/video-client';
|
|
2
|
-
import { useCall, useCallStateHooks } from '@stream-io/video-react-bindings';
|
|
3
|
-
import { useEffect, useMemo } from 'react';
|
|
4
|
-
import { filter, take } from 'rxjs/operators';
|
|
5
|
-
import { getCallDisplayName } from '../../utils/internal/callingx/callingx';
|
|
6
|
-
import { getCallingxLibIfAvailable } from '../../utils/push/libs/callingx';
|
|
7
|
-
const logger = videoLoggerSystem.getLogger('callingx');
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* This hook is used to inform sync call state with CallKit/Telecom (i.e. start call, end call, mute/unmute call).
|
|
11
|
-
*/
|
|
12
|
-
export const useCallingExpWithCallingStateEffect = () => {
|
|
13
|
-
const {
|
|
14
|
-
useMicrophoneState,
|
|
15
|
-
useParticipants,
|
|
16
|
-
useCallMembers
|
|
17
|
-
} = useCallStateHooks();
|
|
18
|
-
const activeCall = useCall();
|
|
19
|
-
const {
|
|
20
|
-
isMute,
|
|
21
|
-
microphone
|
|
22
|
-
} = useMicrophoneState();
|
|
23
|
-
const callMembers = useCallMembers();
|
|
24
|
-
const participants = useParticipants();
|
|
25
|
-
const activeCallCid = activeCall?.cid;
|
|
26
|
-
const currentUserId = activeCall?.currentUserId;
|
|
27
|
-
const isIncoming = activeCall?.ringing && !activeCall?.isCreatedByMe || false;
|
|
28
|
-
const callDisplayName = useMemo(() => getCallDisplayName(callMembers, participants, currentUserId), [callMembers, participants, currentUserId]);
|
|
29
|
-
useEffect(() => {
|
|
30
|
-
const callingx = getCallingxLibIfAvailable();
|
|
31
|
-
if (!callingx?.isSetup || !activeCall) {
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
// need to capture RINGING -> Joining -> Joined state change for the first time
|
|
35
|
-
// and inform callingx that the call is active
|
|
36
|
-
const shouldMakeCallActive = call => {
|
|
37
|
-
// only for outgoing calls or non-ringing ongoing calls in callingx
|
|
38
|
-
// Note: incoming calls are handled by callingx pending states instead
|
|
39
|
-
return call.ringing && call.isCreatedByMe || !call.ringing && callingx.isOngoingCallsEnabled;
|
|
40
|
-
};
|
|
41
|
-
const subscription = activeCall.state.callingState$.pipe(filter(callingState => shouldMakeCallActive(activeCall) && callingState === CallingState.JOINED && callingx.isCallTracked(activeCall.cid)), take(1) // only need to capture the first joined state for outgoing calls
|
|
42
|
-
// then subscription completes and is automatically unsubscribed
|
|
43
|
-
).subscribe(() => {
|
|
44
|
-
callingx.setCurrentCallActive(activeCall.cid);
|
|
45
|
-
});
|
|
46
|
-
return () => {
|
|
47
|
-
subscription.unsubscribe();
|
|
48
|
-
};
|
|
49
|
-
}, [activeCall]);
|
|
50
|
-
useEffect(() => {
|
|
51
|
-
return () => {
|
|
52
|
-
const callingx = getCallingxLibIfAvailable();
|
|
53
|
-
if (!callingx?.isSetup || !activeCallCid) {
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
const isCallTracked = callingx.isCallTracked(activeCallCid);
|
|
57
|
-
if (!isCallTracked) {
|
|
58
|
-
logger.debug(`useCallingExpWithCallingStateEffect:No active call cid to end in calling exp: ${activeCallCid} isCallTracked: ${isCallTracked}`);
|
|
59
|
-
return;
|
|
60
|
-
}
|
|
61
|
-
//if incoming stream call was unmounted, we need to end the call in CallKit/Telecom
|
|
62
|
-
logger.debug(`useCallingExpWithCallingStateEffect: Ending call in callingx: ${activeCallCid}`);
|
|
63
|
-
callingx.endCallWithReason(activeCallCid, 'local').catch(error => {
|
|
64
|
-
logger.error(`useCallingExpWithCallingStateEffect: Error ending call in callingx: ${activeCallCid}`, error);
|
|
65
|
-
});
|
|
66
|
-
};
|
|
67
|
-
}, [activeCallCid]);
|
|
68
|
-
useEffect(() => {
|
|
69
|
-
const callingx = getCallingxLibIfAvailable();
|
|
70
|
-
if (!callingx?.isSetup || !activeCallCid) {
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
73
|
-
const isCallTracked = callingx.isCallTracked(activeCallCid);
|
|
74
|
-
if (!isCallTracked) {
|
|
75
|
-
logger.debug(`useCallingExpWithCallingStateEffect:No active call cid to update callingx: ${activeCallCid} isCallTracked: ${isCallTracked}`);
|
|
76
|
-
return;
|
|
77
|
-
}
|
|
78
|
-
callingx.updateDisplay(activeCallCid, activeCallCid, callDisplayName, isIncoming);
|
|
79
|
-
}, [activeCallCid, callDisplayName, isIncoming]);
|
|
80
|
-
|
|
81
|
-
// Sync microphone mute state from app → CallKit
|
|
82
|
-
useEffect(() => {
|
|
83
|
-
const callingx = getCallingxLibIfAvailable();
|
|
84
|
-
if (!callingx?.isSetup || !activeCallCid) {
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
const isCallTracked = callingx.isCallTracked(activeCallCid);
|
|
88
|
-
if (!isCallTracked) {
|
|
89
|
-
logger.debug(`useCallingExpWithCallingStateEffect: No active call cid to set muted in calling exp: ${activeCallCid} isCallTracked: ${isCallTracked}`);
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
callingx.setMutedCall(activeCallCid, isMute);
|
|
93
|
-
}, [activeCallCid, isMute]);
|
|
94
|
-
|
|
95
|
-
// Sync mute state from CallKit → app (only for system-initiated mute actions)
|
|
96
|
-
useEffect(() => {
|
|
97
|
-
const callingx = getCallingxLibIfAvailable();
|
|
98
|
-
if (!callingx?.isSetup || !activeCallCid) {
|
|
99
|
-
logger.debug(`useCallingExpWithCallingStateEffect: No active call cid to set muted in calling exp: ${activeCallCid} callingx isSetup: ${callingx?.isSetup}`);
|
|
100
|
-
return;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
// Listen to mic toggle events from CallKit/Telecom and update stream call microphone state.
|
|
104
|
-
// Only system-initiated mute actions (e.g. user tapped mute on the native CallKit UI)
|
|
105
|
-
// are sent here — app-initiated actions are filtered out on the native side to prevent
|
|
106
|
-
// the feedback loop: app mutes mic → setMutedCall → CallKit delegate → event to JS → loop.
|
|
107
|
-
const subscription = callingx.addEventListener('didPerformSetMutedCallAction', async event => {
|
|
108
|
-
const {
|
|
109
|
-
callId,
|
|
110
|
-
muted
|
|
111
|
-
} = event;
|
|
112
|
-
const isCallTracked = callingx.isCallTracked(activeCallCid);
|
|
113
|
-
if (!isCallTracked || callId !== activeCallCid) {
|
|
114
|
-
logger.debug(`useCallingExpWithCallingStateEffect: No active call cid to set muted in calling exp: ${activeCallCid} isCallTracked: ${isCallTracked} callId: ${callId}`);
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
const isCurrentlyMuted = microphone.state.status === 'disabled';
|
|
118
|
-
if (isCurrentlyMuted === muted) {
|
|
119
|
-
logger.debug(`useCallingExpWithCallingStateEffect: Mic toggle is already in the desired state: ${muted} for call: ${activeCallCid}`);
|
|
120
|
-
return;
|
|
121
|
-
}
|
|
122
|
-
try {
|
|
123
|
-
if (muted) {
|
|
124
|
-
await microphone.disable();
|
|
125
|
-
} else {
|
|
126
|
-
await microphone.enable();
|
|
127
|
-
}
|
|
128
|
-
} catch (error) {
|
|
129
|
-
logger.error(`useCallingExpWithCallingStateEffect: Error toggling mic in calling exp: ${activeCallCid}`, error);
|
|
130
|
-
}
|
|
131
|
-
});
|
|
132
|
-
return () => {
|
|
133
|
-
subscription.remove();
|
|
134
|
-
};
|
|
135
|
-
}, [activeCallCid, microphone]);
|
|
136
|
-
};
|
|
137
|
-
//# sourceMappingURL=useCallingExpWithCallingStateEffect.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["CallingState","videoLoggerSystem","useCall","useCallStateHooks","useEffect","useMemo","filter","take","getCallDisplayName","getCallingxLibIfAvailable","logger","getLogger","useCallingExpWithCallingStateEffect","useMicrophoneState","useParticipants","useCallMembers","activeCall","isMute","microphone","callMembers","participants","activeCallCid","cid","currentUserId","isIncoming","ringing","isCreatedByMe","callDisplayName","callingx","isSetup","shouldMakeCallActive","call","isOngoingCallsEnabled","subscription","state","callingState$","pipe","callingState","JOINED","isCallTracked","subscribe","setCurrentCallActive","unsubscribe","debug","endCallWithReason","catch","error","updateDisplay","setMutedCall","addEventListener","event","callId","muted","isCurrentlyMuted","status","disable","enable","remove"],"sourceRoot":"../../../../src","sources":["hooks/push/useCallingExpWithCallingStateEffect.ts"],"mappings":"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","ignoreList":[]}
|