@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
@@ -6,9 +6,11 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.StreamVideoRN = void 0;
7
7
  var _pushLogoutCallback = _interopRequireDefault(require("../internal/pushLogoutCallback"));
8
8
  var _newNotificationCallbacks = _interopRequireDefault(require("../internal/newNotificationCallbacks"));
9
- var _setupIosCallKeepEvents = require("../push/setupIosCallKeepEvents");
10
9
  var _setupIosVoipPushEvents = require("../push/setupIosVoipPushEvents");
10
+ var _setupCallingExpEvents = require("../push/setupCallingExpEvents");
11
+ var _callingx = require("../push/libs/callingx");
11
12
  var _reactNative = require("react-native");
13
+ var _videoClient = require("@stream-io/video-client");
12
14
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
15
  // Utility type for deep partial
14
16
 
@@ -33,10 +35,7 @@ const DEFAULT_STREAM_VIDEO_CONFIG = {
33
35
  android: {
34
36
  channel: {
35
37
  id: 'stream_call_foreground_service',
36
- name: 'To keep calls alive',
37
- lights: false,
38
- vibration: false,
39
- importance: 3
38
+ name: 'Ongoing calls'
40
39
  },
41
40
  notificationTexts: {
42
41
  title: 'Call in progress',
@@ -58,15 +57,6 @@ class StreamVideoRN {
58
57
  static updateConfig(updateConfig) {
59
58
  this.config = deepMerge(this.config, updateConfig);
60
59
  }
61
- static updateAndroidIncomingCallChannel(updateChannel) {
62
- const prevChannel = this.config.push?.android?.incomingCallChannel;
63
- if (prevChannel) {
64
- this.config.push.android.incomingCallChannel = {
65
- ...prevChannel,
66
- ...updateChannel
67
- };
68
- }
69
- }
70
60
 
71
61
  /**
72
62
  * Set the push config for StreamVideoRN.
@@ -80,7 +70,26 @@ class StreamVideoRN {
80
70
  * import App from './App';
81
71
  * // Set push config
82
72
  * const pushConfig = {}; // construct your config
83
- * StreamVideoRN.setPushConfig(pushConfig);
73
+ * // Set CallKit/Android Telecom API integration options. All params are optional. If not provided, the default values will be used.
74
+ * const callingExpOptions = {
75
+ * ios: {
76
+ * callsHistory: true,
77
+ * displayCallTimeout: 60000,
78
+ * sound: 'ringtone',
79
+ * imageName: 'callkit_icon',
80
+ * },
81
+ * android: {
82
+ * incomingChannel: {
83
+ * id: 'stream_incoming_call_notifications',
84
+ * name: 'Call notifications',
85
+ * vibration: true,
86
+ * sound: 'default',
87
+ * },
88
+ * titleTransformer: (text: string) => text,
89
+ * subtitleTransformer: (text: string) => text,
90
+ * },
91
+ * };
92
+ * StreamVideoRN.setPushConfig(pushConfig, callingExpOptions);
84
93
  * AppRegistry.registerComponent('app', () => App);
85
94
  */
86
95
  static setPushConfig(pushConfig) {
@@ -88,13 +97,16 @@ class StreamVideoRN {
88
97
  // Ignoring this config as push config was already set
89
98
  return;
90
99
  }
91
- if (__DEV__ && (pushConfig.navigateAcceptCall || pushConfig.navigateToIncomingCall)) {
92
- throw new Error(`Support for navigateAcceptCall or navigateToIncomingCall in pushConfig has been removed.
93
- Please watch for incoming and outgoing calls in the root component of your app.
94
- Please see https://getstream.io/video/docs/react-native/advanced/ringing-calls/#watch-for-incoming-and-outgoing-calls for more information.`);
95
- }
96
100
  this.config.push = pushConfig;
97
- (0, _setupIosCallKeepEvents.setupIosCallKeepEvents)(pushConfig);
101
+ try {
102
+ const callingx = (0, _callingx.getCallingxLib)();
103
+ _videoClient.videoLoggerSystem.getLogger('StreamVideoRN.setPushConfig').info(JSON.stringify(this.config));
104
+ const options = (0, _callingx.extractCallingExpOptions)(this.config);
105
+ callingx.setup(options);
106
+ } catch {
107
+ throw new Error('react-native-callingx library is not installed. Please check the installation instructions: https://getstream.io/video/docs/react-native/incoming-calls/ringing-setup/react-native/.');
108
+ }
109
+ (0, _setupCallingExpEvents.setupCallingExpEvents)(pushConfig);
98
110
  (0, _setupIosVoipPushEvents.setupIosVoipPushEvents)(pushConfig);
99
111
  }
100
112
  static getConfig() {
@@ -1 +1 @@
1
- {"version":3,"names":["_pushLogoutCallback","_interopRequireDefault","require","_newNotificationCallbacks","_setupIosCallKeepEvents","_setupIosVoipPushEvents","_reactNative","e","__esModule","default","deepMerge","target","source","result","key","undefined","Array","isArray","DEFAULT_STREAM_VIDEO_CONFIG","foregroundService","android","channel","id","name","lights","vibration","importance","notificationTexts","title","body","taskToRun","Promise","StreamVideoRN","config","busyToneTimeout","updateConfig","updateAndroidIncomingCallChannel","updateChannel","prevChannel","push","incomingCallChannel","setPushConfig","pushConfig","__DEV__","navigateAcceptCall","navigateToIncomingCall","Error","setupIosCallKeepEvents","setupIosVoipPushEvents","getConfig","onPushLogout","pushLogoutCallbacks","current","all","map","callback","then","resolve","clearPushLogoutCallbacks","addOnNewCallNotificationListener","newNotificationCallbacks","filter","cb","playBusyTone","NativeModules","StreamVideoReactNative","stopBusyTone","androidHasAudioOutputHardware","Platform","OS","hasAudioOutputHardware","androidHasMicrophoneHardware","hasMicrophoneHardware","androidHasCameraHardware","hasCameraHardware","exports"],"sourceRoot":"../../../../src","sources":["utils/StreamVideoRN/index.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_pushLogoutCallback","_interopRequireDefault","require","_newNotificationCallbacks","_setupIosVoipPushEvents","_setupCallingExpEvents","_callingx","_reactNative","_videoClient","e","__esModule","default","deepMerge","target","source","result","key","undefined","Array","isArray","DEFAULT_STREAM_VIDEO_CONFIG","foregroundService","android","channel","id","name","notificationTexts","title","body","taskToRun","Promise","StreamVideoRN","config","busyToneTimeout","updateConfig","setPushConfig","pushConfig","push","callingx","getCallingxLib","videoLoggerSystem","getLogger","info","JSON","stringify","options","extractCallingExpOptions","setup","Error","setupCallingExpEvents","setupIosVoipPushEvents","getConfig","onPushLogout","pushLogoutCallbacks","current","all","map","callback","then","resolve","clearPushLogoutCallbacks","addOnNewCallNotificationListener","newNotificationCallbacks","filter","cb","playBusyTone","NativeModules","StreamVideoReactNative","stopBusyTone","androidHasAudioOutputHardware","Platform","OS","hasAudioOutputHardware","androidHasMicrophoneHardware","hasMicrophoneHardware","androidHasCameraHardware","hasCameraHardware","exports"],"sourceRoot":"../../../../src","sources":["utils/StreamVideoRN/index.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.resolvePendingAudioSession = resolvePendingAudioSession;
7
+ exports.waitForAudioSessionActivation = waitForAudioSessionActivation;
8
+ var _videoClient = require("@stream-io/video-client");
9
+ /**
10
+ * Module to manage pending promise for audio session activation.
11
+ * Used to wait for iOS CallKit's didActivateAudioSession event after starting a call.
12
+ */
13
+
14
+ const logger = _videoClient.videoLoggerSystem.getLogger('callingx');
15
+ let pendingResolve = null;
16
+ let pendingTimeout = null;
17
+ let resolveSetTime = null;
18
+ /**
19
+ * Flag to check if the audio session is already activated.
20
+ * This solves race condition for a cold start case, when the audio session is activated before the promise is created.
21
+ */
22
+ let isAudioSessionAlreadyActivated = false;
23
+ const AUDIO_SESSION_TIMEOUT_MS = 5000;
24
+
25
+ /**
26
+ * Creates a promise that resolves when the audio session is activated,
27
+ * or after a timeout to prevent hanging indefinitely.
28
+ * @returns Promise that resolves when audio session is activated or timeout occurs
29
+ */
30
+ function waitForAudioSessionActivation() {
31
+ if (isAudioSessionAlreadyActivated) {
32
+ isAudioSessionAlreadyActivated = false;
33
+ return Promise.resolve();
34
+ }
35
+ resolveSetTime = Date.now();
36
+ return new Promise(resolve => {
37
+ pendingResolve = resolve;
38
+ pendingTimeout = setTimeout(() => {
39
+ // Resolve on timeout to prevent hanging
40
+ logger.debug('audioSessionPromise timed out');
41
+ resolvePendingAudioSession();
42
+ }, AUDIO_SESSION_TIMEOUT_MS);
43
+ });
44
+ }
45
+
46
+ /**
47
+ * Resolves the pending audio session activation promise.
48
+ * Called when the didActivateAudioSession event fires or on timeout.
49
+ */
50
+ function resolvePendingAudioSession() {
51
+ if (pendingTimeout) {
52
+ clearTimeout(pendingTimeout);
53
+ pendingTimeout = null;
54
+ }
55
+ if (pendingResolve) {
56
+ pendingResolve();
57
+ if (resolveSetTime) {
58
+ const elapsedTime = Date.now() - resolveSetTime;
59
+ resolveSetTime = null;
60
+ logger.debug(`audioSessionPromise resolved in ${elapsedTime}ms`);
61
+ }
62
+ pendingResolve = null;
63
+ isAudioSessionAlreadyActivated = false;
64
+ } else {
65
+ isAudioSessionAlreadyActivated = true;
66
+ }
67
+ }
68
+ //# sourceMappingURL=audioSessionPromise.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_videoClient","require","logger","videoLoggerSystem","getLogger","pendingResolve","pendingTimeout","resolveSetTime","isAudioSessionAlreadyActivated","AUDIO_SESSION_TIMEOUT_MS","waitForAudioSessionActivation","Promise","resolve","Date","now","setTimeout","debug","resolvePendingAudioSession","clearTimeout","elapsedTime"],"sourceRoot":"../../../../../src","sources":["utils/internal/callingx/audioSessionPromise.ts"],"mappings":";;;;;;;AAKA,IAAAA,YAAA,GAAAC,OAAA;AALA;AACA;AACA;AACA;;AAIA,MAAMC,MAAM,GAAGC,8BAAiB,CAACC,SAAS,CAAC,UAAU,CAAC;AAEtD,IAAIC,cAAmC,GAAG,IAAI;AAC9C,IAAIC,cAAoD,GAAG,IAAI;AAC/D,IAAIC,cAA6B,GAAG,IAAI;AACxC;AACA;AACA;AACA;AACA,IAAIC,8BAA8B,GAAG,KAAK;AAE1C,MAAMC,wBAAwB,GAAG,IAAI;;AAErC;AACA;AACA;AACA;AACA;AACO,SAASC,6BAA6BA,CAAA,EAAkB;EAC7D,IAAIF,8BAA8B,EAAE;IAClCA,8BAA8B,GAAG,KAAK;IACtC,OAAOG,OAAO,CAACC,OAAO,CAAC,CAAC;EAC1B;EAEAL,cAAc,GAAGM,IAAI,CAACC,GAAG,CAAC,CAAC;EAC3B,OAAO,IAAIH,OAAO,CAAEC,OAAO,IAAK;IAC9BP,cAAc,GAAGO,OAAO;IACxBN,cAAc,GAAGS,UAAU,CAAC,MAAM;MAChC;MACAb,MAAM,CAACc,KAAK,CAAC,+BAA+B,CAAC;MAC7CC,0BAA0B,CAAC,CAAC;IAC9B,CAAC,EAAER,wBAAwB,CAAC;EAC9B,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACO,SAASQ,0BAA0BA,CAAA,EAAS;EACjD,IAAIX,cAAc,EAAE;IAClBY,YAAY,CAACZ,cAAc,CAAC;IAC5BA,cAAc,GAAG,IAAI;EACvB;EAEA,IAAID,cAAc,EAAE;IAClBA,cAAc,CAAC,CAAC;IAChB,IAAIE,cAAc,EAAE;MAClB,MAAMY,WAAW,GAAGN,IAAI,CAACC,GAAG,CAAC,CAAC,GAAGP,cAAc;MAC/CA,cAAc,GAAG,IAAI;MACrBL,MAAM,CAACc,KAAK,CAAC,mCAAmCG,WAAW,IAAI,CAAC;IAClE;IACAd,cAAc,GAAG,IAAI;IACrBG,8BAA8B,GAAG,KAAK;EACxC,CAAC,MAAM;IACLA,8BAA8B,GAAG,IAAI;EACvC;AACF","ignoreList":[]}
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.endCallingxCall = endCallingxCall;
7
+ exports.getCallDisplayName = getCallDisplayName;
8
+ exports.startCallingxCall = startCallingxCall;
9
+ var _reactNative = require("react-native");
10
+ var _callingx = require("../../push/libs/callingx");
11
+ var _audioSessionPromise = require("./audioSessionPromise");
12
+ var _videoClient = require("@stream-io/video-client");
13
+ /***
14
+ * Internal utils for callingx library usage from video-client.
15
+ * See @./registerSDKGlobals.ts for more usage details.
16
+ */
17
+
18
+ const CallingxModule = (0, _callingx.getCallingxLibIfAvailable)();
19
+
20
+ /**
21
+ * Gets the call display name. To be used for display in native call screen.
22
+ */
23
+ function getCallDisplayName(callMembers, participants, currentUserId) {
24
+ if (!callMembers || !participants || !currentUserId) {
25
+ return 'Call';
26
+ }
27
+ let names = [];
28
+ if (callMembers.length > 0) {
29
+ // for ringing calls, members array contains all call members from the very early state and participants array is empty in the beginning
30
+ names = callMembers.filter(member => member.user.id !== currentUserId).map(member => member.user.name).filter(name => name !== undefined);
31
+ } else if (participants.length > 0) {
32
+ // for non-ringing calls, members array is empty and we rely on participants array there
33
+ names = participants.filter(participant => participant.userId !== currentUserId).map(participant => participant.name).filter(Boolean);
34
+ }
35
+
36
+ // if no names are found, we use the name of the current user
37
+ if (names.length === 0) {
38
+ names = [participants.find(participant => participant.userId === currentUserId)?.name ?? 'Call'];
39
+ }
40
+ return names.sort().join(', ');
41
+ }
42
+
43
+ /**
44
+ * Starts the call in the callingx library.
45
+ * It is done by client on every join
46
+ * Does either of the following:
47
+ * 1. Sets the state for outgoing calls in the callingx library
48
+ * 2. Displays the incoming call in the callingx library
49
+ * 3. Optionally for non-ringing calls also when ongoing calls are enabled.
50
+ */
51
+ async function startCallingxCall(call, activeCalls) {
52
+ if (!CallingxModule || !CallingxModule.isSetup) {
53
+ return;
54
+ }
55
+ const logger = _videoClient.videoLoggerSystem.getLogger('callingx');
56
+ const isOutcomingCall = call.ringing && call.isCreatedByMe;
57
+ const isIncomingCall = call.ringing && !call.isCreatedByMe;
58
+ const callDisplayName = getCallDisplayName(call.state.members, call.state.participants, call.currentUserId);
59
+ if (!CallingxModule.isCallTracked(call.cid) && (isOutcomingCall || !call.ringing && CallingxModule.isOngoingCallsEnabled)) {
60
+ try {
61
+ await CallingxModule.startCall(call.cid,
62
+ // unique id for call
63
+ call.id,
64
+ // phone number for display in dialer (we use call id as phone number)
65
+ callDisplayName,
66
+ // display name for display in call screen
67
+ call.state.settings?.video?.enabled ?? false // is video call?
68
+ );
69
+
70
+ // Wait for audio session activation on iOS only
71
+ if (_reactNative.Platform.OS === 'ios') {
72
+ await (0, _audioSessionPromise.waitForAudioSessionActivation)();
73
+ }
74
+
75
+ // TODO: this must be done after join call is complete
76
+ CallingxModule.setCurrentCallActive(call.cid);
77
+ } catch (error) {
78
+ logger.error(`startCallingxCall: Error starting call in callingx: ${call.cid}`, error);
79
+ }
80
+ } else if (isIncomingCall) {
81
+ try {
82
+ // Leave any existing active ringing calls before joining a new ringing call
83
+ const activeCallsToLeave = activeCalls.filter(c => c.cid !== call.cid && c.ringing && c.state.callingState !== _videoClient.CallingState.LEFT);
84
+ for (const activeCall of activeCallsToLeave) {
85
+ logger.debug(`leaving active call ${activeCall.cid} before joining ${call.cid}`);
86
+ await activeCall.leave({
87
+ reason: 'cancel'
88
+ }).catch(e => {
89
+ logger.error(`failed to leave active call ${activeCall.cid}`, e);
90
+ });
91
+ }
92
+
93
+ // Awaits native CallKit/Telecom registration before answering.
94
+ // Safe to call even if the call is already registered (e.g. from VoIP push) --
95
+ // iOS early-returns with no error, Android sends the registered broadcast.
96
+ await CallingxModule.displayIncomingCall(call.cid,
97
+ // unique id for call
98
+ call.id,
99
+ // phone number for display in dialer (we use call id as phone number)
100
+ callDisplayName,
101
+ // display name for display in call screen
102
+ call.state.settings?.video?.enabled ?? false // is video call?
103
+ );
104
+ await CallingxModule.answerIncomingCall(call.cid);
105
+ if (_reactNative.Platform.OS === 'ios') {
106
+ await (0, _audioSessionPromise.waitForAudioSessionActivation)();
107
+ }
108
+ } catch (error) {
109
+ logger.error(`Error displaying incoming call in callingx: ${call.cid}`, error);
110
+ }
111
+ }
112
+ }
113
+ async function endCallingxCall(call, reason) {
114
+ if (!CallingxModule || !CallingxModule.isSetup || !CallingxModule.isCallTracked(call.cid)) {
115
+ return;
116
+ }
117
+ try {
118
+ await CallingxModule.endCallWithReason(call.cid, reason ?? 'local');
119
+ } catch (error) {
120
+ _videoClient.videoLoggerSystem.getLogger('callingx').error(`endCallingxCall: Error ending call in callingx: ${call.cid}`, error);
121
+ }
122
+ }
123
+ //# sourceMappingURL=callingx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","_callingx","_audioSessionPromise","_videoClient","CallingxModule","getCallingxLibIfAvailable","getCallDisplayName","callMembers","participants","currentUserId","names","length","filter","member","user","id","map","name","undefined","participant","userId","Boolean","find","sort","join","startCallingxCall","call","activeCalls","isSetup","logger","videoLoggerSystem","getLogger","isOutcomingCall","ringing","isCreatedByMe","isIncomingCall","callDisplayName","state","members","isCallTracked","cid","isOngoingCallsEnabled","startCall","settings","video","enabled","Platform","OS","waitForAudioSessionActivation","setCurrentCallActive","error","activeCallsToLeave","c","callingState","CallingState","LEFT","activeCall","debug","leave","reason","catch","e","displayIncomingCall","answerIncomingCall","endCallingxCall","endCallWithReason"],"sourceRoot":"../../../../../src","sources":["utils/internal/callingx/callingx.ts"],"mappings":";;;;;;;;AAIA,IAAAA,YAAA,GAAAC,OAAA;AAEA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,oBAAA,GAAAF,OAAA;AAMA,IAAAG,YAAA,GAAAH,OAAA;AAbA;AACA;AACA;AACA;;AAWA,MAAMI,cAAc,GAAG,IAAAC,mCAAyB,EAAC,CAAC;;AAElD;AACA;AACA;AACO,SAASC,kBAAkBA,CAChCC,WAAyC,EACzCC,YAAkD,EAClDC,aAAiC,EACjC;EACA,IAAI,CAACF,WAAW,IAAI,CAACC,YAAY,IAAI,CAACC,aAAa,EAAE;IACnD,OAAO,MAAM;EACf;EAEA,IAAIC,KAAe,GAAG,EAAE;EAExB,IAAIH,WAAW,CAACI,MAAM,GAAG,CAAC,EAAE;IAC1B;IACAD,KAAK,GAAGH,WAAW,CAChBK,MAAM,CAAEC,MAAM,IAAKA,MAAM,CAACC,IAAI,CAACC,EAAE,KAAKN,aAAa,CAAC,CACpDO,GAAG,CAAEH,MAAM,IAAKA,MAAM,CAACC,IAAI,CAACG,IAAI,CAAC,CACjCL,MAAM,CAAEK,IAAI,IAAqBA,IAAI,KAAKC,SAAS,CAAC;EACzD,CAAC,MAAM,IAAIV,YAAY,CAACG,MAAM,GAAG,CAAC,EAAE;IAClC;IACAD,KAAK,GAAGF,YAAY,CACjBI,MAAM,CAAEO,WAAW,IAAKA,WAAW,CAACC,MAAM,KAAKX,aAAa,CAAC,CAC7DO,GAAG,CAAEG,WAAW,IAAKA,WAAW,CAACF,IAAI,CAAC,CACtCL,MAAM,CAACS,OAAO,CAAC;EACpB;;EAEA;EACA,IAAIX,KAAK,CAACC,MAAM,KAAK,CAAC,EAAE;IACtBD,KAAK,GAAG,CACNF,YAAY,CAACc,IAAI,CAAEH,WAAW,IAAKA,WAAW,CAACC,MAAM,KAAKX,aAAa,CAAC,EACpEQ,IAAI,IAAI,MAAM,CACnB;EACH;EAEA,OAAOP,KAAK,CAACa,IAAI,CAAC,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAeC,iBAAiBA,CAACC,IAAU,EAAEC,WAAmB,EAAE;EACvE,IAAI,CAACvB,cAAc,IAAI,CAACA,cAAc,CAACwB,OAAO,EAAE;IAC9C;EACF;EAEA,MAAMC,MAAM,GAAGC,8BAAiB,CAACC,SAAS,CAAC,UAAU,CAAC;EACtD,MAAMC,eAAe,GAAGN,IAAI,CAACO,OAAO,IAAIP,IAAI,CAACQ,aAAa;EAC1D,MAAMC,cAAc,GAAGT,IAAI,CAACO,OAAO,IAAI,CAACP,IAAI,CAACQ,aAAa;EAE1D,MAAME,eAAe,GAAG9B,kBAAkB,CACxCoB,IAAI,CAACW,KAAK,CAACC,OAAO,EAClBZ,IAAI,CAACW,KAAK,CAAC7B,YAAY,EACvBkB,IAAI,CAACjB,aACP,CAAC;EAED,IACE,CAACL,cAAc,CAACmC,aAAa,CAACb,IAAI,CAACc,GAAG,CAAC,KACtCR,eAAe,IAAK,CAACN,IAAI,CAACO,OAAO,IAAI7B,cAAc,CAACqC,qBAAsB,CAAC,EAC5E;IACA,IAAI;MACF,MAAMrC,cAAc,CAACsC,SAAS,CAC5BhB,IAAI,CAACc,GAAG;MAAE;MACVd,IAAI,CAACX,EAAE;MAAE;MACTqB,eAAe;MAAE;MACjBV,IAAI,CAACW,KAAK,CAACM,QAAQ,EAAEC,KAAK,EAAEC,OAAO,IAAI,KAAK,CAAE;MAChD,CAAC;;MAED;MACA,IAAIC,qBAAQ,CAACC,EAAE,KAAK,KAAK,EAAE;QACzB,MAAM,IAAAC,kDAA6B,EAAC,CAAC;MACvC;;MAEA;MACA5C,cAAc,CAAC6C,oBAAoB,CAACvB,IAAI,CAACc,GAAG,CAAC;IAC/C,CAAC,CAAC,OAAOU,KAAK,EAAE;MACdrB,MAAM,CAACqB,KAAK,CACV,uDAAuDxB,IAAI,CAACc,GAAG,EAAE,EACjEU,KACF,CAAC;IACH;EACF,CAAC,MAAM,IAAIf,cAAc,EAAE;IACzB,IAAI;MACF;MACA,MAAMgB,kBAAkB,GAAGxB,WAAW,CAACf,MAAM,CAC1CwC,CAAC,IACAA,CAAC,CAACZ,GAAG,KAAKd,IAAI,CAACc,GAAG,IAClBY,CAAC,CAACnB,OAAO,IACTmB,CAAC,CAACf,KAAK,CAACgB,YAAY,KAAKC,yBAAY,CAACC,IAC1C,CAAC;MACD,KAAK,MAAMC,UAAU,IAAIL,kBAAkB,EAAE;QAC3CtB,MAAM,CAAC4B,KAAK,CACV,uBAAuBD,UAAU,CAAChB,GAAG,mBAAmBd,IAAI,CAACc,GAAG,EAClE,CAAC;QACD,MAAMgB,UAAU,CAACE,KAAK,CAAC;UAAEC,MAAM,EAAE;QAAS,CAAC,CAAC,CAACC,KAAK,CAAEC,CAAC,IAAK;UACxDhC,MAAM,CAACqB,KAAK,CAAC,+BAA+BM,UAAU,CAAChB,GAAG,EAAE,EAAEqB,CAAC,CAAC;QAClE,CAAC,CAAC;MACJ;;MAEA;MACA;MACA;MACA,MAAMzD,cAAc,CAAC0D,mBAAmB,CACtCpC,IAAI,CAACc,GAAG;MAAE;MACVd,IAAI,CAACX,EAAE;MAAE;MACTqB,eAAe;MAAE;MACjBV,IAAI,CAACW,KAAK,CAACM,QAAQ,EAAEC,KAAK,EAAEC,OAAO,IAAI,KAAK,CAAE;MAChD,CAAC;MAED,MAAMzC,cAAc,CAAC2D,kBAAkB,CAACrC,IAAI,CAACc,GAAG,CAAC;MAEjD,IAAIM,qBAAQ,CAACC,EAAE,KAAK,KAAK,EAAE;QACzB,MAAM,IAAAC,kDAA6B,EAAC,CAAC;MACvC;IACF,CAAC,CAAC,OAAOE,KAAK,EAAE;MACdrB,MAAM,CAACqB,KAAK,CACV,+CAA+CxB,IAAI,CAACc,GAAG,EAAE,EACzDU,KACF,CAAC;IACH;EACF;AACF;AAEO,eAAec,eAAeA,CAACtC,IAAU,EAAEiC,MAAsB,EAAE;EACxE,IACE,CAACvD,cAAc,IACf,CAACA,cAAc,CAACwB,OAAO,IACvB,CAACxB,cAAc,CAACmC,aAAa,CAACb,IAAI,CAACc,GAAG,CAAC,EACvC;IACA;EACF;EAEA,IAAI;IACF,MAAMpC,cAAc,CAAC6D,iBAAiB,CAACvC,IAAI,CAACc,GAAG,EAAEmB,MAAM,IAAI,OAAO,CAAC;EACrE,CAAC,CAAC,OAAOT,KAAK,EAAE;IACdpB,8BAAiB,CACdC,SAAS,CAAC,UAAU,CAAC,CACrBmB,KAAK,CACJ,mDAAmDxB,IAAI,CAACc,GAAG,EAAE,EAC7DU,KACF,CAAC;EACL;AACF","ignoreList":[]}
@@ -5,20 +5,69 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.registerSDKGlobals = registerSDKGlobals;
7
7
  var _reactNative = require("react-native");
8
+ var _callingx = require("../push/libs/callingx");
9
+ var _callingx2 = require("./callingx/callingx");
8
10
  const StreamInCallManagerNativeModule = _reactNative.NativeModules.StreamInCallManager;
9
11
  const StreamVideoReactNativeModule = _reactNative.NativeModules.StreamVideoReactNative;
12
+ const CallingxModule = (0, _callingx.getCallingxLibIfAvailable)();
13
+
14
+ /**
15
+ * Checks if StreamInCallManager should be bypassed because CallKit is handling
16
+ * the audio session via CallingX.
17
+ *
18
+ * On iOS, when CallingX is set up and has a registered call, the audio session
19
+ * is managed by CallKit through CallingxImpl.swift.
20
+ * In this case, StreamInCallManager should not run to avoid conflicting audio
21
+ * session configurations.
22
+ */
23
+ const shouldBypassForCallKit = ({
24
+ isRingingTypeCall
25
+ }) => {
26
+ if (_reactNative.Platform.OS !== 'ios') {
27
+ return false;
28
+ }
29
+ if (!CallingxModule) {
30
+ return false;
31
+ }
32
+ const bypass = CallingxModule.isSetup && (isRingingTypeCall || CallingxModule.isOngoingCallsEnabled);
33
+ return bypass;
34
+ };
10
35
  const streamRNVideoSDKGlobals = {
36
+ callingX: {
37
+ startCall: _callingx2.startCallingxCall,
38
+ endCall: _callingx2.endCallingxCall
39
+ },
11
40
  callManager: {
12
41
  setup: ({
13
- defaultDevice
42
+ defaultDevice,
43
+ isRingingTypeCall
14
44
  }) => {
45
+ if (shouldBypassForCallKit({
46
+ isRingingTypeCall
47
+ })) {
48
+ return;
49
+ }
15
50
  StreamInCallManagerNativeModule.setDefaultAudioDeviceEndpointType(defaultDevice);
16
51
  StreamInCallManagerNativeModule.setup();
17
52
  },
18
- start: () => {
53
+ start: ({
54
+ isRingingTypeCall
55
+ }) => {
56
+ if (shouldBypassForCallKit({
57
+ isRingingTypeCall
58
+ })) {
59
+ return;
60
+ }
19
61
  StreamInCallManagerNativeModule.start();
20
62
  },
21
- stop: () => {
63
+ stop: ({
64
+ isRingingTypeCall
65
+ }) => {
66
+ if (shouldBypassForCallKit({
67
+ isRingingTypeCall
68
+ })) {
69
+ return;
70
+ }
22
71
  StreamInCallManagerNativeModule.stop();
23
72
  }
24
73
  },
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","StreamInCallManagerNativeModule","NativeModules","StreamInCallManager","StreamVideoReactNativeModule","StreamVideoReactNative","streamRNVideoSDKGlobals","callManager","setup","defaultDevice","setDefaultAudioDeviceEndpointType","start","stop","permissions","check","permission","Platform","OS","nativeAndroidPermission","PermissionsAndroid","PERMISSIONS","CAMERA","RECORD_AUDIO","Boolean","checkPermission","registerSDKGlobals","global","streamRNVideoSDK"],"sourceRoot":"../../../../src","sources":["utils/internal/registerSDKGlobals.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAEA,MAAMC,+BAA+B,GAAGC,0BAAa,CAACC,mBAAmB;AACzE,MAAMC,4BAA4B,GAAGF,0BAAa,CAACG,sBAElD;AAED,MAAMC,uBAAgD,GAAG;EACvDC,WAAW,EAAE;IACXC,KAAK,EAAEA,CAAC;MAAEC;IAAc,CAAC,KAAK;MAC5BR,+BAA+B,CAACS,iCAAiC,CAC/DD,aACF,CAAC;MACDR,+BAA+B,CAACO,KAAK,CAAC,CAAC;IACzC,CAAC;IACDG,KAAK,EAAEA,CAAA,KAAM;MACXV,+BAA+B,CAACU,KAAK,CAAC,CAAC;IACzC,CAAC;IACDC,IAAI,EAAEA,CAAA,KAAM;MACVX,+BAA+B,CAACW,IAAI,CAAC,CAAC;IACxC;EACF,CAAC;EACDC,WAAW,EAAE;IACXC,KAAK,EAAE,MAAOC,UAAU,IAAK;MAC3B,IAAIC,qBAAQ,CAACC,EAAE,KAAK,SAAS,EAAE;QAC7B,MAAMC,uBAAuB,GAC3BH,UAAU,KAAK,QAAQ,GACnBI,+BAAkB,CAACC,WAAW,CAACC,MAAM,GACrCF,+BAAkB,CAACC,WAAW,CAACE,YAAY;QACjD,OAAOH,+BAAkB,CAACL,KAAK,CAACI,uBAAuB,CAAC;MAC1D;;MAEA;MACA,OAAOK,OAAO,CACZ,MAAMnB,4BAA4B,CAACoB,eAAe,GAAGT,UAAU,CACjE,CAAC;IACH;EACF;AACF,CAAC;;AAED;AACA;AACA;AACO,SAASU,kBAAkBA,CAAA,EAAG;EACnC,IAAI,CAACC,MAAM,CAACC,gBAAgB,EAAE;IAC5BD,MAAM,CAACC,gBAAgB,GAAGrB,uBAAuB;EACnD;AACF","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_callingx","_callingx2","StreamInCallManagerNativeModule","NativeModules","StreamInCallManager","StreamVideoReactNativeModule","StreamVideoReactNative","CallingxModule","getCallingxLibIfAvailable","shouldBypassForCallKit","isRingingTypeCall","Platform","OS","bypass","isSetup","isOngoingCallsEnabled","streamRNVideoSDKGlobals","callingX","startCall","startCallingxCall","endCall","endCallingxCall","callManager","setup","defaultDevice","setDefaultAudioDeviceEndpointType","start","stop","permissions","check","permission","nativeAndroidPermission","PermissionsAndroid","PERMISSIONS","CAMERA","RECORD_AUDIO","Boolean","checkPermission","registerSDKGlobals","global","streamRNVideoSDK"],"sourceRoot":"../../../../src","sources":["utils/internal/registerSDKGlobals.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AAEA,MAAMG,+BAA+B,GAAGC,0BAAa,CAACC,mBAAmB;AACzE,MAAMC,4BAA4B,GAAGF,0BAAa,CAACG,sBAElD;AAED,MAAMC,cAAc,GAAG,IAAAC,mCAAyB,EAAC,CAAC;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,sBAAsB,GAAGA,CAAC;EAC9BC;AAGF,CAAC,KAAc;EACb,IAAIC,qBAAQ,CAACC,EAAE,KAAK,KAAK,EAAE;IACzB,OAAO,KAAK;EACd;EACA,IAAI,CAACL,cAAc,EAAE;IACnB,OAAO,KAAK;EACd;EACA,MAAMM,MAAM,GACVN,cAAc,CAACO,OAAO,KACrBJ,iBAAiB,IAAIH,cAAc,CAACQ,qBAAqB,CAAC;EAC7D,OAAOF,MAAM;AACf,CAAC;AAED,MAAMG,uBAAgD,GAAG;EACvDC,QAAQ,EAAE;IACRC,SAAS,EAAEC,4BAAiB;IAC5BC,OAAO,EAAEC;EACX,CAAC;EACDC,WAAW,EAAE;IACXC,KAAK,EAAEA,CAAC;MAAEC,aAAa;MAAEd;IAAkB,CAAC,KAAK;MAC/C,IAAID,sBAAsB,CAAC;QAAEC;MAAkB,CAAC,CAAC,EAAE;QACjD;MACF;MACAR,+BAA+B,CAACuB,iCAAiC,CAC/DD,aACF,CAAC;MACDtB,+BAA+B,CAACqB,KAAK,CAAC,CAAC;IACzC,CAAC;IACDG,KAAK,EAAEA,CAAC;MAAEhB;IAAkB,CAAC,KAAK;MAChC,IAAID,sBAAsB,CAAC;QAAEC;MAAkB,CAAC,CAAC,EAAE;QACjD;MACF;MACAR,+BAA+B,CAACwB,KAAK,CAAC,CAAC;IACzC,CAAC;IACDC,IAAI,EAAEA,CAAC;MAAEjB;IAAkB,CAAC,KAAK;MAC/B,IAAID,sBAAsB,CAAC;QAAEC;MAAkB,CAAC,CAAC,EAAE;QACjD;MACF;MACAR,+BAA+B,CAACyB,IAAI,CAAC,CAAC;IACxC;EACF,CAAC;EACDC,WAAW,EAAE;IACXC,KAAK,EAAE,MAAOC,UAAU,IAAK;MAC3B,IAAInB,qBAAQ,CAACC,EAAE,KAAK,SAAS,EAAE;QAC7B,MAAMmB,uBAAuB,GAC3BD,UAAU,KAAK,QAAQ,GACnBE,+BAAkB,CAACC,WAAW,CAACC,MAAM,GACrCF,+BAAkB,CAACC,WAAW,CAACE,YAAY;QACjD,OAAOH,+BAAkB,CAACH,KAAK,CAACE,uBAAuB,CAAC;MAC1D;;MAEA;MACA,OAAOK,OAAO,CACZ,MAAM/B,4BAA4B,CAACgC,eAAe,GAAGP,UAAU,CACjE,CAAC;IACH;EACF;AACF,CAAC;;AAED;AACA;AACA;AACO,SAASQ,kBAAkBA,CAAA,EAAG;EACnC,IAAI,CAACC,MAAM,CAACC,gBAAgB,EAAE;IAC5BD,MAAM,CAACC,gBAAgB,GAAGxB,uBAAuB;EACnD;AACF","ignoreList":[]}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.keepCallAliveCallRef = exports.KEEP_CALL_ALIVE_HEADLESS_TASK_NAME = void 0;
7
+ var _reactNative = require("react-native");
8
+ var _videoClient = require("@stream-io/video-client");
9
+ var _StreamVideoRN = require("./StreamVideoRN");
10
+ const KEEP_CALL_ALIVE_HEADLESS_TASK_NAME = exports.KEEP_CALL_ALIVE_HEADLESS_TASK_NAME = 'StreamVideoKeepCallAlive';
11
+
12
+ /**
13
+ * The keep-alive headless task needs access to the active `Call` instance.
14
+ * The keep-alive hook will set this reference before starting the native service.
15
+ */
16
+ const keepCallAliveCallRef = exports.keepCallAliveCallRef = {
17
+ current: undefined
18
+ };
19
+ function registerKeepCallAliveHeadlessTaskOnce() {
20
+ if (_reactNative.Platform.OS !== 'android') return;
21
+ _reactNative.AppRegistry.registerHeadlessTask(KEEP_CALL_ALIVE_HEADLESS_TASK_NAME, () => async data => {
22
+ const logger = _videoClient.videoLoggerSystem.getLogger('KEEP_CALL_ALIVE_HEADLESS_TASK');
23
+ const callCid = data?.callCid;
24
+ const call = keepCallAliveCallRef.current;
25
+ if (!call) {
26
+ logger.warn('No active call instance available for keep-alive task; skipping.', {
27
+ callCid
28
+ });
29
+ return;
30
+ }
31
+ if (callCid && call.cid && call.cid !== callCid) {
32
+ logger.warn('Keep-alive task callCid does not match active call; skipping.', {
33
+ callCid,
34
+ activeCallCid: call.cid
35
+ });
36
+ return;
37
+ }
38
+ const config = _StreamVideoRN.StreamVideoRN.getConfig();
39
+ const taskToRun = config.foregroundService.android.taskToRun;
40
+ try {
41
+ await taskToRun(call);
42
+ } catch (e) {
43
+ logger.error('Keep-alive headless task failed', e);
44
+ }
45
+ });
46
+ }
47
+ registerKeepCallAliveHeadlessTaskOnce();
48
+ //# sourceMappingURL=keepCallAliveHeadlessTask.js.map
@@ -0,0 +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,CAC9BT,kCAAkC,EAClC,MAAM,MAAOU,IAAsC,IAAK;IACtD,MAAMC,MAAM,GAAGC,8BAAiB,CAACC,SAAS,CACxC,+BACF,CAAC;IACD,MAAMC,OAAO,GAAGJ,IAAI,EAAEI,OAAO;IAE7B,MAAMC,IAAI,GAAGb,oBAAoB,CAACC,OAAO;IACzC,IAAI,CAACY,IAAI,EAAE;MACTJ,MAAM,CAACK,IAAI,CACT,kEAAkE,EAClE;QAAEF;MAAQ,CACZ,CAAC;MACD;IACF;IACA,IAAIA,OAAO,IAAIC,IAAI,CAACE,GAAG,IAAIF,IAAI,CAACE,GAAG,KAAKH,OAAO,EAAE;MAC/CH,MAAM,CAACK,IAAI,CACT,+DAA+D,EAC/D;QAAEF,OAAO;QAAEI,aAAa,EAAEH,IAAI,CAACE;MAAI,CACrC,CAAC;MACD;IACF;IAEA,MAAME,MAAM,GAAGC,4BAAa,CAACC,SAAS,CAAC,CAAC;IACxC,MAAMC,SAAS,GAAGH,MAAM,CAACI,iBAAiB,CAACC,OAAO,CAACF,SAAS;IAC5D,IAAI;MACF,MAAMA,SAAS,CAACP,IAAI,CAAC;IACvB,CAAC,CAAC,OAAOU,CAAC,EAAE;MACVd,MAAM,CAACe,KAAK,CAAC,iCAAiC,EAAED,CAAC,CAAC;IACpD;EACF,CACF,CAAC;AACH;AAEApB,qCAAqC,CAAC,CAAC","ignoreList":[]}