@stream-io/video-react-native-sdk 1.30.0 → 1.30.1-beta.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.
Files changed (208) hide show
  1. package/android/src/main/AndroidManifest.xml +8 -1
  2. package/android/src/main/AndroidManifestNew.xml +11 -0
  3. package/android/src/main/java/com/streamvideo/reactnative/StreamVideoReactNativeModule.kt +42 -5
  4. package/android/src/main/java/com/streamvideo/reactnative/audio/utils/WebRtcAudioUtils.kt +70 -6
  5. package/android/src/main/java/com/streamvideo/reactnative/callmanager/StreamInCallManagerModule.kt +6 -4
  6. package/android/src/main/java/com/streamvideo/reactnative/keepalive/KeepAliveNotification.kt +83 -0
  7. package/android/src/main/java/com/streamvideo/reactnative/keepalive/StreamCallKeepAliveHeadlessService.kt +149 -0
  8. package/dist/commonjs/hooks/push/index.js +0 -2
  9. package/dist/commonjs/hooks/push/index.js.map +1 -1
  10. package/dist/commonjs/hooks/push/useCallingExpWithCallingStateEffect.js +121 -0
  11. package/dist/commonjs/hooks/push/useCallingExpWithCallingStateEffect.js.map +1 -0
  12. package/dist/commonjs/hooks/push/useIosVoipPushEventsSetupEffect.js +18 -31
  13. package/dist/commonjs/hooks/push/useIosVoipPushEventsSetupEffect.js.map +1 -1
  14. package/dist/commonjs/hooks/useAndroidKeepCallAliveEffect.js +64 -97
  15. package/dist/commonjs/hooks/useAndroidKeepCallAliveEffect.js.map +1 -1
  16. package/dist/commonjs/index.js +1 -0
  17. package/dist/commonjs/index.js.map +1 -1
  18. package/dist/commonjs/modules/call-manager/CallManager.js +26 -0
  19. package/dist/commonjs/modules/call-manager/CallManager.js.map +1 -1
  20. package/dist/commonjs/providers/StreamCall/index.js +6 -6
  21. package/dist/commonjs/providers/StreamCall/index.js.map +1 -1
  22. package/dist/commonjs/utils/StreamVideoRN/index.js +33 -21
  23. package/dist/commonjs/utils/StreamVideoRN/index.js.map +1 -1
  24. package/dist/commonjs/utils/internal/callingx/audioSessionPromise.js +68 -0
  25. package/dist/commonjs/utils/internal/callingx/audioSessionPromise.js.map +1 -0
  26. package/dist/commonjs/utils/internal/callingx/callingx.js +123 -0
  27. package/dist/commonjs/utils/internal/callingx/callingx.js.map +1 -0
  28. package/dist/commonjs/utils/internal/registerSDKGlobals.js +52 -3
  29. package/dist/commonjs/utils/internal/registerSDKGlobals.js.map +1 -1
  30. package/dist/commonjs/utils/keepCallAliveHeadlessTask.js +48 -0
  31. package/dist/commonjs/utils/keepCallAliveHeadlessTask.js.map +1 -0
  32. package/dist/commonjs/utils/push/android.js +135 -202
  33. package/dist/commonjs/utils/push/android.js.map +1 -1
  34. package/dist/commonjs/utils/push/internal/ios.js +17 -34
  35. package/dist/commonjs/utils/push/internal/ios.js.map +1 -1
  36. package/dist/commonjs/utils/push/internal/rxSubjects.js +1 -45
  37. package/dist/commonjs/utils/push/internal/rxSubjects.js.map +1 -1
  38. package/dist/commonjs/utils/push/internal/utils.js +67 -52
  39. package/dist/commonjs/utils/push/internal/utils.js.map +1 -1
  40. package/dist/commonjs/utils/push/ios.js.map +1 -1
  41. package/dist/commonjs/utils/push/libs/callingx.js +78 -0
  42. package/dist/commonjs/utils/push/libs/callingx.js.map +1 -0
  43. package/dist/commonjs/utils/push/libs/index.js +8 -19
  44. package/dist/commonjs/utils/push/libs/index.js.map +1 -1
  45. package/dist/commonjs/utils/push/libs/notifee/index.js +0 -19
  46. package/dist/commonjs/utils/push/libs/notifee/index.js.map +1 -1
  47. package/dist/commonjs/utils/push/setupCallingExpEvents.js +105 -0
  48. package/dist/commonjs/utils/push/setupCallingExpEvents.js.map +1 -0
  49. package/dist/commonjs/utils/push/setupIosVoipPushEvents.js +7 -6
  50. package/dist/commonjs/utils/push/setupIosVoipPushEvents.js.map +1 -1
  51. package/dist/commonjs/version.js +1 -1
  52. package/dist/commonjs/version.js.map +1 -1
  53. package/dist/module/hooks/push/index.js +0 -2
  54. package/dist/module/hooks/push/index.js.map +1 -1
  55. package/dist/module/hooks/push/useCallingExpWithCallingStateEffect.js +114 -0
  56. package/dist/module/hooks/push/useCallingExpWithCallingStateEffect.js.map +1 -0
  57. package/dist/module/hooks/push/useIosVoipPushEventsSetupEffect.js +18 -31
  58. package/dist/module/hooks/push/useIosVoipPushEventsSetupEffect.js.map +1 -1
  59. package/dist/module/hooks/useAndroidKeepCallAliveEffect.js +66 -99
  60. package/dist/module/hooks/useAndroidKeepCallAliveEffect.js.map +1 -1
  61. package/dist/module/index.js +1 -0
  62. package/dist/module/index.js.map +1 -1
  63. package/dist/module/modules/call-manager/CallManager.js +26 -0
  64. package/dist/module/modules/call-manager/CallManager.js.map +1 -1
  65. package/dist/module/providers/StreamCall/index.js +6 -6
  66. package/dist/module/providers/StreamCall/index.js.map +1 -1
  67. package/dist/module/utils/StreamVideoRN/index.js +33 -21
  68. package/dist/module/utils/StreamVideoRN/index.js.map +1 -1
  69. package/dist/module/utils/internal/callingx/audioSessionPromise.js +61 -0
  70. package/dist/module/utils/internal/callingx/audioSessionPromise.js.map +1 -0
  71. package/dist/module/utils/internal/callingx/callingx.js +114 -0
  72. package/dist/module/utils/internal/callingx/callingx.js.map +1 -0
  73. package/dist/module/utils/internal/registerSDKGlobals.js +52 -3
  74. package/dist/module/utils/internal/registerSDKGlobals.js.map +1 -1
  75. package/dist/module/utils/keepCallAliveHeadlessTask.js +42 -0
  76. package/dist/module/utils/keepCallAliveHeadlessTask.js.map +1 -0
  77. package/dist/module/utils/push/android.js +137 -204
  78. package/dist/module/utils/push/android.js.map +1 -1
  79. package/dist/module/utils/push/internal/ios.js +17 -34
  80. package/dist/module/utils/push/internal/ios.js.map +1 -1
  81. package/dist/module/utils/push/internal/rxSubjects.js +0 -44
  82. package/dist/module/utils/push/internal/rxSubjects.js.map +1 -1
  83. package/dist/module/utils/push/internal/utils.js +63 -49
  84. package/dist/module/utils/push/internal/utils.js.map +1 -1
  85. package/dist/module/utils/push/ios.js.map +1 -1
  86. package/dist/module/utils/push/libs/callingx.js +70 -0
  87. package/dist/module/utils/push/libs/callingx.js.map +1 -0
  88. package/dist/module/utils/push/libs/index.js +1 -2
  89. package/dist/module/utils/push/libs/index.js.map +1 -1
  90. package/dist/module/utils/push/libs/notifee/index.js +0 -18
  91. package/dist/module/utils/push/libs/notifee/index.js.map +1 -1
  92. package/dist/module/utils/push/setupCallingExpEvents.js +99 -0
  93. package/dist/module/utils/push/setupCallingExpEvents.js.map +1 -0
  94. package/dist/module/utils/push/setupIosVoipPushEvents.js +7 -6
  95. package/dist/module/utils/push/setupIosVoipPushEvents.js.map +1 -1
  96. package/dist/module/version.js +1 -1
  97. package/dist/module/version.js.map +1 -1
  98. package/dist/typescript/hooks/push/index.d.ts.map +1 -1
  99. package/dist/typescript/hooks/push/useCallingExpWithCallingStateEffect.d.ts +5 -0
  100. package/dist/typescript/hooks/push/useCallingExpWithCallingStateEffect.d.ts.map +1 -0
  101. package/dist/typescript/hooks/push/useIosVoipPushEventsSetupEffect.d.ts.map +1 -1
  102. package/dist/typescript/hooks/useAndroidKeepCallAliveEffect.d.ts.map +1 -1
  103. package/dist/typescript/index.d.ts +1 -0
  104. package/dist/typescript/index.d.ts.map +1 -1
  105. package/dist/typescript/modules/call-manager/CallManager.d.ts +5 -0
  106. package/dist/typescript/modules/call-manager/CallManager.d.ts.map +1 -1
  107. package/dist/typescript/utils/StreamVideoRN/index.d.ts +20 -2
  108. package/dist/typescript/utils/StreamVideoRN/index.d.ts.map +1 -1
  109. package/dist/typescript/utils/StreamVideoRN/types.d.ts +63 -25
  110. package/dist/typescript/utils/StreamVideoRN/types.d.ts.map +1 -1
  111. package/dist/typescript/utils/internal/callingx/audioSessionPromise.d.ts +16 -0
  112. package/dist/typescript/utils/internal/callingx/audioSessionPromise.d.ts.map +1 -0
  113. package/dist/typescript/utils/internal/callingx/callingx.d.ts +17 -0
  114. package/dist/typescript/utils/internal/callingx/callingx.d.ts.map +1 -0
  115. package/dist/typescript/utils/internal/registerSDKGlobals.d.ts.map +1 -1
  116. package/dist/typescript/utils/keepCallAliveHeadlessTask.d.ts +10 -0
  117. package/dist/typescript/utils/keepCallAliveHeadlessTask.d.ts.map +1 -0
  118. package/dist/typescript/utils/push/android.d.ts +1 -2
  119. package/dist/typescript/utils/push/android.d.ts.map +1 -1
  120. package/dist/typescript/utils/push/internal/ios.d.ts.map +1 -1
  121. package/dist/typescript/utils/push/internal/rxSubjects.d.ts +0 -33
  122. package/dist/typescript/utils/push/internal/rxSubjects.d.ts.map +1 -1
  123. package/dist/typescript/utils/push/internal/utils.d.ts +14 -8
  124. package/dist/typescript/utils/push/internal/utils.d.ts.map +1 -1
  125. package/dist/typescript/utils/push/ios.d.ts +1 -2
  126. package/dist/typescript/utils/push/ios.d.ts.map +1 -1
  127. package/dist/typescript/utils/push/libs/callingx.d.ts +9 -0
  128. package/dist/typescript/utils/push/libs/callingx.d.ts.map +1 -0
  129. package/dist/typescript/utils/push/libs/index.d.ts +1 -2
  130. package/dist/typescript/utils/push/libs/index.d.ts.map +1 -1
  131. package/dist/typescript/utils/push/libs/notifee/index.d.ts +0 -1
  132. package/dist/typescript/utils/push/libs/notifee/index.d.ts.map +1 -1
  133. package/dist/typescript/utils/push/setupCallingExpEvents.d.ts +8 -0
  134. package/dist/typescript/utils/push/setupCallingExpEvents.d.ts.map +1 -0
  135. package/dist/typescript/utils/push/setupIosVoipPushEvents.d.ts.map +1 -1
  136. package/dist/typescript/version.d.ts +1 -1
  137. package/dist/typescript/version.d.ts.map +1 -1
  138. package/expo-config-plugin/dist/withAndroidManifest.js +1 -33
  139. package/expo-config-plugin/dist/withAndroidPermissions.js +2 -7
  140. package/expo-config-plugin/dist/withAppDelegate.js +19 -197
  141. package/expo-config-plugin/dist/withMainActivity.js +1 -1
  142. package/expo-config-plugin/dist/withiOSInfoPlist.js +2 -3
  143. package/ios/StreamInCallManager.m +2 -0
  144. package/ios/StreamInCallManager.swift +19 -7
  145. package/ios/StreamVideoReactNative.h +7 -4
  146. package/ios/StreamVideoReactNative.m +189 -82
  147. package/package.json +13 -18
  148. package/src/hooks/push/index.ts +0 -2
  149. package/src/hooks/push/useCallingExpWithCallingStateEffect.ts +147 -0
  150. package/src/hooks/push/useIosVoipPushEventsSetupEffect.ts +21 -34
  151. package/src/hooks/useAndroidKeepCallAliveEffect.ts +94 -120
  152. package/src/index.ts +1 -0
  153. package/src/modules/call-manager/CallManager.ts +36 -0
  154. package/src/modules/call-manager/native-module.d.ts +7 -0
  155. package/src/providers/StreamCall/index.tsx +6 -6
  156. package/src/utils/StreamVideoRN/index.ts +40 -30
  157. package/src/utils/StreamVideoRN/types.ts +65 -25
  158. package/src/utils/internal/callingx/audioSessionPromise.ts +65 -0
  159. package/src/utils/internal/callingx/callingx.ts +165 -0
  160. package/src/utils/internal/registerSDKGlobals.ts +47 -4
  161. package/src/utils/keepCallAliveHeadlessTask.ts +54 -0
  162. package/src/utils/push/android.ts +196 -311
  163. package/src/utils/push/internal/ios.ts +28 -44
  164. package/src/utils/push/internal/rxSubjects.ts +0 -61
  165. package/src/utils/push/internal/utils.ts +104 -63
  166. package/src/utils/push/ios.ts +1 -6
  167. package/src/utils/push/libs/callingx.ts +93 -0
  168. package/src/utils/push/libs/index.ts +1 -2
  169. package/src/utils/push/libs/notifee/index.ts +0 -27
  170. package/src/utils/push/setupCallingExpEvents.ts +135 -0
  171. package/src/utils/push/setupIosVoipPushEvents.ts +11 -7
  172. package/src/version.ts +1 -1
  173. package/android/src/main/java/com/streamvideo/reactnative/util/CallAliveServiceChecker.kt +0 -95
  174. package/dist/commonjs/hooks/push/useIosCallkeepWithCallingStateEffect.js +0 -160
  175. package/dist/commonjs/hooks/push/useIosCallkeepWithCallingStateEffect.js.map +0 -1
  176. package/dist/commonjs/hooks/push/useProcessPushCallEffect.js +0 -67
  177. package/dist/commonjs/hooks/push/useProcessPushCallEffect.js.map +0 -1
  178. package/dist/commonjs/utils/push/libs/callkeep.js +0 -17
  179. package/dist/commonjs/utils/push/libs/callkeep.js.map +0 -1
  180. package/dist/commonjs/utils/push/libs/voipPushNotification.js +0 -17
  181. package/dist/commonjs/utils/push/libs/voipPushNotification.js.map +0 -1
  182. package/dist/commonjs/utils/push/setupIosCallKeepEvents.js +0 -205
  183. package/dist/commonjs/utils/push/setupIosCallKeepEvents.js.map +0 -1
  184. package/dist/module/hooks/push/useIosCallkeepWithCallingStateEffect.js +0 -153
  185. package/dist/module/hooks/push/useIosCallkeepWithCallingStateEffect.js.map +0 -1
  186. package/dist/module/hooks/push/useProcessPushCallEffect.js +0 -60
  187. package/dist/module/hooks/push/useProcessPushCallEffect.js.map +0 -1
  188. package/dist/module/utils/push/libs/callkeep.js +0 -11
  189. package/dist/module/utils/push/libs/callkeep.js.map +0 -1
  190. package/dist/module/utils/push/libs/voipPushNotification.js +0 -11
  191. package/dist/module/utils/push/libs/voipPushNotification.js.map +0 -1
  192. package/dist/module/utils/push/setupIosCallKeepEvents.js +0 -199
  193. package/dist/module/utils/push/setupIosCallKeepEvents.js.map +0 -1
  194. package/dist/typescript/hooks/push/useIosCallkeepWithCallingStateEffect.d.ts +0 -5
  195. package/dist/typescript/hooks/push/useIosCallkeepWithCallingStateEffect.d.ts.map +0 -1
  196. package/dist/typescript/hooks/push/useProcessPushCallEffect.d.ts +0 -8
  197. package/dist/typescript/hooks/push/useProcessPushCallEffect.d.ts.map +0 -1
  198. package/dist/typescript/utils/push/libs/callkeep.d.ts +0 -3
  199. package/dist/typescript/utils/push/libs/callkeep.d.ts.map +0 -1
  200. package/dist/typescript/utils/push/libs/voipPushNotification.d.ts +0 -3
  201. package/dist/typescript/utils/push/libs/voipPushNotification.d.ts.map +0 -1
  202. package/dist/typescript/utils/push/setupIosCallKeepEvents.d.ts +0 -6
  203. package/dist/typescript/utils/push/setupIosCallKeepEvents.d.ts.map +0 -1
  204. package/src/hooks/push/useIosCallkeepWithCallingStateEffect.ts +0 -235
  205. package/src/hooks/push/useProcessPushCallEffect.ts +0 -108
  206. package/src/utils/push/libs/callkeep.ts +0 -16
  207. package/src/utils/push/libs/voipPushNotification.ts +0 -17
  208. package/src/utils/push/setupIosCallKeepEvents.ts +0 -252
@@ -0,0 +1,105 @@
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
@@ -0,0 +1 @@
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":[]}
@@ -4,11 +4,13 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.setupIosVoipPushEvents = setupIosVoipPushEvents;
7
- var _libs = require("./libs");
8
7
  var _reactNative = require("react-native");
9
8
  var _ios = require("./internal/ios");
10
9
  var _pushLogoutCallback = require("../internal/pushLogoutCallback");
11
10
  var _videoClient = require("@stream-io/video-client");
11
+ var _libs = require("./libs");
12
+ // import { getVoipPushNotificationLib } from './libs';
13
+
12
14
  function setupIosVoipPushEvents(pushConfig) {
13
15
  if (_reactNative.Platform.OS !== 'ios' || !pushConfig.ios?.pushProviderName) {
14
16
  return;
@@ -19,14 +21,13 @@ function setupIosVoipPushEvents(pushConfig) {
19
21
  logger.debug('ios pushProviderName is not defined, so skipping the setupIosVoipPushEvents');
20
22
  return;
21
23
  }
22
- const voipPushNotification = (0, _libs.getVoipPushNotificationLib)();
23
- logger.debug('notification event listener added');
24
- voipPushNotification.addEventListener('notification', notification => {
25
- (0, _ios.onVoipNotificationReceived)(notification, pushConfig);
24
+ const callingx = (0, _libs.getCallingxLib)();
25
+ const voipNotificationReceivedListener = callingx.addEventListener('voipNotificationReceived', params => {
26
+ (0, _ios.onVoipNotificationReceived)(params, pushConfig);
26
27
  });
27
28
  (0, _pushLogoutCallback.setPushLogoutCallback)(async () => {
28
29
  _videoClient.videoLoggerSystem.getLogger('setPushLogoutCallback').debug('notification event listener removed');
29
- voipPushNotification.removeEventListener('notification');
30
+ voipNotificationReceivedListener.remove();
30
31
  });
31
32
  }
32
33
  //# sourceMappingURL=setupIosVoipPushEvents.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_libs","require","_reactNative","_ios","_pushLogoutCallback","_videoClient","setupIosVoipPushEvents","pushConfig","Platform","OS","ios","pushProviderName","logger","videoLoggerSystem","getLogger","debug","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,IAAA,GAAAF,OAAA;AACA,IAAAG,mBAAA,GAAAH,OAAA;AAEA,IAAAI,YAAA,GAAAJ,OAAA;AAEO,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,GAAGC,8BAAiB,CAACC,SAAS,CAAC,wBAAwB,CAAC;EACpE,IAAI,CAACP,UAAU,CAACG,GAAG,CAACC,gBAAgB,EAAE;IACpC;IACAC,MAAM,CAACG,KAAK,CACV,6EACF,CAAC;IACD;EACF;EACA,MAAMC,oBAAoB,GAAG,IAAAC,gCAA0B,EAAC,CAAC;EAEzDL,MAAM,CAACG,KAAK,CAAC,mCAAmC,CAAC;EACjDC,oBAAoB,CAACE,gBAAgB,CAAC,cAAc,EAAGC,YAAY,IAAK;IACtE,IAAAC,+BAA0B,EAACD,YAAY,EAAEZ,UAAU,CAAC;EACtD,CAAC,CAAC;EACF,IAAAc,yCAAqB,EAAC,YAAY;IAChCR,8BAAiB,CACdC,SAAS,CAAC,uBAAuB,CAAC,CAClCC,KAAK,CAAC,qCAAqC,CAAC;IAC/CC,oBAAoB,CAACM,mBAAmB,CAAC,cAAc,CAAC;EAC1D,CAAC,CAAC;AACJ","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_ios","_pushLogoutCallback","_videoClient","_libs","setupIosVoipPushEvents","pushConfig","Platform","OS","ios","pushProviderName","logger","videoLoggerSystem","getLogger","debug","callingx","getCallingxLib","voipNotificationReceivedListener","addEventListener","params","onVoipNotificationReceived","setPushLogoutCallback","remove"],"sourceRoot":"../../../../src","sources":["utils/push/setupIosVoipPushEvents.ts"],"mappings":";;;;;;AAEA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,IAAA,GAAAD,OAAA;AACA,IAAAE,mBAAA,GAAAF,OAAA;AAEA,IAAAG,YAAA,GAAAH,OAAA;AACA,IAAAI,KAAA,GAAAJ,OAAA;AAPA;;AASO,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,GAAGC,8BAAiB,CAACC,SAAS,CAAC,wBAAwB,CAAC;EACpE,IAAI,CAACP,UAAU,CAACG,GAAG,CAACC,gBAAgB,EAAE;IACpC;IACAC,MAAM,CAACG,KAAK,CACV,6EACF,CAAC;IACD;EACF;EAEA,MAAMC,QAAQ,GAAG,IAAAC,oBAAc,EAAC,CAAC;EACjC,MAAMC,gCAAgC,GAAGF,QAAQ,CAACG,gBAAgB,CAChE,0BAA0B,EACzBC,MAAM,IAAK;IACV,IAAAC,+BAA0B,EAACD,MAAM,EAAEb,UAAU,CAAC;EAChD,CACF,CAAC;EAED,IAAAe,yCAAqB,EAAC,YAAY;IAChCT,8BAAiB,CACdC,SAAS,CAAC,uBAAuB,CAAC,CAClCC,KAAK,CAAC,qCAAqC,CAAC;IAC/CG,gCAAgC,CAACK,MAAM,CAAC,CAAC;EAC3C,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.30.0';
7
+ const version = exports.version = '1.30.1-beta.1';
8
8
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["version","exports"],"sourceRoot":"../../src","sources":["version.ts"],"mappings":";;;;;;AAAO,MAAMA,OAAO,GAAAC,OAAA,CAAAD,OAAA,GAAG,QAAQ","ignoreList":[]}
1
+ {"version":3,"names":["version","exports"],"sourceRoot":"../../src","sources":["version.ts"],"mappings":";;;;;;AAAO,MAAMA,OAAO,GAAAC,OAAA,CAAAD,OAAA,GAAG,eAAe","ignoreList":[]}
@@ -1,5 +1,4 @@
1
1
  import { useIosVoipPushEventsSetupEffect } from './useIosVoipPushEventsSetupEffect';
2
- import { useProcessPushCallEffect } from './useProcessPushCallEffect';
3
2
  import { useInitAndroidTokenAndRest } from './useInitAndroidTokenAndRest';
4
3
  import { useIosInitRemoteNotifications } from './useIosInitRemoteNotifications';
5
4
  import { useProcessPushNonRingingCallEffect } from './useProcessPushNonRingingCallEffect';
@@ -12,7 +11,6 @@ export const usePushRegisterEffect = () => {
12
11
  useIosInitRemoteNotifications();
13
12
  useIosVoipPushEventsSetupEffect();
14
13
  useProcessPushNonRingingCallEffect();
15
- useProcessPushCallEffect();
16
14
  useInitAndroidTokenAndRest();
17
15
  };
18
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
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
+ {"version":3,"names":["useIosVoipPushEventsSetupEffect","useInitAndroidTokenAndRest","useIosInitRemoteNotifications","useProcessPushNonRingingCallEffect","usePushRegisterEffect"],"sourceRoot":"../../../../src","sources":["hooks/push/index.ts"],"mappings":"AAAA,SAASA,+BAA+B,QAAQ,mCAAmC;AACnF,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/BF,+BAA+B,CAAC,CAAC;EACjCG,kCAAkC,CAAC,CAAC;EACpCF,0BAA0B,CAAC,CAAC;AAC9B,CAAC","ignoreList":[]}
@@ -0,0 +1,114 @@
1
+ import { videoLoggerSystem } from '@stream-io/video-client';
2
+ import { useCall, useCallStateHooks } from '@stream-io/video-react-bindings';
3
+ import { useEffect, useMemo } from 'react';
4
+ import { getCallDisplayName } from '../../utils/internal/callingx/callingx';
5
+ import { getCallingxLibIfAvailable } from '../../utils/push/libs/callingx';
6
+ const logger = videoLoggerSystem.getLogger('callingx');
7
+
8
+ /**
9
+ * This hook is used to inform sync call state with CallKit/Telecom (i.e. start call, end call, mute/unmute call).
10
+ */
11
+ export const useCallingExpWithCallingStateEffect = () => {
12
+ const {
13
+ useMicrophoneState,
14
+ useParticipants,
15
+ useCallMembers
16
+ } = useCallStateHooks();
17
+ const activeCall = useCall();
18
+ const {
19
+ isMute,
20
+ microphone
21
+ } = useMicrophoneState();
22
+ const callMembers = useCallMembers();
23
+ const participants = useParticipants();
24
+ const activeCallCid = activeCall?.cid;
25
+ const currentUserId = activeCall?.currentUserId;
26
+ const callDisplayName = useMemo(() => getCallDisplayName(callMembers, participants, currentUserId), [callMembers, participants, currentUserId]);
27
+ useEffect(() => {
28
+ return () => {
29
+ const callingx = getCallingxLibIfAvailable();
30
+ if (!callingx?.isSetup || !activeCallCid) {
31
+ return;
32
+ }
33
+ const isCallTracked = callingx.isCallTracked(activeCallCid);
34
+ if (!isCallTracked) {
35
+ logger.debug(`useCallingExpWithCallingStateEffect:No active call cid to end in calling exp: ${activeCallCid} isCallTracked: ${isCallTracked}`);
36
+ return;
37
+ }
38
+ //if incoming stream call was unmounted, we need to end the call in CallKit/Telecom
39
+ logger.debug(`useCallingExpWithCallingStateEffect: Ending call in callingx: ${activeCallCid}`);
40
+ callingx.endCallWithReason(activeCallCid, 'local').catch(error => {
41
+ logger.error(`useCallingExpWithCallingStateEffect: Error ending call in callingx: ${activeCallCid}`, error);
42
+ });
43
+ };
44
+ }, [activeCallCid]);
45
+ useEffect(() => {
46
+ const callingx = getCallingxLibIfAvailable();
47
+ if (!callingx?.isSetup || !activeCallCid) {
48
+ return;
49
+ }
50
+ const isCallTracked = callingx.isCallTracked(activeCallCid);
51
+ if (!isCallTracked) {
52
+ logger.debug(`useCallingExpWithCallingStateEffect:No active call cid to update callingx: ${activeCallCid} isCallTracked: ${isCallTracked}`);
53
+ return;
54
+ }
55
+ callingx.updateDisplay(activeCallCid, activeCallCid, callDisplayName);
56
+ }, [activeCallCid, callDisplayName]);
57
+
58
+ // Sync microphone mute state from app → CallKit
59
+ useEffect(() => {
60
+ const callingx = getCallingxLibIfAvailable();
61
+ if (!callingx?.isSetup || !activeCallCid) {
62
+ return;
63
+ }
64
+ const isCallTracked = callingx.isCallTracked(activeCallCid);
65
+ if (!isCallTracked) {
66
+ logger.debug(`useCallingExpWithCallingStateEffect: No active call cid to set muted in calling exp: ${activeCallCid} isCallTracked: ${isCallTracked}`);
67
+ return;
68
+ }
69
+ callingx.setMutedCall(activeCallCid, isMute);
70
+ }, [activeCallCid, isMute]);
71
+
72
+ // Sync mute state from CallKit → app (only for system-initiated mute actions)
73
+ useEffect(() => {
74
+ const callingx = getCallingxLibIfAvailable();
75
+ if (!callingx?.isSetup || !activeCallCid) {
76
+ logger.debug(`useCallingExpWithCallingStateEffect: No active call cid to set muted in calling exp: ${activeCallCid} callingx isSetup: ${callingx?.isSetup}`);
77
+ return;
78
+ }
79
+
80
+ // Listen to mic toggle events from CallKit/Telecom and update stream call microphone state.
81
+ // Only system-initiated mute actions (e.g. user tapped mute on the native CallKit UI)
82
+ // are sent here — app-initiated actions are filtered out on the native side to prevent
83
+ // the feedback loop: app mutes mic → setMutedCall → CallKit delegate → event to JS → loop.
84
+ const subscription = callingx.addEventListener('didPerformSetMutedCallAction', async event => {
85
+ const {
86
+ callId,
87
+ muted
88
+ } = event;
89
+ const isCallTracked = callingx.isCallTracked(activeCallCid);
90
+ if (!isCallTracked || callId !== activeCallCid) {
91
+ logger.debug(`useCallingExpWithCallingStateEffect: No active call cid to set muted in calling exp: ${activeCallCid} isCallTracked: ${isCallTracked} callId: ${callId}`);
92
+ return;
93
+ }
94
+ const isCurrentlyMuted = microphone.state.status === 'disabled';
95
+ if (isCurrentlyMuted === muted) {
96
+ logger.debug(`useCallingExpWithCallingStateEffect: Mic toggle is already in the desired state: ${muted} for call: ${activeCallCid}`);
97
+ return;
98
+ }
99
+ try {
100
+ if (muted) {
101
+ await microphone.disable();
102
+ } else {
103
+ await microphone.enable();
104
+ }
105
+ } catch (error) {
106
+ logger.error(`useCallingExpWithCallingStateEffect: Error toggling mic in calling exp: ${activeCallCid}`, error);
107
+ }
108
+ });
109
+ return () => {
110
+ subscription.remove();
111
+ };
112
+ }, [activeCallCid, microphone]);
113
+ };
114
+ //# sourceMappingURL=useCallingExpWithCallingStateEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["videoLoggerSystem","useCall","useCallStateHooks","useEffect","useMemo","getCallDisplayName","getCallingxLibIfAvailable","logger","getLogger","useCallingExpWithCallingStateEffect","useMicrophoneState","useParticipants","useCallMembers","activeCall","isMute","microphone","callMembers","participants","activeCallCid","cid","currentUserId","callDisplayName","callingx","isSetup","isCallTracked","debug","endCallWithReason","catch","error","updateDisplay","setMutedCall","subscription","addEventListener","event","callId","muted","isCurrentlyMuted","state","status","disable","enable","remove"],"sourceRoot":"../../../../src","sources":["hooks/push/useCallingExpWithCallingStateEffect.ts"],"mappings":"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","ignoreList":[]}
@@ -1,11 +1,11 @@
1
1
  import { useEffect, useRef, useState } from 'react';
2
- import { getVoipPushNotificationLib } from '../../utils/push/libs';
3
2
  import { Platform } from 'react-native';
4
3
  import { StreamVideoRN } from '../../utils';
5
4
  import { onVoipNotificationReceived } from '../../utils/push/internal/ios';
6
5
  import { useConnectedUser, useStreamVideoClient } from '@stream-io/video-react-bindings';
7
6
  import { setPushLogoutCallback } from '../../utils/internal/pushLogoutCallback';
8
7
  import { videoLoggerSystem } from '@stream-io/video-client';
8
+ import { getCallingxLibIfAvailable } from '../../utils/push/libs';
9
9
  const logger = videoLoggerSystem.getLogger('useIosVoipPushEventsSetupEffect');
10
10
 
11
11
  /* VoipPushNotificationLib has support for only one listener type at a time
@@ -23,6 +23,7 @@ function setLogoutCallback(client, token, lastVoipTokenRef) {
23
23
  };
24
24
  try {
25
25
  await client.removeDevice(token);
26
+ logger.debug('PushLogoutCallback - Removed voip token', token);
26
27
  } catch (err) {
27
28
  logger.warn('PushLogoutCallback - Failed to remove voip token', err);
28
29
  }
@@ -77,20 +78,10 @@ export const useIosVoipPushEventsSetupEffect = () => {
77
78
  useEffect(() => {
78
79
  const pushConfig = StreamVideoRN.getConfig().push;
79
80
  const pushProviderName = pushConfig?.ios.pushProviderName;
80
- if (Platform.OS !== 'ios' || !client || !pushProviderName) {
81
+ const callingx = getCallingxLibIfAvailable();
82
+ if (Platform.OS !== 'ios' || !client || !pushProviderName || !callingx) {
81
83
  return;
82
84
  }
83
- if (!pushConfig.android.incomingCallChannel) {
84
- // TODO: remove this check and find a better way once we have telecom integration for android
85
- logger.debug('android incomingCallChannel is not defined, so skipping the useIosVoipPushEventsSetupEffect');
86
- return;
87
- }
88
- const voipPushNotification = getVoipPushNotificationLib();
89
-
90
- // even though we do this natively, we have to still register here again
91
- // natively this will make sure "register" event for JS is sent with the last push token
92
- // Necessary if client changed before we got the event here or user logged out and logged in again
93
- voipPushNotification.registerVoipToken();
94
85
  const onTokenReceived = token => {
95
86
  const userId = client.streamClient._user?.id ?? '';
96
87
  if (client.streamClient.anonymous || !token || !userId) {
@@ -118,27 +109,24 @@ export const useIosVoipPushEventsSetupEffect = () => {
118
109
  });
119
110
  };
120
111
  // fired when PushKit give us the latest token
121
- voipPushNotification.addEventListener('register', token => {
112
+ const voipRegisterListener = callingx.addEventListener('voipNotificationsRegistered', ({
113
+ token
114
+ }) => {
122
115
  onTokenReceived(token);
123
116
  });
124
117
 
125
- // this will fire when there are events occured before js bridge initialized
126
- voipPushNotification.addEventListener('didLoadWithEvents', events => {
127
- if (!events || !Array.isArray(events) || events.length < 1) {
128
- return;
129
- }
130
- for (const voipPushEvent of events) {
131
- const {
132
- name,
133
- data
134
- } = voipPushEvent;
135
- if (name === 'RNVoipPushRemoteNotificationsRegisteredEvent') {
136
- onTokenReceived(data);
137
- } else if (name === 'RNVoipPushRemoteNotificationReceivedEvent') {
138
- onVoipNotificationReceived(data, pushConfig);
139
- }
118
+ // this will return events that were fired before js bridge initialized
119
+ callingx.getInitialVoipEvents().forEach(({
120
+ eventName,
121
+ params
122
+ }) => {
123
+ if (eventName === 'voipNotificationsRegistered' && 'token' in params) {
124
+ onTokenReceived(params.token);
125
+ } else if (eventName === 'voipNotificationReceived') {
126
+ onVoipNotificationReceived(params, pushConfig);
140
127
  }
141
128
  });
129
+ callingx.registerVoipToken();
142
130
  lastListener.count += 1;
143
131
  const currentListenerCount = lastListener.count;
144
132
  return () => {
@@ -148,8 +136,7 @@ export const useIosVoipPushEventsSetupEffect = () => {
148
136
  return;
149
137
  }
150
138
  logger.debug(`Voip event listeners are removed for user: ${userId}`);
151
- voipPushNotification.removeEventListener('didLoadWithEvents');
152
- voipPushNotification.removeEventListener('register');
139
+ voipRegisterListener.remove();
153
140
  };
154
141
  }, [client]);
155
142
  };
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useRef","useState","getVoipPushNotificationLib","Platform","StreamVideoRN","onVoipNotificationReceived","useConnectedUser","useStreamVideoClient","setPushLogoutCallback","videoLoggerSystem","logger","getLogger","lastListener","count","setLogoutCallback","client","token","lastVoipTokenRef","current","userId","removeDevice","err","warn","useIosVoipPushEventsSetupEffect","connectedUserId","id","unsentToken","setUnsentToken","pushProviderName","getConfig","push","ios","tokenToSend","debug","addVoipDevice","then","undefined","catch","error","pushConfig","OS","android","incomingCallChannel","voipPushNotification","registerVoipToken","onTokenReceived","streamClient","_user","anonymous","reason","lastVoipToken","addEventListener","events","Array","isArray","length","voipPushEvent","name","data","currentListenerCount","removeEventListener"],"sourceRoot":"../../../../src","sources":["hooks/push/useIosVoipPushEventsSetupEffect.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useEffect","useRef","useState","Platform","StreamVideoRN","onVoipNotificationReceived","useConnectedUser","useStreamVideoClient","setPushLogoutCallback","videoLoggerSystem","getCallingxLibIfAvailable","logger","getLogger","lastListener","count","setLogoutCallback","client","token","lastVoipTokenRef","current","userId","removeDevice","debug","err","warn","useIosVoipPushEventsSetupEffect","connectedUserId","id","unsentToken","setUnsentToken","pushProviderName","getConfig","push","ios","tokenToSend","addVoipDevice","then","undefined","catch","error","pushConfig","callingx","OS","onTokenReceived","streamClient","_user","anonymous","reason","lastVoipToken","voipRegisterListener","addEventListener","getInitialVoipEvents","forEach","eventName","params","registerVoipToken","currentListenerCount","remove"],"sourceRoot":"../../../../src","sources":["hooks/push/useIosVoipPushEventsSetupEffect.ts"],"mappings":"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","ignoreList":[]}