@stream-io/video-react-native-sdk 1.45.0 → 1.45.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 +17 -7
- package/android/src/main/java/com/streamvideo/reactnative/audio/AudioDeviceManager.kt +110 -58
- package/android/src/main/java/com/streamvideo/reactnative/audio/CommunicationModeKeepAlive.kt +247 -0
- package/android/src/main/java/com/streamvideo/reactnative/callmanager/StreamInCallManagerModule.kt +16 -5
- package/android/src/main/java/com/streamvideo/reactnative/keepalive/StreamCallKeepAliveHeadlessService.kt +112 -26
- package/android/src/main/java/com/streamvideo/reactnative/util/CallAlivePermissionsHelper.kt +68 -37
- package/dist/commonjs/hooks/push/useCallingExpWithCallingStateEffect.js +3 -1
- package/dist/commonjs/hooks/push/useCallingExpWithCallingStateEffect.js.map +1 -1
- package/dist/commonjs/hooks/useAndroidKeepCallAliveEffect.js +38 -11
- package/dist/commonjs/hooks/useAndroidKeepCallAliveEffect.js.map +1 -1
- package/dist/commonjs/utils/StreamVideoRN/index.js +23 -0
- package/dist/commonjs/utils/StreamVideoRN/index.js.map +1 -1
- package/dist/commonjs/utils/internal/callingx/callingx.js +37 -55
- package/dist/commonjs/utils/internal/callingx/callingx.js.map +1 -1
- package/dist/commonjs/utils/keepCallAliveHeadlessTask.js +43 -4
- package/dist/commonjs/utils/keepCallAliveHeadlessTask.js.map +1 -1
- package/dist/commonjs/utils/push/internal/android.js +28 -10
- package/dist/commonjs/utils/push/internal/android.js.map +1 -1
- package/dist/commonjs/version.js +1 -1
- package/dist/module/hooks/push/useCallingExpWithCallingStateEffect.js +3 -1
- package/dist/module/hooks/push/useCallingExpWithCallingStateEffect.js.map +1 -1
- package/dist/module/hooks/useAndroidKeepCallAliveEffect.js +39 -12
- package/dist/module/hooks/useAndroidKeepCallAliveEffect.js.map +1 -1
- package/dist/module/utils/StreamVideoRN/index.js +23 -0
- package/dist/module/utils/StreamVideoRN/index.js.map +1 -1
- package/dist/module/utils/internal/callingx/callingx.js +37 -55
- package/dist/module/utils/internal/callingx/callingx.js.map +1 -1
- package/dist/module/utils/keepCallAliveHeadlessTask.js +41 -3
- package/dist/module/utils/keepCallAliveHeadlessTask.js.map +1 -1
- package/dist/module/utils/push/internal/android.js +28 -10
- package/dist/module/utils/push/internal/android.js.map +1 -1
- package/dist/module/version.js +1 -1
- package/dist/typescript/hooks/push/useCallingExpWithCallingStateEffect.d.ts.map +1 -1
- package/dist/typescript/hooks/useAndroidKeepCallAliveEffect.d.ts.map +1 -1
- package/dist/typescript/utils/StreamVideoRN/index.d.ts +13 -0
- package/dist/typescript/utils/StreamVideoRN/index.d.ts.map +1 -1
- package/dist/typescript/utils/StreamVideoRN/types.d.ts +1 -2
- package/dist/typescript/utils/StreamVideoRN/types.d.ts.map +1 -1
- package/dist/typescript/utils/internal/callingx/callingx.d.ts.map +1 -1
- package/dist/typescript/utils/keepCallAliveHeadlessTask.d.ts +9 -0
- package/dist/typescript/utils/keepCallAliveHeadlessTask.d.ts.map +1 -1
- package/dist/typescript/utils/push/internal/android.d.ts.map +1 -1
- package/dist/typescript/version.d.ts +1 -1
- package/expo-config-plugin/dist/withAndroidPermissions.js +1 -1
- package/package.json +4 -4
- package/src/hooks/push/useCallingExpWithCallingStateEffect.ts +13 -6
- package/src/hooks/useAndroidKeepCallAliveEffect.ts +59 -21
- package/src/modules/call-manager/native-module.d.ts +14 -0
- package/src/utils/StreamVideoRN/index.ts +27 -0
- package/src/utils/StreamVideoRN/types.ts +1 -2
- package/src/utils/internal/callingx/callingx.ts +47 -66
- package/src/utils/keepCallAliveHeadlessTask.ts +45 -3
- package/src/utils/push/internal/android.ts +31 -10
- package/src/version.ts +1 -1
|
@@ -41,8 +41,21 @@ function getCallDisplayName(callMembers, participants, currentUserId) {
|
|
|
41
41
|
}
|
|
42
42
|
return names.sort().join(', ');
|
|
43
43
|
}
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Args shared by the callingx call registration APIs:
|
|
47
|
+
* `(callId, phoneNumber, callerName, hasVideo)`.
|
|
48
|
+
*/
|
|
49
|
+
function getCallingxCallArgs(call) {
|
|
50
|
+
const callDisplayName = call.state.custom?.display_name || getCallDisplayName(call.state.members, call.state.participants, call.currentUserId);
|
|
51
|
+
return [call.cid,
|
|
52
|
+
// unique id for call
|
|
53
|
+
call.state.createdBy?.id ?? callDisplayName,
|
|
54
|
+
// handle for native call UI (prefer createdBy user id, fallback to call display name)
|
|
55
|
+
callDisplayName,
|
|
56
|
+
// display name for display in call screen
|
|
57
|
+
call.state.settings?.video?.enabled ?? false // is video call?
|
|
58
|
+
];
|
|
46
59
|
}
|
|
47
60
|
async function registerOutgoingCall(call) {
|
|
48
61
|
if (!CallingxModule || !CallingxModule.isSetup || call.isOwnTracksLoopbackAllowed) {
|
|
@@ -55,15 +68,7 @@ async function registerOutgoingCall(call) {
|
|
|
55
68
|
const logger = _videoClient.videoLoggerSystem.getLogger('callingx');
|
|
56
69
|
try {
|
|
57
70
|
logger.debug(`registerOutgoingCall: Registering outgoing call ${call.cid}`);
|
|
58
|
-
|
|
59
|
-
await CallingxModule.startCall(call.cid,
|
|
60
|
-
// unique id for call
|
|
61
|
-
call.state.createdBy?.id ?? callDisplayName,
|
|
62
|
-
// handle for native call UI (prefer createdBy user id, fallback to call display name)
|
|
63
|
-
callDisplayName,
|
|
64
|
-
// display name for display in call screen
|
|
65
|
-
call.state.settings?.video?.enabled ?? false // is video call?
|
|
66
|
-
);
|
|
71
|
+
await CallingxModule.startCall(...getCallingxCallArgs(call));
|
|
67
72
|
} catch (error) {
|
|
68
73
|
logger.error(`registerOutgoingCall: Error registering outgoing call in callingx: ${call.cid}`, error);
|
|
69
74
|
}
|
|
@@ -84,53 +89,30 @@ async function joinCallingxCall(call, activeCalls) {
|
|
|
84
89
|
const logger = _videoClient.videoLoggerSystem.getLogger('callingx');
|
|
85
90
|
const isOutcomingCall = call.ringing && call.isCreatedByMe;
|
|
86
91
|
const isIncomingCall = call.ringing && !call.isCreatedByMe;
|
|
87
|
-
const
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
call.state.
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
try {
|
|
101
|
-
await startCallInCallingx();
|
|
102
|
-
} catch (error) {
|
|
103
|
-
logger.error(`startCallingxCall: Error starting call in callingx: ${call.cid}`, error);
|
|
92
|
+
const isOngoingCall = c => !c.ringing && CallingxModule.isOngoingCallsEnabled && !c.isOwnTracksLoopbackAllowed;
|
|
93
|
+
if (!isIncomingCall && !isOutcomingCall && !isOngoingCall(call)) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
try {
|
|
97
|
+
const activeCallsToLeave = activeCalls.filter(c => c.cid !== call.cid && (c.ringing || isOngoingCall(c)) && c.state.callingState !== _videoClient.CallingState.LEFT);
|
|
98
|
+
for (const activeCall of activeCallsToLeave) {
|
|
99
|
+
logger.debug(`leaving currently-active-call:${activeCall.cid} before joining the call:${call.cid}`);
|
|
100
|
+
await activeCall.leave({
|
|
101
|
+
reason: 'cancel'
|
|
102
|
+
}).catch(e => {
|
|
103
|
+
logger.error(`failed to leave active call ${activeCall.cid}`, e);
|
|
104
|
+
});
|
|
104
105
|
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
const activeCallsToLeave = activeCalls.filter(c => c.cid !== call.cid && c.ringing && c.state.callingState !== _videoClient.CallingState.LEFT);
|
|
110
|
-
for (const activeCall of activeCallsToLeave) {
|
|
111
|
-
logger.debug(`leaving active call ${activeCall.cid} before joining ${call.cid}`);
|
|
112
|
-
await activeCall.leave({
|
|
113
|
-
reason: 'cancel'
|
|
114
|
-
}).catch(e => {
|
|
115
|
-
logger.error(`failed to leave active call ${activeCall.cid}`, e);
|
|
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
|
-
const callDisplayName = getCallDisplayNameFromCall(call);
|
|
122
|
-
await CallingxModule.displayIncomingCall(call.cid,
|
|
123
|
-
// unique id for call
|
|
124
|
-
call.state.createdBy?.id ?? callDisplayName,
|
|
125
|
-
// handle for native call UI (prefer createdBy user id, fallback to call display name)
|
|
126
|
-
callDisplayName,
|
|
127
|
-
// display name for display in call screen
|
|
128
|
-
call.state.settings?.video?.enabled ?? false // is video call?
|
|
129
|
-
);
|
|
106
|
+
logger.debug(`joinCallingxCall: Joining call ${call.cid} isIncoming: ${isIncomingCall} isOutgoing: ${isOutcomingCall}`);
|
|
107
|
+
const callArgs = getCallingxCallArgs(call);
|
|
108
|
+
if (isIncomingCall) {
|
|
109
|
+
await CallingxModule.displayIncomingCall(...callArgs);
|
|
130
110
|
await CallingxModule.answerIncomingCall(call.cid);
|
|
131
|
-
}
|
|
132
|
-
|
|
111
|
+
} else {
|
|
112
|
+
await CallingxModule.startCall(...callArgs);
|
|
133
113
|
}
|
|
114
|
+
} catch (error) {
|
|
115
|
+
logger.error(`startCallingxCall: Error starting call in callingx: ${call.cid} isIncoming: ${isIncomingCall} isOutgoing: ${isOutcomingCall}`, error);
|
|
134
116
|
}
|
|
135
117
|
}
|
|
136
118
|
async function endCallingxCall(call, reason) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_callingx","_videoClient","CallingxModule","getCallingxLibIfAvailable","getCallDisplayName","callMembers","participants","currentUserId","names","length","flatMap","member","user","id","name","participant","userId","find","sort","join","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_callingx","_videoClient","CallingxModule","getCallingxLibIfAvailable","getCallDisplayName","callMembers","participants","currentUserId","names","length","flatMap","member","user","id","name","participant","userId","find","sort","join","getCallingxCallArgs","call","callDisplayName","state","custom","display_name","members","cid","createdBy","settings","video","enabled","registerOutgoingCall","isSetup","isOwnTracksLoopbackAllowed","isOutcomingCall","ringing","isCreatedByMe","logger","videoLoggerSystem","getLogger","debug","startCall","error","joinCallingxCall","activeCalls","isIncomingCall","isOngoingCall","c","isOngoingCallsEnabled","activeCallsToLeave","filter","callingState","CallingState","LEFT","activeCall","leave","reason","catch","e","callArgs","displayIncomingCall","answerIncomingCall","endCallingxCall","isCallTracked","endCallWithReason","wireAudioEngineSubscription","Platform","OS","unwireAudioEngineSubscription"],"sourceRoot":"../../../../../src","sources":["utils/internal/callingx/callingx.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.keepCallAliveCallRef = exports.KEEP_CALL_ALIVE_HEADLESS_TASK_NAME = void 0;
|
|
6
|
+
exports.keepCallAliveCallRef = exports.endKeepCallAliveHeadlessTask = exports.KEEP_CALL_ALIVE_HEADLESS_TASK_NAME = void 0;
|
|
7
7
|
var _reactNative = require("react-native");
|
|
8
8
|
var _videoClient = require("@stream-io/video-client");
|
|
9
9
|
var _StreamVideoRN = require("./StreamVideoRN");
|
|
@@ -16,6 +16,21 @@ const KEEP_CALL_ALIVE_HEADLESS_TASK_NAME = exports.KEEP_CALL_ALIVE_HEADLESS_TASK
|
|
|
16
16
|
const keepCallAliveCallRef = exports.keepCallAliveCallRef = {
|
|
17
17
|
current: undefined
|
|
18
18
|
};
|
|
19
|
+
let resolveRunningTask;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Ends the currently running keep-alive headless task.
|
|
23
|
+
*
|
|
24
|
+
* The task's promise is app-provided (`foregroundService.android.taskToRun`) and by default never
|
|
25
|
+
* resolves, so stopping the native service alone would leave the task registered in
|
|
26
|
+
* `HeadlessJsTaskContext` forever - which keeps RN's timer choreographer callback posted for the
|
|
27
|
+
* rest of the process lifetime. Resolving it here lets React Native unwind the task properly.
|
|
28
|
+
*/
|
|
29
|
+
const endKeepCallAliveHeadlessTask = () => {
|
|
30
|
+
resolveRunningTask?.();
|
|
31
|
+
resolveRunningTask = undefined;
|
|
32
|
+
};
|
|
33
|
+
exports.endKeepCallAliveHeadlessTask = endKeepCallAliveHeadlessTask;
|
|
19
34
|
function registerKeepCallAliveHeadlessTaskOnce() {
|
|
20
35
|
if (_reactNative.Platform.OS !== 'android') return;
|
|
21
36
|
_reactNative.AppRegistry.registerHeadlessTask(KEEP_CALL_ALIVE_HEADLESS_TASK_NAME, () => async data => {
|
|
@@ -37,10 +52,34 @@ function registerKeepCallAliveHeadlessTaskOnce() {
|
|
|
37
52
|
}
|
|
38
53
|
const config = _StreamVideoRN.StreamVideoRN.getConfig();
|
|
39
54
|
const taskToRun = config.foregroundService.android.taskToRun;
|
|
55
|
+
// A previous task (if any) must not keep hanging around.
|
|
56
|
+
endKeepCallAliveHeadlessTask();
|
|
57
|
+
const taskEnded = new Promise(resolve => {
|
|
58
|
+
resolveRunningTask = resolve;
|
|
59
|
+
});
|
|
60
|
+
const ownResolver = resolveRunningTask;
|
|
61
|
+
|
|
62
|
+
// React Native stops the foreground service as soon as the promise returned from here
|
|
63
|
+
// settles. `taskToRun` is app-provided and may resolve early - or immediately - so its
|
|
64
|
+
// completion must not end the keep-alive: that would drop the call's background protection
|
|
65
|
+
// while the call is still ongoing. The task's lifetime is owned by the SDK instead, and ends
|
|
66
|
+
// via endKeepCallAliveHeadlessTask() when the call is left.
|
|
67
|
+
(async () => {
|
|
68
|
+
try {
|
|
69
|
+
await taskToRun(call);
|
|
70
|
+
logger.debug('Keep-alive taskToRun completed, keeping the call alive until the call ends');
|
|
71
|
+
} catch (e) {
|
|
72
|
+
logger.error('Keep-alive headless task failed', e);
|
|
73
|
+
}
|
|
74
|
+
})();
|
|
40
75
|
try {
|
|
41
|
-
await
|
|
42
|
-
}
|
|
43
|
-
|
|
76
|
+
await taskEnded;
|
|
77
|
+
} finally {
|
|
78
|
+
// a newer task may already have installed its own resolver - clearing it here would leave
|
|
79
|
+
// that task with no way to be ended.
|
|
80
|
+
if (resolveRunningTask === ownResolver) {
|
|
81
|
+
resolveRunningTask = undefined;
|
|
82
|
+
}
|
|
44
83
|
}
|
|
45
84
|
});
|
|
46
85
|
}
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_videoClient","_StreamVideoRN","KEEP_CALL_ALIVE_HEADLESS_TASK_NAME","exports","keepCallAliveCallRef","current","undefined","resolveRunningTask","endKeepCallAliveHeadlessTask","registerKeepCallAliveHeadlessTaskOnce","Platform","OS","AppRegistry","registerHeadlessTask","data","logger","videoLoggerSystem","getLogger","callCid","call","warn","cid","activeCallCid","config","StreamVideoRN","getConfig","taskToRun","foregroundService","android","taskEnded","Promise","resolve","ownResolver","debug","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,IAAIC,kBAA4C;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,4BAA4B,GAAGA,CAAA,KAAM;EAChDD,kBAAkB,GAAG,CAAC;EACtBA,kBAAkB,GAAGD,SAAS;AAChC,CAAC;AAACH,OAAA,CAAAK,4BAAA,GAAAA,4BAAA;AAEF,SAASC,qCAAqCA,CAAA,EAAG;EAC/C,IAAIC,qBAAQ,CAACC,EAAE,KAAK,SAAS,EAAE;EAE/BC,wBAAW,CAACC,oBAAoB,CAC9BX,kCAAkC,EAClC,MAAM,MAAOY,IAAsC,IAAK;IACtD,MAAMC,MAAM,GAAGC,8BAAiB,CAACC,SAAS,CACxC,+BACF,CAAC;IACD,MAAMC,OAAO,GAAGJ,IAAI,EAAEI,OAAO;IAE7B,MAAMC,IAAI,GAAGf,oBAAoB,CAACC,OAAO;IACzC,IAAI,CAACc,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;IACAlB,4BAA4B,CAAC,CAAC;IAC9B,MAAMqB,SAAS,GAAG,IAAIC,OAAO,CAAQC,OAAO,IAAK;MAC/CxB,kBAAkB,GAAGwB,OAAO;IAC9B,CAAC,CAAC;IACF,MAAMC,WAAW,GAAGzB,kBAAkB;;IAEtC;IACA;IACA;IACA;IACA;IACA,CAAC,YAAY;MACX,IAAI;QACF,MAAMmB,SAAS,CAACP,IAAI,CAAC;QACrBJ,MAAM,CAACkB,KAAK,CACV,4EACF,CAAC;MACH,CAAC,CAAC,OAAOC,CAAC,EAAE;QACVnB,MAAM,CAACoB,KAAK,CAAC,iCAAiC,EAAED,CAAC,CAAC;MACpD;IACF,CAAC,EAAE,CAAC;IAEJ,IAAI;MACF,MAAML,SAAS;IACjB,CAAC,SAAS;MACR;MACA;MACA,IAAItB,kBAAkB,KAAKyB,WAAW,EAAE;QACtCzB,kBAAkB,GAAGD,SAAS;MAChC;IACF;EACF,CACF,CAAC;AACH;AAEAG,qCAAqC,CAAC,CAAC","ignoreList":[]}
|
|
@@ -50,6 +50,32 @@ const onRingNotificationReceived = async data => {
|
|
|
50
50
|
nativeLog(`Finishing background task for callCid: ${call_cid}`);
|
|
51
51
|
callingx.releaseBackgroundTask(backgroundTaskOwner);
|
|
52
52
|
};
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Gives up on this push: dismisses the call the native push path already displayed, then asks
|
|
56
|
+
* the call service to stop. `stopService` is only a request — it no-ops while any other call is
|
|
57
|
+
* registered or being registered — so this call must be ended explicitly rather than relying on
|
|
58
|
+
* the service teardown to wipe it.
|
|
59
|
+
*/
|
|
60
|
+
const abandonPush = async () => {
|
|
61
|
+
if (asForegroundService) {
|
|
62
|
+
finishBackgroundTask();
|
|
63
|
+
}
|
|
64
|
+
// Each step is contained on its own: failing to dismiss the call must not skip the stop
|
|
65
|
+
// request, and neither may skip the unsubscription cleanup — a stale entry makes every later
|
|
66
|
+
// push for this cid look like a duplicate and get discarded.
|
|
67
|
+
try {
|
|
68
|
+
await callingx.endCallWithReason(call_cid, 'error');
|
|
69
|
+
} catch (error) {
|
|
70
|
+
nativeLog(`Failed to end call ${call_cid}: ${error}`, 'error');
|
|
71
|
+
}
|
|
72
|
+
try {
|
|
73
|
+
await callingx.stopService();
|
|
74
|
+
} catch (error) {
|
|
75
|
+
nativeLog(`Failed to stop the call service for ${call_cid}: ${error}`, 'error');
|
|
76
|
+
}
|
|
77
|
+
_constants.pushUnsubscriptionCallbacks.delete(call_cid);
|
|
78
|
+
};
|
|
53
79
|
if (asForegroundService) {
|
|
54
80
|
// initialize the callback array immediately to avoid race condition
|
|
55
81
|
_constants.pushUnsubscriptionCallbacks.set(call_cid, []);
|
|
@@ -65,21 +91,13 @@ const onRingNotificationReceived = async data => {
|
|
|
65
91
|
client = await pushConfig.createStreamVideoClient();
|
|
66
92
|
if (!client) {
|
|
67
93
|
nativeLog(`video client not found, skipping the call.ring notification`);
|
|
68
|
-
|
|
69
|
-
finishBackgroundTask();
|
|
70
|
-
}
|
|
71
|
-
await callingx.stopService();
|
|
72
|
-
_constants.pushUnsubscriptionCallbacks.delete(call_cid);
|
|
94
|
+
await abandonPush();
|
|
73
95
|
return;
|
|
74
96
|
}
|
|
75
97
|
} catch (error) {
|
|
76
98
|
//we need to release the background task and stop the service to avoid stale owner
|
|
77
99
|
nativeLog(`Failed to create video client: ${error}`, 'error');
|
|
78
|
-
|
|
79
|
-
finishBackgroundTask();
|
|
80
|
-
}
|
|
81
|
-
await callingx.stopService();
|
|
82
|
-
_constants.pushUnsubscriptionCallbacks.delete(call_cid);
|
|
100
|
+
await abandonPush();
|
|
83
101
|
return;
|
|
84
102
|
}
|
|
85
103
|
if (asForegroundService) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_videoClient","require","_reactNative","_libs","_StreamVideoRN","_constants","_utils","onRingNotificationReceived","data","Platform","OS","nativeLog","message","level","getCallingxLibIfAvailable","log","pushConfig","StreamVideoRN","getConfig","push","sender","type","call_cid","callingx","getCallingxLib","pushUnsubscriptionCallbacks","has","asForegroundService","canListenToWS","backgroundTaskOwner","finishBackgroundTask","releaseBackgroundTask","
|
|
1
|
+
{"version":3,"names":["_videoClient","require","_reactNative","_libs","_StreamVideoRN","_constants","_utils","onRingNotificationReceived","data","Platform","OS","nativeLog","message","level","getCallingxLibIfAvailable","log","pushConfig","StreamVideoRN","getConfig","push","sender","type","call_cid","callingx","getCallingxLib","pushUnsubscriptionCallbacks","has","asForegroundService","canListenToWS","backgroundTaskOwner","finishBackgroundTask","releaseBackgroundTask","abandonPush","endCallWithReason","error","stopService","delete","set","acquireBackgroundTask","catch","e","client","createStreamVideoClient","callFromPush","onRingingCall","mustEndCall","endCallReason","shouldCallBeClosed","leave","reject","unsubscribeFunctions","get","unsubscribe","on","event","_canListenToWS","forEach","fn","mustEndCallFromEvent","endCallReasonFromEvent","stateSubscription","state","callingState$","subscribe","callingState","CallingState","IDLE","LEFT","appStateSubscription","AppState","addEventListener","nextAppState","remove","exports"],"sourceRoot":"../../../../../src","sources":["utils/push/internal/android.ts"],"mappings":"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","ignoreList":[]}
|
package/dist/commonjs/version.js
CHANGED
|
@@ -81,7 +81,9 @@ export const useCallingExpWithCallingStateEffect = () => {
|
|
|
81
81
|
logger.debug(`useCallingExpWithCallingStateEffect:No active call cid to update callingx: ${activeCallCid} isCallTracked: ${isCallTracked}`);
|
|
82
82
|
return;
|
|
83
83
|
}
|
|
84
|
-
callingx.updateDisplay(activeCallCid, createdByUserId ?? callDisplayName, callDisplayName, isIncoming)
|
|
84
|
+
callingx.updateDisplay(activeCallCid, createdByUserId ?? callDisplayName, callDisplayName, isIncoming).catch(error => {
|
|
85
|
+
logger.debug(`useCallingExpWithCallingStateEffect: Error updating display in callingx: ${activeCallCid}`, error);
|
|
86
|
+
});
|
|
85
87
|
}, [activeCallCid, createdByUserId, callDisplayName, isIncoming]);
|
|
86
88
|
|
|
87
89
|
// Sync microphone mute state from app → CallKit
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CallingState","videoLoggerSystem","useCall","useCallStateHooks","useEffect","useMemo","Platform","AudioDeviceModule","filter","take","getCallDisplayName","getCallingxLibIfAvailable","logger","getLogger","useCallingExpWithCallingStateEffect","useMicrophoneState","useParticipants","useCallMembers","activeCall","optimisticStatus","microphone","callMembers","participants","activeCallCid","cid","createdByUserId","state","createdBy","id","callCustomDisplayName","custom","display_name","currentUserId","isIncoming","ringing","isCreatedByMe","callDisplayName","callingx","isSetup","shouldMakeCallActive","call","isOngoingCallsEnabled","subscription","callingState$","pipe","callingState","JOINED","isCallTracked","subscribe","setCurrentCallActive","unsubscribe","debug","endCallWithReason","catch","error","updateDisplay","undefined","setMutedCall","addEventListener","event","callId","muted","isCurrentlyMuted","disable","enable","remove","activateSubscription","tracer","trace","deactivateSubscription","OS","timeouts","Set","traceRecordingState","trigger","status","isRecording","isEngineRunning","isMicrophoneMuted","warn","scheduleCheck","delayMs","timeout","setTimeout","delete","add","joinedSubscription","activationSubscription","forEach","clearTimeout","clear"],"sourceRoot":"../../../../src","sources":["hooks/push/useCallingExpWithCallingStateEffect.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["CallingState","videoLoggerSystem","useCall","useCallStateHooks","useEffect","useMemo","Platform","AudioDeviceModule","filter","take","getCallDisplayName","getCallingxLibIfAvailable","logger","getLogger","useCallingExpWithCallingStateEffect","useMicrophoneState","useParticipants","useCallMembers","activeCall","optimisticStatus","microphone","callMembers","participants","activeCallCid","cid","createdByUserId","state","createdBy","id","callCustomDisplayName","custom","display_name","currentUserId","isIncoming","ringing","isCreatedByMe","callDisplayName","callingx","isSetup","shouldMakeCallActive","call","isOngoingCallsEnabled","subscription","callingState$","pipe","callingState","JOINED","isCallTracked","subscribe","setCurrentCallActive","unsubscribe","debug","endCallWithReason","catch","error","updateDisplay","undefined","setMutedCall","addEventListener","event","callId","muted","isCurrentlyMuted","disable","enable","remove","activateSubscription","tracer","trace","deactivateSubscription","OS","timeouts","Set","traceRecordingState","trigger","status","isRecording","isEngineRunning","isMicrophoneMuted","warn","scheduleCheck","delayMs","timeout","setTimeout","delete","add","joinedSubscription","activationSubscription","forEach","clearTimeout","clear"],"sourceRoot":"../../../../src","sources":["hooks/push/useCallingExpWithCallingStateEffect.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -5,7 +5,7 @@ import { useEffect, useRef } from 'react';
|
|
|
5
5
|
import { StreamVideoRN } from '../utils';
|
|
6
6
|
import { AppState, NativeModules, PermissionsAndroid, Platform } from 'react-native';
|
|
7
7
|
import { CallingState, videoLoggerSystem } from '@stream-io/video-client';
|
|
8
|
-
import { keepCallAliveCallRef } from '../utils/keepCallAliveHeadlessTask';
|
|
8
|
+
import { endKeepCallAliveHeadlessTask, keepCallAliveCallRef } from '../utils/keepCallAliveHeadlessTask';
|
|
9
9
|
import { getCallingxLibIfAvailable } from '../utils/push/libs';
|
|
10
10
|
async function stopForegroundServiceNoThrow() {
|
|
11
11
|
const logger = videoLoggerSystem.getLogger('stopForegroundServiceNoThrow');
|
|
@@ -15,6 +15,10 @@ async function stopForegroundServiceNoThrow() {
|
|
|
15
15
|
logger.warn('Failed to stop keep-call-alive foreground service', e);
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @returns true when the native foreground service was asked to start.
|
|
21
|
+
*/
|
|
18
22
|
async function startForegroundService(call_cid) {
|
|
19
23
|
const logger = videoLoggerSystem.getLogger('startForegroundService');
|
|
20
24
|
const isCallAliveConfigured = await (async () => {
|
|
@@ -26,14 +30,14 @@ async function startForegroundService(call_cid) {
|
|
|
26
30
|
}
|
|
27
31
|
})();
|
|
28
32
|
if (!isCallAliveConfigured) {
|
|
29
|
-
logger.
|
|
30
|
-
return;
|
|
33
|
+
logger.warn('KeepCallAlive is not configured, the call will not survive the app going to the ' + 'background: audio publishing stops and the user is eventually dropped from the call. ' + 'Declare android.permission.FOREGROUND_SERVICE and ' + 'android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK in the app manifest (see logcat, ' + 'tag StreamVideoReactNative, for the exact list of missing permissions).');
|
|
34
|
+
return false;
|
|
31
35
|
}
|
|
32
36
|
// Check for notification permission (Android 13+) before starting the service.
|
|
33
37
|
const hasPostNotificationsPermission = Number(Platform.Version) < 33 || (await PermissionsAndroid.check(PermissionsAndroid.PERMISSIONS.POST_NOTIFICATIONS));
|
|
34
38
|
if (!hasPostNotificationsPermission) {
|
|
35
39
|
logger.info('Notification permission not granted, can not start foreground service to keep the call alive');
|
|
36
|
-
return;
|
|
40
|
+
return false;
|
|
37
41
|
}
|
|
38
42
|
const videoConfig = StreamVideoRN.getConfig();
|
|
39
43
|
const foregroundServiceConfig = videoConfig.foregroundService;
|
|
@@ -44,12 +48,25 @@ async function startForegroundService(call_cid) {
|
|
|
44
48
|
// NOTE: we use requestAnimationFrame to ensure that the foreground service is started after all the current UI operations are done
|
|
45
49
|
// this is a workaround for the crash - android.app.RemoteServiceException$ForegroundServiceDidNotStartInTimeException: Context.startForegroundService() did not then call Service.startForeground()
|
|
46
50
|
// this crash was reproducible only in some android devices
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
return new Promise(resolve => {
|
|
52
|
+
requestAnimationFrame(async () => {
|
|
53
|
+
// The service declares the camera/microphone foreground service types, which are
|
|
54
|
+
// while-in-use permissions: Android requires startForegroundService() to be called while the
|
|
55
|
+
// app has a visible activity, otherwise the start is rejected. The frame we deferred to can
|
|
56
|
+
// land after the app left the foreground, so re-check before calling native.
|
|
57
|
+
if (AppState.currentState !== 'active') {
|
|
58
|
+
logger.info('App is no longer in the foreground, not starting the keep-call-alive foreground service');
|
|
59
|
+
resolve(false);
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
try {
|
|
63
|
+
await NativeModules.StreamVideoReactNative.startKeepCallAliveService(call_cid, channel.id, channel.name, notificationTexts.title, notificationTexts.body, smallIconName ?? null);
|
|
64
|
+
resolve(true);
|
|
65
|
+
} catch (e) {
|
|
66
|
+
logger.warn('Failed to start keep-call-alive foreground service', e);
|
|
67
|
+
resolve(false);
|
|
68
|
+
}
|
|
69
|
+
});
|
|
53
70
|
});
|
|
54
71
|
}
|
|
55
72
|
|
|
@@ -110,8 +127,15 @@ export const useAndroidKeepCallAliveEffect = () => {
|
|
|
110
127
|
if (foregroundServiceStartedRef.current) {
|
|
111
128
|
return;
|
|
112
129
|
}
|
|
113
|
-
|
|
114
|
-
|
|
130
|
+
try {
|
|
131
|
+
// only mark as started when native actually accepted the start, so that a later render
|
|
132
|
+
// while still joined can retry.
|
|
133
|
+
foregroundServiceStartedRef.current = await startForegroundService(activeCallCid);
|
|
134
|
+
} catch (e) {
|
|
135
|
+
// run() is intentionally not awaited, so anything thrown here would surface as an
|
|
136
|
+
// unhandled rejection. Leave the ref false so a later render can retry.
|
|
137
|
+
videoLoggerSystem.getLogger('useAndroidKeepCallAliveEffect').warn('Failed to start the keep-call-alive foreground service', e);
|
|
138
|
+
}
|
|
115
139
|
};
|
|
116
140
|
|
|
117
141
|
// ensure that app is active before running the function
|
|
@@ -130,6 +154,8 @@ export const useAndroidKeepCallAliveEffect = () => {
|
|
|
130
154
|
} else if (isCallEnded) {
|
|
131
155
|
if (foregroundServiceStartedRef.current) {
|
|
132
156
|
keepCallAliveCallRef.current = undefined;
|
|
157
|
+
// let the headless task resolve so RN unwinds it, then stop the foreground service
|
|
158
|
+
endKeepCallAliveHeadlessTask();
|
|
133
159
|
// stop foreground service when the call is not active
|
|
134
160
|
stopForegroundServiceNoThrow();
|
|
135
161
|
foregroundServiceStartedRef.current = false;
|
|
@@ -142,6 +168,7 @@ export const useAndroidKeepCallAliveEffect = () => {
|
|
|
142
168
|
// stop foreground service when this effect is unmounted
|
|
143
169
|
if (foregroundServiceStartedRef.current) {
|
|
144
170
|
keepCallAliveCallRef.current = undefined;
|
|
171
|
+
endKeepCallAliveHeadlessTask();
|
|
145
172
|
stopForegroundServiceNoThrow();
|
|
146
173
|
foregroundServiceStartedRef.current = false;
|
|
147
174
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCall","useCallStateHooks","useEffect","useRef","StreamVideoRN","AppState","NativeModules","PermissionsAndroid","Platform","CallingState","videoLoggerSystem","keepCallAliveCallRef","getCallingxLibIfAvailable","stopForegroundServiceNoThrow","logger","getLogger","StreamVideoReactNative","stopKeepCallAliveService","e","warn","startForegroundService","call_cid","isCallAliveConfigured","
|
|
1
|
+
{"version":3,"names":["useCall","useCallStateHooks","useEffect","useRef","StreamVideoRN","AppState","NativeModules","PermissionsAndroid","Platform","CallingState","videoLoggerSystem","endKeepCallAliveHeadlessTask","keepCallAliveCallRef","getCallingxLibIfAvailable","stopForegroundServiceNoThrow","logger","getLogger","StreamVideoReactNative","stopKeepCallAliveService","e","warn","startForegroundService","call_cid","isCallAliveConfigured","hasPostNotificationsPermission","Number","Version","check","PERMISSIONS","POST_NOTIFICATIONS","info","videoConfig","getConfig","foregroundServiceConfig","foregroundService","notificationTexts","android","channel","smallIconName","push","smallIcon","Promise","resolve","requestAnimationFrame","currentState","startKeepCallAliveService","id","name","title","body","useAndroidKeepCallAliveEffect","foregroundServiceStartedRef","callingxKeepAliveOwnerRef","undefined","call","current","activeCallCid","cid","useCallCallingState","callingState","isCallJoined","JOINED","isRingingCall","ringing","shouldStartForegroundService","OS","callingx","isCallingxManaged","isSetup","isOngoingCallsEnabled","isCallEnded","IDLE","LEFT","currentOwner","releaseBackgroundTask","catch","owner","acquireBackgroundTask","run","sub","addEventListener","nextAppState","remove"],"sourceRoot":"../../../src","sources":["hooks/useAndroidKeepCallAliveEffect.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -127,6 +127,29 @@ export class StreamVideoRN {
|
|
|
127
127
|
pushLogoutCallbacks.current = [];
|
|
128
128
|
}
|
|
129
129
|
|
|
130
|
+
/**
|
|
131
|
+
* Android only. Opt out of the Android 11+ communication-mode keep-alive.
|
|
132
|
+
*
|
|
133
|
+
* By default the SDK plays a silent voice-communication track for the duration of a
|
|
134
|
+
* communicator-role call, so Android does not reset `MODE_IN_COMMUNICATION` ~6s after it is
|
|
135
|
+
* set (which breaks audio routing and echo cancellation).
|
|
136
|
+
* See {@link https://issuetracker.google.com/issues/209493718}
|
|
137
|
+
*
|
|
138
|
+
* Call this at app start, alongside {@link setPushConfig} — the native audio manager
|
|
139
|
+
* rejects the change once it has been activated for a call. No-op on iOS and on
|
|
140
|
+
* Android below API 30.
|
|
141
|
+
*/
|
|
142
|
+
static setDisableCommunicationModeWorkaround(disabled) {
|
|
143
|
+
if (Platform.OS !== 'android') {
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
try {
|
|
147
|
+
NativeModules.StreamInCallManager?.setDisableCommunicationModeWorkaround(disabled);
|
|
148
|
+
} catch (error) {
|
|
149
|
+
videoLoggerSystem.getLogger('StreamVideoRN').warn('setDisableCommunicationModeWorkaround failed', error);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
130
153
|
/**
|
|
131
154
|
* Play native busy tone for call rejection
|
|
132
155
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["pushLogoutCallbacks","setupIosVoipPushEvents","setupAndroidPushEvents","setupCallingExpEvents","extractCallingExpOptions","getCallingxLib","NativeModules","Platform","videoLoggerSystem","deepMerge","target","source","result","key","undefined","Array","isArray","DEFAULT_STREAM_VIDEO_CONFIG","foregroundService","android","channel","id","name","notificationTexts","title","body","taskToRun","Promise","StreamVideoRN","config","updateConfig","setPushConfig","pushConfig","push","callingx","getLogger","info","JSON","stringify","options","setup","Error","getConfig","onPushLogout","callbacks","current","resolve","all","map","callback","then","clearPushLogoutCallbacks","playBusyTone","StreamVideoReactNative","stopBusyTone","androidHasAudioOutputHardware","
|
|
1
|
+
{"version":3,"names":["pushLogoutCallbacks","setupIosVoipPushEvents","setupAndroidPushEvents","setupCallingExpEvents","extractCallingExpOptions","getCallingxLib","NativeModules","Platform","videoLoggerSystem","deepMerge","target","source","result","key","undefined","Array","isArray","DEFAULT_STREAM_VIDEO_CONFIG","foregroundService","android","channel","id","name","notificationTexts","title","body","taskToRun","Promise","StreamVideoRN","config","updateConfig","setPushConfig","pushConfig","push","callingx","getLogger","info","JSON","stringify","options","setup","Error","getConfig","onPushLogout","callbacks","current","resolve","all","map","callback","then","clearPushLogoutCallbacks","setDisableCommunicationModeWorkaround","disabled","OS","StreamInCallManager","error","warn","playBusyTone","StreamVideoReactNative","stopBusyTone","androidHasAudioOutputHardware","hasAudioOutputHardware","androidHasMicrophoneHardware","hasMicrophoneHardware","androidHasCameraHardware","hasCameraHardware"],"sourceRoot":"../../../../src","sources":["utils/StreamVideoRN/index.ts"],"mappings":"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","ignoreList":[]}
|