@stream-io/video-react-native-sdk 1.10.12 → 1.10.14

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.
Files changed (75) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/commonjs/components/Call/CallContent/RTCViewPipIOS.js +7 -17
  3. package/dist/commonjs/components/Call/CallContent/RTCViewPipIOS.js.map +1 -1
  4. package/dist/commonjs/components/Call/CallContent/RTCViewPipNative.js +34 -0
  5. package/dist/commonjs/components/Call/CallContent/RTCViewPipNative.js.map +1 -0
  6. package/dist/commonjs/hooks/push/index.js +0 -2
  7. package/dist/commonjs/hooks/push/index.js.map +1 -1
  8. package/dist/commonjs/hooks/push/useIosCallkeepWithCallingStateEffect.js +20 -23
  9. package/dist/commonjs/hooks/push/useIosCallkeepWithCallingStateEffect.js.map +1 -1
  10. package/dist/commonjs/hooks/push/useIosVoipPushEventsSetupEffect.js +6 -103
  11. package/dist/commonjs/hooks/push/useIosVoipPushEventsSetupEffect.js.map +1 -1
  12. package/dist/commonjs/utils/StreamVideoRN/index.js +4 -0
  13. package/dist/commonjs/utils/StreamVideoRN/index.js.map +1 -1
  14. package/dist/commonjs/utils/push/ios.js +95 -1
  15. package/dist/commonjs/utils/push/ios.js.map +1 -1
  16. package/dist/commonjs/utils/push/setupIosCallKeepEvents.js +150 -0
  17. package/dist/commonjs/utils/push/setupIosCallKeepEvents.js.map +1 -0
  18. package/dist/commonjs/utils/push/setupIosVoipPushEvents.js +27 -0
  19. package/dist/commonjs/utils/push/setupIosVoipPushEvents.js.map +1 -0
  20. package/dist/commonjs/version.js +1 -1
  21. package/dist/module/components/Call/CallContent/RTCViewPipIOS.js +9 -19
  22. package/dist/module/components/Call/CallContent/RTCViewPipIOS.js.map +1 -1
  23. package/dist/module/components/Call/CallContent/RTCViewPipNative.js +26 -0
  24. package/dist/module/components/Call/CallContent/RTCViewPipNative.js.map +1 -0
  25. package/dist/module/hooks/push/index.js +0 -2
  26. package/dist/module/hooks/push/index.js.map +1 -1
  27. package/dist/module/hooks/push/useIosCallkeepWithCallingStateEffect.js +21 -24
  28. package/dist/module/hooks/push/useIosCallkeepWithCallingStateEffect.js.map +1 -1
  29. package/dist/module/hooks/push/useIosVoipPushEventsSetupEffect.js +10 -108
  30. package/dist/module/hooks/push/useIosVoipPushEventsSetupEffect.js.map +1 -1
  31. package/dist/module/utils/StreamVideoRN/index.js +4 -0
  32. package/dist/module/utils/StreamVideoRN/index.js.map +1 -1
  33. package/dist/module/utils/push/ios.js +97 -4
  34. package/dist/module/utils/push/ios.js.map +1 -1
  35. package/dist/module/utils/push/setupIosCallKeepEvents.js +145 -0
  36. package/dist/module/utils/push/setupIosCallKeepEvents.js.map +1 -0
  37. package/dist/module/utils/push/setupIosVoipPushEvents.js +21 -0
  38. package/dist/module/utils/push/setupIosVoipPushEvents.js.map +1 -0
  39. package/dist/module/version.js +1 -1
  40. package/dist/typescript/components/Call/CallContent/RTCViewPipIOS.d.ts.map +1 -1
  41. package/dist/typescript/components/Call/CallContent/RTCViewPipNative.d.ts +8 -0
  42. package/dist/typescript/components/Call/CallContent/RTCViewPipNative.d.ts.map +1 -0
  43. package/dist/typescript/hooks/push/index.d.ts.map +1 -1
  44. package/dist/typescript/hooks/push/useIosCallkeepWithCallingStateEffect.d.ts.map +1 -1
  45. package/dist/typescript/hooks/push/useIosVoipPushEventsSetupEffect.d.ts.map +1 -1
  46. package/dist/typescript/utils/StreamVideoRN/index.d.ts.map +1 -1
  47. package/dist/typescript/utils/push/ios.d.ts +1 -0
  48. package/dist/typescript/utils/push/ios.d.ts.map +1 -1
  49. package/dist/typescript/utils/push/setupIosCallKeepEvents.d.ts +6 -0
  50. package/dist/typescript/utils/push/setupIosCallKeepEvents.d.ts.map +1 -0
  51. package/dist/typescript/utils/push/setupIosVoipPushEvents.d.ts +3 -0
  52. package/dist/typescript/utils/push/setupIosVoipPushEvents.d.ts.map +1 -0
  53. package/dist/typescript/version.d.ts +1 -1
  54. package/ios/PictureInPicture/StreamPictureInPictureController.swift +7 -0
  55. package/ios/RTCViewPip.swift +52 -25
  56. package/ios/RTCViewPipManager.swift +5 -5
  57. package/ios/StreamVideoReactNative.m +72 -22
  58. package/package.json +3 -3
  59. package/src/components/Call/CallContent/RTCViewPipIOS.tsx +15 -38
  60. package/src/components/Call/CallContent/RTCViewPipNative.tsx +51 -0
  61. package/src/hooks/push/index.ts +0 -2
  62. package/src/hooks/push/useIosCallkeepWithCallingStateEffect.ts +37 -31
  63. package/src/hooks/push/useIosVoipPushEventsSetupEffect.ts +10 -145
  64. package/src/utils/StreamVideoRN/index.ts +5 -0
  65. package/src/utils/push/ios.ts +135 -3
  66. package/src/utils/push/setupIosCallKeepEvents.ts +187 -0
  67. package/src/utils/push/setupIosVoipPushEvents.ts +29 -0
  68. package/src/version.ts +1 -1
  69. package/dist/commonjs/hooks/push/useIosCallKeepEventsSetupEffect.js +0 -109
  70. package/dist/commonjs/hooks/push/useIosCallKeepEventsSetupEffect.js.map +0 -1
  71. package/dist/module/hooks/push/useIosCallKeepEventsSetupEffect.js +0 -103
  72. package/dist/module/hooks/push/useIosCallKeepEventsSetupEffect.js.map +0 -1
  73. package/dist/typescript/hooks/push/useIosCallKeepEventsSetupEffect.d.ts +0 -5
  74. package/dist/typescript/hooks/push/useIosCallKeepEventsSetupEffect.d.ts.map +0 -1
  75. package/src/hooks/push/useIosCallKeepEventsSetupEffect.ts +0 -132
@@ -5,13 +5,14 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.initIosNonVoipToken = initIosNonVoipToken;
7
7
  exports.onPushNotificationiOSStreamVideoEvent = onPushNotificationiOSStreamVideoEvent;
8
- exports.oniOSNotifeeEvent = exports.oniOSExpoNotificationEvent = void 0;
8
+ exports.oniOSNotifeeEvent = exports.oniOSExpoNotificationEvent = exports.onVoipNotificationReceived = void 0;
9
9
  var _reactNative = require("react-native");
10
10
  var _rxSubjects = require("./internal/rxSubjects");
11
11
  var _libs = require("./libs");
12
12
  var _videoClient = require("@stream-io/video-client");
13
13
  var _pushLogoutCallback = require("../internal/pushLogoutCallback");
14
14
  var _StreamVideoRN = require("../StreamVideoRN");
15
+ var _utils = require("./internal/utils");
15
16
  let lastApnToken = {
16
17
  token: '',
17
18
  userId: ''
@@ -153,4 +154,97 @@ async function initIosNonVoipToken(client, pushConfig, setUnsubscribeListener) {
153
154
  });
154
155
  }
155
156
  }
157
+ const onVoipNotificationReceived = async notification => {
158
+ /* --- Example payload ---
159
+ {
160
+ "aps": {
161
+ "alert": {
162
+ "body": "",
163
+ "title": "Vishal Narkhede is calling you"
164
+ },
165
+ "badge": 0,
166
+ "category": "stream.video",
167
+ "mutable-content": 1
168
+ },
169
+ "stream": {
170
+ "call_cid": "default:ixbm7y0k74pbjnq",
171
+ "call_display_name": "",
172
+ "created_by_display_name": "Vishal Narkhede",
173
+ "created_by_id": "vishalexpo",
174
+ "receiver_id": "santhoshexpo",
175
+ "sender": "stream.video",
176
+ "type": "call.ring",
177
+ "version": "v2"
178
+ }
179
+ } */
180
+ const sender = notification?.stream?.sender;
181
+ const type = notification?.stream?.type;
182
+ // do not process any other notifications other than stream.video or ringing
183
+ if (sender !== 'stream.video' && type !== 'call.ring') {
184
+ return;
185
+ }
186
+ const call_cid = notification?.stream?.call_cid;
187
+ const pushConfig = _StreamVideoRN.StreamVideoRN.getConfig().push;
188
+ if (!call_cid || _reactNative.Platform.OS !== 'ios' || !pushConfig) {
189
+ return;
190
+ }
191
+ const logger = (0, _videoClient.getLogger)(['setupIosVoipPushEvents']);
192
+ const client = await pushConfig.createStreamVideoClient();
193
+ if (!client) {
194
+ logger('debug', 'client not found, not processing call.ring voip push notification');
195
+ return;
196
+ }
197
+ const callFromPush = await client.onRingingCall(call_cid);
198
+ let uuid = '';
199
+ try {
200
+ uuid = await _reactNative.NativeModules?.StreamVideoReactNative?.getIncomingCallUUid(call_cid);
201
+ } catch (error) {
202
+ logger('error', 'Error in getting call uuid from native module', error);
203
+ }
204
+ if (!uuid) {
205
+ logger('error', `Not processing call.ring push notification, as no uuid found for call_cid: ${call_cid}`);
206
+ return;
207
+ }
208
+ const created_by_id = notification?.stream?.created_by_id;
209
+ const receiver_id = notification?.stream?.receiver_id;
210
+ function closeCallIfNecessary() {
211
+ const {
212
+ mustEndCall,
213
+ callkeepReason
214
+ } = (0, _utils.shouldCallBeEnded)(callFromPush, created_by_id, receiver_id);
215
+ if (mustEndCall) {
216
+ const callkeep = (0, _libs.getCallKeepLib)();
217
+ logger('debug', `callkeep.reportEndCallWithUUID for uuid: ${uuid}, call_cid: ${call_cid}, reason: ${callkeepReason}`);
218
+ callkeep.reportEndCallWithUUID(uuid, callkeepReason);
219
+ const voipPushNotification = (0, _libs.getVoipPushNotificationLib)();
220
+ voipPushNotification.onVoipNotificationCompleted(uuid);
221
+ return true;
222
+ }
223
+ return false;
224
+ }
225
+ const closed = closeCallIfNecessary();
226
+ const canListenToWS = () => _utils.canAddPushWSSubscriptionsRef.current && _reactNative.AppState.currentState !== 'active';
227
+ if (!closed && canListenToWS()) {
228
+ const unsubscribe = callFromPush.on('all', event => {
229
+ const _canListenToWS = canListenToWS();
230
+ if (!_canListenToWS) {
231
+ logger('debug', `unsubscribe due to event callCid: ${call_cid} canListenToWS: ${_canListenToWS}`, event);
232
+ unsubscribe();
233
+ return;
234
+ }
235
+ const _closed = closeCallIfNecessary();
236
+ if (_closed) {
237
+ logger('debug', `unsubscribe due to event callCid: ${call_cid} canListenToWS: ${_canListenToWS} shouldCallBeClosed: ${_closed}`, event);
238
+ unsubscribe();
239
+ }
240
+ });
241
+ const unsubscriptionCallbacks = _videoClient.RxUtils.getCurrentValue(_rxSubjects.pushUnsubscriptionCallbacks$) ?? [];
242
+ _rxSubjects.pushUnsubscriptionCallbacks$.next([...unsubscriptionCallbacks, unsubscribe]);
243
+ }
244
+ // send the info to this subject, it is listened by callkeep events
245
+ // callkeep events will then accept/reject the call
246
+ logger('debug', `call_cid:${call_cid} uuid:${uuid} received and processed from call.ring push notification`);
247
+ _rxSubjects.voipPushNotificationCallCId$.next(call_cid);
248
+ };
249
+ exports.onVoipNotificationReceived = onVoipNotificationReceived;
156
250
  //# sourceMappingURL=ios.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_rxSubjects","_libs","_videoClient","_pushLogoutCallback","_StreamVideoRN","lastApnToken","token","userId","processNonRingingNotificationStreamPayload","streamPayload","sender","type","cid","call_cid","logger","getLogger","pushNonRingingCallData$","next","undefined","oniOSExpoNotificationEvent","event","pushConfig","StreamVideoRN","getConfig","push","trigger","request","payload","stream","JSON","stringify","exports","oniOSNotifeeEvent","Platform","OS","detail","notifeeLib","getNotifeeLibThrowIfNotInstalledForPush","EventType","PRESS","notification","data","result","onTapNonRingingCallNotification","onPushNotificationiOSStreamVideoEvent","pushNotificationIosLib","getPushNotificationIosLib","getData","isClicked","userInteraction","finish","FetchResult","NoData","initIosNonVoipToken","client","setUnsubscribeListener","ios","pushProviderName","setDeviceToken","streamClient","_user","id","setPushLogoutCallback","removeDevice","err","push_provider_name","addDevice","then","catch","isExpo","expoNotificationsLib","getExpoNotificationsLib","getDevicePushTokenAsync","devicePushToken","subscription","addPushTokenListener","remove","addEventListener","removeEventListener"],"sourceRoot":"../../../../src","sources":["utils/push/ios.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_rxSubjects","_libs","_videoClient","_pushLogoutCallback","_StreamVideoRN","_utils","lastApnToken","token","userId","processNonRingingNotificationStreamPayload","streamPayload","sender","type","cid","call_cid","logger","getLogger","pushNonRingingCallData$","next","undefined","oniOSExpoNotificationEvent","event","pushConfig","StreamVideoRN","getConfig","push","trigger","request","payload","stream","JSON","stringify","exports","oniOSNotifeeEvent","Platform","OS","detail","notifeeLib","getNotifeeLibThrowIfNotInstalledForPush","EventType","PRESS","notification","data","result","onTapNonRingingCallNotification","onPushNotificationiOSStreamVideoEvent","pushNotificationIosLib","getPushNotificationIosLib","getData","isClicked","userInteraction","finish","FetchResult","NoData","initIosNonVoipToken","client","setUnsubscribeListener","ios","pushProviderName","setDeviceToken","streamClient","_user","id","setPushLogoutCallback","removeDevice","err","push_provider_name","addDevice","then","catch","isExpo","expoNotificationsLib","getExpoNotificationsLib","getDevicePushTokenAsync","devicePushToken","subscription","addPushTokenListener","remove","addEventListener","removeEventListener","onVoipNotificationReceived","createStreamVideoClient","callFromPush","onRingingCall","uuid","NativeModules","StreamVideoReactNative","getIncomingCallUUid","error","created_by_id","receiver_id","closeCallIfNecessary","mustEndCall","callkeepReason","shouldCallBeEnded","callkeep","getCallKeepLib","reportEndCallWithUUID","voipPushNotification","getVoipPushNotificationLib","onVoipNotificationCompleted","closed","canListenToWS","canAddPushWSSubscriptionsRef","current","AppState","currentState","unsubscribe","on","_canListenToWS","_closed","unsubscriptionCallbacks","RxUtils","getCurrentValue","pushUnsubscriptionCallbacks$","voipPushNotificationCallCId$"],"sourceRoot":"../../../../src","sources":["utils/push/ios.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.setupIosCallKeepEvents = setupIosCallKeepEvents;
7
+ var _rxSubjects = require("./internal/rxSubjects");
8
+ var _videoClient = require("@stream-io/video-client");
9
+ var _libs = require("./libs");
10
+ var _utils = require("./internal/utils");
11
+ var _reactNative = require("react-native");
12
+ var _pushLogoutCallback = require("../internal/pushLogoutCallback");
13
+ /**
14
+ * This hook is used to listen to callkeep events and do the necessary actions
15
+ */
16
+ function setupIosCallKeepEvents(pushConfig) {
17
+ if (_reactNative.Platform.OS !== 'ios' || !pushConfig.ios.pushProviderName) {
18
+ return;
19
+ }
20
+ const logger = (0, _videoClient.getLogger)(['setupIosCallKeepEvents']);
21
+ const callkeep = (0, _libs.getCallKeepLib)();
22
+ async function getCallCid(callUUID) {
23
+ let call_cid = _videoClient.RxUtils.getCurrentValue(_rxSubjects.voipPushNotificationCallCId$);
24
+ if (!call_cid) {
25
+ // if call_cid is not available, try to get it from native module
26
+ try {
27
+ call_cid = await _reactNative.NativeModules?.StreamVideoReactNative?.getIncomingCallCid(callUUID);
28
+ _rxSubjects.voipPushNotificationCallCId$.next(call_cid);
29
+ } catch (error) {
30
+ logger('debug', 'Error in getting call cid from native module - probably the call was already processed, so ignoring this callkeep event');
31
+ }
32
+ }
33
+ return call_cid;
34
+ }
35
+ function answerCall(callUUID) {
36
+ getCallCid(callUUID).then(call_cid => {
37
+ logger('debug', `answerCall event with call_cid: ${call_cid}`);
38
+ iosCallkeepAcceptCall(call_cid, callUUID);
39
+ });
40
+ }
41
+ function endCall(callUUID) {
42
+ getCallCid(callUUID).then(call_cid => {
43
+ logger('debug', `endCall event with call_cid: ${call_cid}`);
44
+ iosCallkeepRejectCall(call_cid, callUUID, pushConfig);
45
+ });
46
+ }
47
+ function didDisplayIncomingCall(callUUID, payload) {
48
+ const voipPushNotification = (0, _libs.getVoipPushNotificationLib)();
49
+ // @ts-expect-error
50
+ const call_cid = payload?.call_cid;
51
+ logger('debug', `didDisplayIncomingCall event with callUUID: ${callUUID} call_cid: ${call_cid}`);
52
+ if (call_cid) {
53
+ if (_reactNative.AppState.currentState === 'background') {
54
+ (0, _utils.processCallFromPushInBackground)(pushConfig, call_cid, 'backgroundDelivered');
55
+ }
56
+ _rxSubjects.voipCallkeepCallOnForegroundMap$.next({
57
+ uuid: callUUID,
58
+ cid: call_cid
59
+ });
60
+ }
61
+ voipPushNotification.onVoipNotificationCompleted(callUUID);
62
+ }
63
+ const {
64
+ remove: removeAnswerCall
65
+ } = callkeep.addEventListener('answerCall', ({
66
+ callUUID
67
+ }) => {
68
+ answerCall(callUUID);
69
+ });
70
+ const {
71
+ remove: removeEndCall
72
+ } = callkeep.addEventListener('endCall', ({
73
+ callUUID
74
+ }) => {
75
+ endCall(callUUID);
76
+ });
77
+ const {
78
+ remove: removeDisplayIncomingCall
79
+ } = callkeep.addEventListener('didDisplayIncomingCall', ({
80
+ callUUID,
81
+ payload
82
+ }) => {
83
+ didDisplayIncomingCall(callUUID, payload);
84
+ });
85
+ const {
86
+ remove: removeDidLoadWithEvents
87
+ } = callkeep.addEventListener('didLoadWithEvents', events => {
88
+ if (!events || !Array.isArray(events) || events.length < 1) {
89
+ return;
90
+ }
91
+ events.forEach(event => {
92
+ const {
93
+ name,
94
+ data
95
+ } = event;
96
+ if (name === 'RNCallKeepDidDisplayIncomingCall') {
97
+ didDisplayIncomingCall(data.callUUID, data.payload);
98
+ } else if (name === 'RNCallKeepPerformAnswerCallAction') {
99
+ answerCall(data.callUUID);
100
+ } else if (name === 'RNCallKeepPerformEndCallAction') {
101
+ endCall(data.callUUID);
102
+ }
103
+ });
104
+ });
105
+ (0, _pushLogoutCallback.setPushLogoutCallback)(async () => {
106
+ removeAnswerCall();
107
+ removeEndCall();
108
+ removeDisplayIncomingCall();
109
+ removeDidLoadWithEvents();
110
+ });
111
+ }
112
+ const iosCallkeepAcceptCall = (call_cid, callUUIDFromCallkeep) => {
113
+ if (!shouldProcessCallFromCallkeep(call_cid, callUUIDFromCallkeep)) {
114
+ return;
115
+ }
116
+ (0, _utils.clearPushWSEventSubscriptions)();
117
+ // to call end callkeep later if ended in app and not through callkeep
118
+ _rxSubjects.voipCallkeepAcceptedCallOnNativeDialerMap$.next({
119
+ uuid: callUUIDFromCallkeep,
120
+ cid: call_cid
121
+ });
122
+ // to process the call in the app
123
+ _rxSubjects.pushAcceptedIncomingCallCId$.next(call_cid);
124
+ // no need to keep these references anymore
125
+ _rxSubjects.voipCallkeepCallOnForegroundMap$.next(undefined);
126
+ };
127
+ const iosCallkeepRejectCall = async (call_cid, callUUIDFromCallkeep, pushConfig) => {
128
+ if (!shouldProcessCallFromCallkeep(call_cid, callUUIDFromCallkeep)) {
129
+ return;
130
+ }
131
+ (0, _utils.clearPushWSEventSubscriptions)();
132
+ // no need to keep these references anymore
133
+ _rxSubjects.voipCallkeepAcceptedCallOnNativeDialerMap$.next(undefined);
134
+ _rxSubjects.voipCallkeepCallOnForegroundMap$.next(undefined);
135
+ _rxSubjects.voipPushNotificationCallCId$.next(undefined);
136
+ await (0, _utils.processCallFromPushInBackground)(pushConfig, call_cid, 'decline');
137
+ await _reactNative.NativeModules.StreamVideoReactNative?.removeIncomingCall(call_cid);
138
+ };
139
+
140
+ /**
141
+ * Helper function to determine if the answer/end call event from callkeep must be processed
142
+ * Just checks if we have a valid call_cid and acts as a type guard for call_cid
143
+ */
144
+ const shouldProcessCallFromCallkeep = (call_cid, callUUIDFromCallkeep) => {
145
+ if (!call_cid || !callUUIDFromCallkeep) {
146
+ return false;
147
+ }
148
+ return true;
149
+ };
150
+ //# sourceMappingURL=setupIosCallKeepEvents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_rxSubjects","require","_videoClient","_libs","_utils","_reactNative","_pushLogoutCallback","setupIosCallKeepEvents","pushConfig","Platform","OS","ios","pushProviderName","logger","getLogger","callkeep","getCallKeepLib","getCallCid","callUUID","call_cid","RxUtils","getCurrentValue","voipPushNotificationCallCId$","NativeModules","StreamVideoReactNative","getIncomingCallCid","next","error","answerCall","then","iosCallkeepAcceptCall","endCall","iosCallkeepRejectCall","didDisplayIncomingCall","payload","voipPushNotification","getVoipPushNotificationLib","AppState","currentState","processCallFromPushInBackground","voipCallkeepCallOnForegroundMap$","uuid","cid","onVoipNotificationCompleted","remove","removeAnswerCall","addEventListener","removeEndCall","removeDisplayIncomingCall","removeDidLoadWithEvents","events","Array","isArray","length","forEach","event","name","data","setPushLogoutCallback","callUUIDFromCallkeep","shouldProcessCallFromCallkeep","clearPushWSEventSubscriptions","voipCallkeepAcceptedCallOnNativeDialerMap$","pushAcceptedIncomingCallCId$","undefined","removeIncomingCall"],"sourceRoot":"../../../../src","sources":["utils/push/setupIosCallKeepEvents.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.setupIosVoipPushEvents = setupIosVoipPushEvents;
7
+ var _libs = require("./libs");
8
+ var _reactNative = require("react-native");
9
+ var _ = require("..");
10
+ var _pushLogoutCallback = require("../internal/pushLogoutCallback");
11
+ var _videoClient = require("@stream-io/video-client");
12
+ function setupIosVoipPushEvents(pushConfig) {
13
+ if (_reactNative.Platform.OS !== 'ios' || !pushConfig.ios?.pushProviderName) {
14
+ return;
15
+ }
16
+ const logger = (0, _videoClient.getLogger)(['setupIosVoipPushEvents']);
17
+ const voipPushNotification = (0, _libs.getVoipPushNotificationLib)();
18
+ logger('debug', 'notification event listener added');
19
+ voipPushNotification.addEventListener('notification', notification => {
20
+ (0, _.onVoipNotificationReceived)(notification);
21
+ });
22
+ (0, _pushLogoutCallback.setPushLogoutCallback)(async () => {
23
+ (0, _videoClient.getLogger)(['setPushLogoutCallback'])('debug', 'notification event listener removed');
24
+ voipPushNotification.removeEventListener('notification');
25
+ });
26
+ }
27
+ //# sourceMappingURL=setupIosVoipPushEvents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_libs","require","_reactNative","_","_pushLogoutCallback","_videoClient","setupIosVoipPushEvents","pushConfig","Platform","OS","ios","pushProviderName","logger","getLogger","voipPushNotification","getVoipPushNotificationLib","addEventListener","notification","onVoipNotificationReceived","setPushLogoutCallback","removeEventListener"],"sourceRoot":"../../../../src","sources":["utils/push/setupIosVoipPushEvents.ts"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAEA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,CAAA,GAAAF,OAAA;AACA,IAAAG,mBAAA,GAAAH,OAAA;AACA,IAAAI,YAAA,GAAAJ,OAAA;AAGO,SAASK,sBAAsBA,CACpCC,UAAkD,EAClD;EACA,IAAIC,qBAAQ,CAACC,EAAE,KAAK,KAAK,IAAI,CAACF,UAAU,CAACG,GAAG,EAAEC,gBAAgB,EAAE;IAC9D;EACF;EACA,MAAMC,MAAM,GAAG,IAAAC,sBAAS,EAAC,CAAC,wBAAwB,CAAC,CAAC;EACpD,MAAMC,oBAAoB,GAAG,IAAAC,gCAA0B,EAAC,CAAC;EAEzDH,MAAM,CAAC,OAAO,EAAE,mCAAmC,CAAC;EACpDE,oBAAoB,CAACE,gBAAgB,CAAC,cAAc,EAAGC,YAAY,IAAK;IACtE,IAAAC,4BAA0B,EAACD,YAAY,CAAC;EAC1C,CAAC,CAAC;EACF,IAAAE,yCAAqB,EAAC,YAAY;IAChC,IAAAN,sBAAS,EAAC,CAAC,uBAAuB,CAAC,CAAC,CAClC,OAAO,EACP,qCACF,CAAC;IACDC,oBAAoB,CAACM,mBAAmB,CAAC,cAAc,CAAC;EAC1D,CAAC,CAAC;AACJ","ignoreList":[]}
@@ -4,5 +4,5 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.version = void 0;
7
- const version = exports.version = '1.10.12';
7
+ const version = exports.version = '1.10.14';
8
8
  //# sourceMappingURL=version.js.map
@@ -1,22 +1,10 @@
1
- import { CallingState, hasScreenShare, speakerLayoutSortPreset } from '@stream-io/video-client';
1
+ import { CallingState, getLogger, hasScreenShare, speakerLayoutSortPreset } from '@stream-io/video-client';
2
2
  import { useCall, useCallStateHooks } from '@stream-io/video-react-bindings';
3
3
  import React, { useEffect, useMemo } from 'react';
4
- import { findNodeHandle, Platform, requireNativeComponent, UIManager } from 'react-native';
4
+ import { findNodeHandle } from 'react-native';
5
+ import { RTCViewPipNative, onNativeCallClosed } from './RTCViewPipNative';
5
6
  import { useDebouncedValue } from '../../../utils/hooks/useDebouncedValue';
6
7
  import { shouldDisableIOSLocalVideoOnBackgroundRef } from '../../../utils/internal/shouldDisableIOSLocalVideoOnBackground';
7
- const COMPONENT_NAME = 'RTCViewPip';
8
- const RTCViewPipNative = requireNativeComponent(COMPONENT_NAME);
9
-
10
- /** Wrapper for the native view
11
- * meant to stay private and not exposed */
12
- const RTCViewPip = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef((props, ref) => {
13
- if (Platform.OS !== 'ios') return null;
14
- // @ts-ignore
15
- return /*#__PURE__*/React.createElement(RTCViewPipNative, {
16
- streamURL: props.streamURL,
17
- ref: ref
18
- });
19
- }));
20
8
  const RTCViewPipIOS = /*#__PURE__*/React.memo(({
21
9
  includeLocalParticipantVideo
22
10
  }) => {
@@ -50,17 +38,19 @@ const RTCViewPipIOS = /*#__PURE__*/React.memo(({
50
38
  callClosedInvokedOnce = true;
51
39
  const node = findNodeHandle(nativeRef.current);
52
40
  if (node !== null) {
53
- UIManager.dispatchViewManagerCommand(node,
54
- // @ts-ignore
55
- UIManager.getViewManagerConfig(COMPONENT_NAME).Commands.onCallClosed, []);
41
+ onNativeCallClosed(node);
56
42
  }
57
43
  shouldDisableIOSLocalVideoOnBackgroundRef.current = true;
58
44
  };
59
45
  const unsubFunc = call?.on('call.ended', () => {
46
+ getLogger(['RTCViewPipIOS'])('debug', `onCallClosed due to call.ended event`);
47
+ unsubFunc?.();
60
48
  onCallClosed();
61
49
  });
62
50
  const subscription = call?.state.callingState$.subscribe(state => {
63
51
  if (state === CallingState.LEFT || state === CallingState.IDLE) {
52
+ getLogger(['RTCViewPipIOS'])('debug', `onCallClosed due to callingState: ${state}`);
53
+ subscription?.unsubscribe();
64
54
  onCallClosed();
65
55
  }
66
56
  });
@@ -82,7 +72,7 @@ const RTCViewPipIOS = /*#__PURE__*/React.memo(({
82
72
  const videoStreamToRender = isScreenSharing ? screenShareStream : videoStream;
83
73
  return videoStreamToRender?.toURL();
84
74
  }, [participantInSpotlight]);
85
- return /*#__PURE__*/React.createElement(RTCViewPip, {
75
+ return /*#__PURE__*/React.createElement(RTCViewPipNative, {
86
76
  streamURL: streamURL,
87
77
  ref: nativeRef
88
78
  });
@@ -1 +1 @@
1
- {"version":3,"names":["CallingState","hasScreenShare","speakerLayoutSortPreset","useCall","useCallStateHooks","React","useEffect","useMemo","findNodeHandle","Platform","requireNativeComponent","UIManager","useDebouncedValue","shouldDisableIOSLocalVideoOnBackgroundRef","COMPONENT_NAME","RTCViewPipNative","RTCViewPip","memo","forwardRef","props","ref","OS","createElement","streamURL","RTCViewPipIOS","includeLocalParticipantVideo","call","useParticipants","_allParticipants","sortBy","allParticipants","dominantSpeaker","dominantSpeaker2","filter","participant","isLocalParticipant","participantInSpotlight","current","nativeRef","useRef","callClosedInvokedOnce","onCallClosed","node","dispatchViewManagerCommand","getViewManagerConfig","Commands","unsubFunc","on","subscription","state","callingState$","subscribe","LEFT","IDLE","unsubscribe","undefined","videoStream","screenShareStream","isScreenSharing","videoStreamToRender","toURL"],"sourceRoot":"../../../../../src","sources":["components/Call/CallContent/RTCViewPipIOS.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["CallingState","getLogger","hasScreenShare","speakerLayoutSortPreset","useCall","useCallStateHooks","React","useEffect","useMemo","findNodeHandle","RTCViewPipNative","onNativeCallClosed","useDebouncedValue","shouldDisableIOSLocalVideoOnBackgroundRef","RTCViewPipIOS","memo","includeLocalParticipantVideo","call","useParticipants","_allParticipants","sortBy","allParticipants","dominantSpeaker","dominantSpeaker2","filter","participant","isLocalParticipant","participantInSpotlight","current","nativeRef","useRef","callClosedInvokedOnce","onCallClosed","node","unsubFunc","on","subscription","state","callingState$","subscribe","LEFT","IDLE","unsubscribe","streamURL","undefined","videoStream","screenShareStream","isScreenSharing","videoStreamToRender","toURL","createElement","ref"],"sourceRoot":"../../../../../src","sources":["components/Call/CallContent/RTCViewPipIOS.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,26 @@
1
+ import { getLogger } from '@stream-io/video-client';
2
+ import React from 'react';
3
+ import { Platform, requireNativeComponent, UIManager, StyleSheet } from 'react-native';
4
+ const COMPONENT_NAME = 'RTCViewPip';
5
+ const NativeComponent = requireNativeComponent(COMPONENT_NAME);
6
+ export function onNativeCallClosed(reactTag) {
7
+ getLogger(['RTCViewPipNative'])('debug', 'onNativeCallClosed');
8
+ UIManager.dispatchViewManagerCommand(reactTag,
9
+ // @ts-ignore
10
+ UIManager.getViewManagerConfig(COMPONENT_NAME).Commands.onCallClosed, []);
11
+ }
12
+
13
+ /** Wrapper for the native view
14
+ * meant to stay private and not exposed */
15
+ export const RTCViewPipNative = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef((props, ref) => {
16
+ if (Platform.OS !== 'ios') return null;
17
+ return /*#__PURE__*/React.createElement(NativeComponent, {
18
+ style: StyleSheet.absoluteFill,
19
+ pointerEvents: 'none',
20
+ streamURL: props.streamURL
21
+ // @ts-ignore
22
+ ,
23
+ ref: ref
24
+ });
25
+ }));
26
+ //# sourceMappingURL=RTCViewPipNative.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getLogger","React","Platform","requireNativeComponent","UIManager","StyleSheet","COMPONENT_NAME","NativeComponent","onNativeCallClosed","reactTag","dispatchViewManagerCommand","getViewManagerConfig","Commands","onCallClosed","RTCViewPipNative","memo","forwardRef","props","ref","OS","createElement","style","absoluteFill","pointerEvents","streamURL"],"sourceRoot":"../../../../../src","sources":["components/Call/CallContent/RTCViewPipNative.tsx"],"mappings":"AAAA,SAASA,SAAS,QAAQ,yBAAyB;AACnD,OAAOC,KAAK,MAAM,OAAO;AACzB,SAEEC,QAAQ,EACRC,sBAAsB,EACtBC,SAAS,EACTC,UAAU,QACL,cAAc;AAErB,MAAMC,cAAc,GAAG,YAAY;AAMnC,MAAMC,eAAqD,GACzDJ,sBAAsB,CAACG,cAAc,CAAC;AAExC,OAAO,SAASE,kBAAkBA,CAACC,QAAgB,EAAE;EACnDT,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,EAAE,oBAAoB,CAAC;EAC9DI,SAAS,CAACM,0BAA0B,CAClCD,QAAQ;EACR;EACAL,SAAS,CAACO,oBAAoB,CAACL,cAAc,CAAC,CAACM,QAAQ,CAACC,YAAY,EACpE,EACF,CAAC;AACH;;AAEA;AACA;AACA,OAAO,MAAMC,gBAAgB,gBAAGb,KAAK,CAACc,IAAI,cACxCd,KAAK,CAACe,UAAU,CAKd,CAACC,KAAK,EAAEC,GAAG,KAAK;EAChB,IAAIhB,QAAQ,CAACiB,EAAE,KAAK,KAAK,EAAE,OAAO,IAAI;EAEtC,oBACElB,KAAA,CAAAmB,aAAA,CAACb,eAAe;IACdc,KAAK,EAAEhB,UAAU,CAACiB,YAAa;IAC/BC,aAAa,EAAE,MAAO;IACtBC,SAAS,EAAEP,KAAK,CAACO;IACjB;IAAA;IACAN,GAAG,EAAEA;EAAI,CACV,CAAC;AAEN,CAAC,CACH,CAAC","ignoreList":[]}
@@ -1,4 +1,3 @@
1
- import { useIosCallKeepEventsSetupEffect } from './useIosCallKeepEventsSetupEffect';
2
1
  import { useIosVoipPushEventsSetupEffect } from './useIosVoipPushEventsSetupEffect';
3
2
  import { useProcessPushCallEffect } from './useProcessPushCallEffect';
4
3
  import { useInitAndroidTokenAndRest } from './useInitAndroidTokenAndRest';
@@ -11,7 +10,6 @@ import { useProcessPushNonRingingCallEffect } from './useProcessPushNonRingingCa
11
10
  */
12
11
  export const usePushRegisterEffect = () => {
13
12
  useIosInitRemoteNotifications();
14
- useIosCallKeepEventsSetupEffect();
15
13
  useIosVoipPushEventsSetupEffect();
16
14
  useProcessPushNonRingingCallEffect();
17
15
  useProcessPushCallEffect();
@@ -1 +1 @@
1
- {"version":3,"names":["useIosCallKeepEventsSetupEffect","useIosVoipPushEventsSetupEffect","useProcessPushCallEffect","useInitAndroidTokenAndRest","useIosInitRemoteNotifications","useProcessPushNonRingingCallEffect","usePushRegisterEffect"],"sourceRoot":"../../../../src","sources":["hooks/push/index.ts"],"mappings":"AAAA,SAASA,+BAA+B,QAAQ,mCAAmC;AACnF,SAASC,+BAA+B,QAAQ,mCAAmC;AACnF,SAASC,wBAAwB,QAAQ,4BAA4B;AACrE,SAASC,0BAA0B,QAAQ,8BAA8B;AACzE,SAASC,6BAA6B,QAAQ,iCAAiC;AAC/E,SAASC,kCAAkC,QAAQ,sCAAsC;;AAEzF;AACA;AACA;AACA;AACA,OAAO,MAAMC,qBAAqB,GAAGA,CAAA,KAAM;EACzCF,6BAA6B,CAAC,CAAC;EAC/BJ,+BAA+B,CAAC,CAAC;EACjCC,+BAA+B,CAAC,CAAC;EACjCI,kCAAkC,CAAC,CAAC;EACpCH,wBAAwB,CAAC,CAAC;EAC1BC,0BAA0B,CAAC,CAAC;AAC9B,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["useIosVoipPushEventsSetupEffect","useProcessPushCallEffect","useInitAndroidTokenAndRest","useIosInitRemoteNotifications","useProcessPushNonRingingCallEffect","usePushRegisterEffect"],"sourceRoot":"../../../../src","sources":["hooks/push/index.ts"],"mappings":"AAAA,SAASA,+BAA+B,QAAQ,mCAAmC;AACnF,SAASC,wBAAwB,QAAQ,4BAA4B;AACrE,SAASC,0BAA0B,QAAQ,8BAA8B;AACzE,SAASC,6BAA6B,QAAQ,iCAAiC;AAC/E,SAASC,kCAAkC,QAAQ,sCAAsC;;AAEzF;AACA;AACA;AACA;AACA,OAAO,MAAMC,qBAAqB,GAAGA,CAAA,KAAM;EACzCF,6BAA6B,CAAC,CAAC;EAC/BH,+BAA+B,CAAC,CAAC;EACjCI,kCAAkC,CAAC,CAAC;EACpCH,wBAAwB,CAAC,CAAC;EAC1BC,0BAA0B,CAAC,CAAC;AAC9B,CAAC","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  import { CallingState, getLogger, RxUtils } from '@stream-io/video-client';
2
2
  import { useCall, useCallStateHooks } from '@stream-io/video-react-bindings';
3
- import { Platform } from 'react-native';
3
+ import { NativeModules, Platform } from 'react-native';
4
4
  import { useEffect, useState } from 'react';
5
5
  import { StreamVideoRN } from '../../utils';
6
6
  import { getCallKeepLib } from '../../utils/push/libs';
@@ -11,14 +11,18 @@ const isNonActiveCallingState = callingState => {
11
11
  const isAcceptedCallingState = callingState => {
12
12
  return callingState === CallingState.JOINING || callingState === CallingState.JOINED;
13
13
  };
14
- const unsubscribeCallkeepEvents = activeCallCid => {
14
+ const unsubscribeCallkeepEvents = async activeCallCid => {
15
15
  const voipPushNotificationCallCId = RxUtils.getCurrentValue(voipPushNotificationCallCId$);
16
16
  if (activeCallCid && activeCallCid === voipPushNotificationCallCId) {
17
17
  // callkeep events should not be listened anymore so clear the call cid
18
18
  voipPushNotificationCallCId$.next(undefined);
19
19
  }
20
+ return await NativeModules.StreamVideoReactNative?.removeIncomingCall(activeCallCid);
20
21
  };
21
22
  const logger = getLogger(['useIosCallkeepWithCallingStateEffect']);
23
+ const log = message => {
24
+ logger('warn', message);
25
+ };
22
26
 
23
27
  /**
24
28
  * This hook is used to inform the callkeep library that the call has been joined or ended.
@@ -39,10 +43,8 @@ export const useIosCallkeepWithCallingStateEffect = () => {
39
43
  const callkeep = getCallKeepLib();
40
44
  // if the component is unmounted and the callID was not reported to callkeep, then report it now
41
45
  if (acceptedForegroundCallkeepMap) {
42
- logger('debug', `Ending call in callkeep: ${acceptedForegroundCallkeepMap.cid}, reason: component unmounted and call was present in acceptedForegroundCallkeepMap`);
43
- unsubscribeCallkeepEvents(acceptedForegroundCallkeepMap.cid);
44
- // this call should be ended in callkeep
45
- callkeep.endCall(acceptedForegroundCallkeepMap.uuid);
46
+ log(`Ending call in callkeep: ${acceptedForegroundCallkeepMap.cid}, reason: component unmounted and call was present in acceptedForegroundCallkeepMap`);
47
+ unsubscribeCallkeepEvents(acceptedForegroundCallkeepMap.cid).then(() => callkeep.endCall(acceptedForegroundCallkeepMap.uuid));
46
48
  }
47
49
  };
48
50
  }, [acceptedForegroundCallkeepMap]);
@@ -57,17 +59,13 @@ export const useIosCallkeepWithCallingStateEffect = () => {
57
59
  const foregroundIncomingCallkeepMap = RxUtils.getCurrentValue(voipCallkeepCallOnForegroundMap$);
58
60
  const callkeep = getCallKeepLib();
59
61
  if (activeCallCid === nativeDialerAcceptedCallMap?.cid) {
60
- logger('debug', `Ending call in callkeep: ${activeCallCid}, reason: activeCallCid changed or was removed and call was present in nativeDialerAcceptedCallMap`);
61
- unsubscribeCallkeepEvents(activeCallCid);
62
- callkeep.endCall(nativeDialerAcceptedCallMap.uuid);
62
+ log(`Ending call in callkeep: ${activeCallCid}, reason: activeCallCid changed or was removed and call was present in nativeDialerAcceptedCallMap`);
63
+ unsubscribeCallkeepEvents(activeCallCid).then(() => callkeep.endCall(nativeDialerAcceptedCallMap.uuid));
63
64
  // no need to keep this reference anymore
64
65
  voipCallkeepAcceptedCallOnNativeDialerMap$.next(undefined);
65
66
  } else if (activeCallCid === foregroundIncomingCallkeepMap?.cid) {
66
- logger('debug', `Ending call in callkeep: ${activeCallCid}, reason: activeCallCid changed or was removed and call was present in foregroundIncomingCallkeepMap`);
67
- unsubscribeCallkeepEvents(activeCallCid);
68
- callkeep.endCall(foregroundIncomingCallkeepMap.uuid);
69
- // no need to keep this reference anymore
70
- voipCallkeepCallOnForegroundMap$.next(undefined);
67
+ log(`Ending call in callkeep: ${activeCallCid}, reason: activeCallCid changed or was removed and call was present in foregroundIncomingCallkeepMap`);
68
+ unsubscribeCallkeepEvents(activeCallCid).then(() => callkeep.endCall(foregroundIncomingCallkeepMap.uuid));
71
69
  }
72
70
  };
73
71
  }, [activeCallCid]);
@@ -85,13 +83,13 @@ export const useIosCallkeepWithCallingStateEffect = () => {
85
83
  // but the call has been accepted through the app and not through the native dialer
86
84
  const foregroundCallkeepMap = RxUtils.getCurrentValue(voipCallkeepCallOnForegroundMap$);
87
85
  if (foregroundCallkeepMap && foregroundCallkeepMap.cid === activeCallCid) {
88
- logger('debug',
86
+ log(
89
87
  // @ts-ignore
90
88
  `Accepting call in callkeep: ${activeCallCid}, reason: callingstate went to ${CallingState[callingState]} and call was present in foregroundCallkeepMap`);
91
- // this call should be accepted in callkeep
92
- callkeep.answerIncomingCall(foregroundCallkeepMap.uuid);
93
89
  // no need to keep this reference anymore
94
90
  voipCallkeepCallOnForegroundMap$.next(undefined);
91
+ NativeModules.StreamVideoReactNative?.removeIncomingCall(activeCallCid).then(() => callkeep.answerIncomingCall(foregroundCallkeepMap.uuid));
92
+ // this call should be accepted in callkeep
95
93
  setAcceptedForegroundCallkeepMap(foregroundCallkeepMap);
96
94
  }
97
95
  }
@@ -101,16 +99,15 @@ export const useIosCallkeepWithCallingStateEffect = () => {
101
99
  */
102
100
  if (isNonActiveCallingState(callingState)) {
103
101
  const callkeep = getCallKeepLib();
104
- unsubscribeCallkeepEvents(activeCallCid);
105
102
 
106
103
  // this was a previously joined call which had push notification displayed
107
104
  // the call was accepted through the app and not through native dialer
108
105
  // the call was left using the leave button in the app and not through native dialer
109
106
  if (activeCallCid === acceptedForegroundCallkeepMap?.cid) {
110
- logger('debug',
107
+ log(
111
108
  // @ts-ignore
112
109
  `Ending call in callkeep: ${activeCallCid}, reason: callingstate went to ${CallingState[callingState]} and call was present in acceptedForegroundCallkeepMap`);
113
- callkeep.endCall(acceptedForegroundCallkeepMap.uuid);
110
+ unsubscribeCallkeepEvents(activeCallCid).then(() => callkeep.endCall(acceptedForegroundCallkeepMap.uuid));
114
111
  setAcceptedForegroundCallkeepMap(undefined);
115
112
  return;
116
113
  }
@@ -118,10 +115,10 @@ export const useIosCallkeepWithCallingStateEffect = () => {
118
115
  // the user rejected in the app and not from native dialer
119
116
  const foregroundIncomingCallkeepMap = RxUtils.getCurrentValue(voipCallkeepCallOnForegroundMap$);
120
117
  if (activeCallCid === foregroundIncomingCallkeepMap?.cid) {
121
- logger('debug',
118
+ log(
122
119
  // @ts-ignore
123
120
  `Ending call in callkeep: ${activeCallCid}, reason: callingstate went to ${CallingState[callingState]} and call was present in foregroundIncomingCallkeepMap`);
124
- callkeep.endCall(foregroundIncomingCallkeepMap.uuid);
121
+ unsubscribeCallkeepEvents(activeCallCid).then(() => callkeep.endCall(foregroundIncomingCallkeepMap.uuid));
125
122
  // no need to keep this reference anymore
126
123
  voipCallkeepCallOnForegroundMap$.next(undefined);
127
124
  return;
@@ -131,10 +128,10 @@ export const useIosCallkeepWithCallingStateEffect = () => {
131
128
  // the user left using the leave button in the app
132
129
  const nativeDialerAcceptedCallMap = RxUtils.getCurrentValue(voipCallkeepAcceptedCallOnNativeDialerMap$);
133
130
  if (activeCallCid === nativeDialerAcceptedCallMap?.cid) {
134
- logger('debug',
131
+ log(
135
132
  // @ts-ignore
136
133
  `Ending call in callkeep: ${activeCallCid}, reason: callingstate went to ${CallingState[callingState]} and call was present in nativeDialerAcceptedCallMap`);
137
- callkeep.endCall(nativeDialerAcceptedCallMap.uuid);
134
+ unsubscribeCallkeepEvents(activeCallCid).then(() => callkeep.endCall(nativeDialerAcceptedCallMap.uuid));
138
135
  // no need to keep this reference anymore
139
136
  voipCallkeepAcceptedCallOnNativeDialerMap$.next(undefined);
140
137
  return;