@stream-io/video-react-native-sdk 1.28.1 → 1.29.0-beta.0

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 (172) 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/keepalive/KeepAliveNotification.kt +83 -0
  5. package/android/src/main/java/com/streamvideo/reactnative/keepalive/StreamCallKeepAliveHeadlessService.kt +134 -0
  6. package/dist/commonjs/hooks/push/useCallingExpWithCallingStateEffect.js +235 -0
  7. package/dist/commonjs/hooks/push/useCallingExpWithCallingStateEffect.js.map +1 -0
  8. package/dist/commonjs/hooks/push/useIosVoipPushEventsSetupEffect.js +18 -31
  9. package/dist/commonjs/hooks/push/useIosVoipPushEventsSetupEffect.js.map +1 -1
  10. package/dist/commonjs/hooks/useAndroidKeepCallAliveEffect.js +60 -97
  11. package/dist/commonjs/hooks/useAndroidKeepCallAliveEffect.js.map +1 -1
  12. package/dist/commonjs/index.js +1 -0
  13. package/dist/commonjs/index.js.map +1 -1
  14. package/dist/commonjs/modules/call-manager/CallManager.js +20 -0
  15. package/dist/commonjs/modules/call-manager/CallManager.js.map +1 -1
  16. package/dist/commonjs/providers/StreamCall/index.js +6 -6
  17. package/dist/commonjs/providers/StreamCall/index.js.map +1 -1
  18. package/dist/commonjs/utils/StreamVideoRN/index.js +33 -21
  19. package/dist/commonjs/utils/StreamVideoRN/index.js.map +1 -1
  20. package/dist/commonjs/utils/internal/registerSDKGlobals.js +47 -3
  21. package/dist/commonjs/utils/internal/registerSDKGlobals.js.map +1 -1
  22. package/dist/commonjs/utils/keepCallAliveHeadlessTask.js +48 -0
  23. package/dist/commonjs/utils/keepCallAliveHeadlessTask.js.map +1 -0
  24. package/dist/commonjs/utils/push/android.js +145 -200
  25. package/dist/commonjs/utils/push/android.js.map +1 -1
  26. package/dist/commonjs/utils/push/internal/ios.js +16 -34
  27. package/dist/commonjs/utils/push/internal/ios.js.map +1 -1
  28. package/dist/commonjs/utils/push/internal/rxSubjects.js +1 -20
  29. package/dist/commonjs/utils/push/internal/rxSubjects.js.map +1 -1
  30. package/dist/commonjs/utils/push/internal/utils.js +17 -1
  31. package/dist/commonjs/utils/push/internal/utils.js.map +1 -1
  32. package/dist/commonjs/utils/push/ios.js.map +1 -1
  33. package/dist/commonjs/utils/push/libs/callingx.js +75 -0
  34. package/dist/commonjs/utils/push/libs/callingx.js.map +1 -0
  35. package/dist/commonjs/utils/push/libs/index.js +8 -19
  36. package/dist/commonjs/utils/push/libs/index.js.map +1 -1
  37. package/dist/commonjs/utils/push/libs/notifee/index.js +0 -19
  38. package/dist/commonjs/utils/push/libs/notifee/index.js.map +1 -1
  39. package/dist/commonjs/utils/push/setupCallingExpEvents.js +75 -0
  40. package/dist/commonjs/utils/push/setupCallingExpEvents.js.map +1 -0
  41. package/dist/commonjs/utils/push/setupIosVoipPushEvents.js +7 -6
  42. package/dist/commonjs/utils/push/setupIosVoipPushEvents.js.map +1 -1
  43. package/dist/module/hooks/push/useCallingExpWithCallingStateEffect.js +228 -0
  44. package/dist/module/hooks/push/useCallingExpWithCallingStateEffect.js.map +1 -0
  45. package/dist/module/hooks/push/useIosVoipPushEventsSetupEffect.js +18 -31
  46. package/dist/module/hooks/push/useIosVoipPushEventsSetupEffect.js.map +1 -1
  47. package/dist/module/hooks/useAndroidKeepCallAliveEffect.js +62 -99
  48. package/dist/module/hooks/useAndroidKeepCallAliveEffect.js.map +1 -1
  49. package/dist/module/index.js +1 -0
  50. package/dist/module/index.js.map +1 -1
  51. package/dist/module/modules/call-manager/CallManager.js +20 -0
  52. package/dist/module/modules/call-manager/CallManager.js.map +1 -1
  53. package/dist/module/providers/StreamCall/index.js +6 -6
  54. package/dist/module/providers/StreamCall/index.js.map +1 -1
  55. package/dist/module/utils/StreamVideoRN/index.js +33 -21
  56. package/dist/module/utils/StreamVideoRN/index.js.map +1 -1
  57. package/dist/module/utils/internal/registerSDKGlobals.js +48 -4
  58. package/dist/module/utils/internal/registerSDKGlobals.js.map +1 -1
  59. package/dist/module/utils/keepCallAliveHeadlessTask.js +42 -0
  60. package/dist/module/utils/keepCallAliveHeadlessTask.js.map +1 -0
  61. package/dist/module/utils/push/android.js +147 -202
  62. package/dist/module/utils/push/android.js.map +1 -1
  63. package/dist/module/utils/push/internal/ios.js +16 -34
  64. package/dist/module/utils/push/internal/ios.js.map +1 -1
  65. package/dist/module/utils/push/internal/rxSubjects.js +0 -19
  66. package/dist/module/utils/push/internal/rxSubjects.js.map +1 -1
  67. package/dist/module/utils/push/internal/utils.js +14 -0
  68. package/dist/module/utils/push/internal/utils.js.map +1 -1
  69. package/dist/module/utils/push/ios.js.map +1 -1
  70. package/dist/module/utils/push/libs/callingx.js +67 -0
  71. package/dist/module/utils/push/libs/callingx.js.map +1 -0
  72. package/dist/module/utils/push/libs/index.js +1 -2
  73. package/dist/module/utils/push/libs/index.js.map +1 -1
  74. package/dist/module/utils/push/libs/notifee/index.js +0 -18
  75. package/dist/module/utils/push/libs/notifee/index.js.map +1 -1
  76. package/dist/module/utils/push/setupCallingExpEvents.js +69 -0
  77. package/dist/module/utils/push/setupCallingExpEvents.js.map +1 -0
  78. package/dist/module/utils/push/setupIosVoipPushEvents.js +7 -6
  79. package/dist/module/utils/push/setupIosVoipPushEvents.js.map +1 -1
  80. package/dist/typescript/hooks/push/useCallingExpWithCallingStateEffect.d.ts +5 -0
  81. package/dist/typescript/hooks/push/useCallingExpWithCallingStateEffect.d.ts.map +1 -0
  82. package/dist/typescript/hooks/push/useIosVoipPushEventsSetupEffect.d.ts.map +1 -1
  83. package/dist/typescript/hooks/useAndroidKeepCallAliveEffect.d.ts.map +1 -1
  84. package/dist/typescript/index.d.ts +1 -0
  85. package/dist/typescript/index.d.ts.map +1 -1
  86. package/dist/typescript/modules/call-manager/CallManager.d.ts.map +1 -1
  87. package/dist/typescript/utils/StreamVideoRN/index.d.ts +20 -2
  88. package/dist/typescript/utils/StreamVideoRN/index.d.ts.map +1 -1
  89. package/dist/typescript/utils/StreamVideoRN/types.d.ts +54 -29
  90. package/dist/typescript/utils/StreamVideoRN/types.d.ts.map +1 -1
  91. package/dist/typescript/utils/internal/registerSDKGlobals.d.ts.map +1 -1
  92. package/dist/typescript/utils/keepCallAliveHeadlessTask.d.ts +10 -0
  93. package/dist/typescript/utils/keepCallAliveHeadlessTask.d.ts.map +1 -0
  94. package/dist/typescript/utils/push/android.d.ts +1 -2
  95. package/dist/typescript/utils/push/android.d.ts.map +1 -1
  96. package/dist/typescript/utils/push/internal/ios.d.ts.map +1 -1
  97. package/dist/typescript/utils/push/internal/rxSubjects.d.ts +0 -12
  98. package/dist/typescript/utils/push/internal/rxSubjects.d.ts.map +1 -1
  99. package/dist/typescript/utils/push/internal/utils.d.ts +4 -0
  100. package/dist/typescript/utils/push/internal/utils.d.ts.map +1 -1
  101. package/dist/typescript/utils/push/ios.d.ts +1 -2
  102. package/dist/typescript/utils/push/ios.d.ts.map +1 -1
  103. package/dist/typescript/utils/push/libs/callingx.d.ts +9 -0
  104. package/dist/typescript/utils/push/libs/callingx.d.ts.map +1 -0
  105. package/dist/typescript/utils/push/libs/firebaseMessaging/index.d.ts +16 -2
  106. package/dist/typescript/utils/push/libs/firebaseMessaging/index.d.ts.map +1 -1
  107. package/dist/typescript/utils/push/libs/index.d.ts +1 -2
  108. package/dist/typescript/utils/push/libs/index.d.ts.map +1 -1
  109. package/dist/typescript/utils/push/libs/notifee/index.d.ts +0 -1
  110. package/dist/typescript/utils/push/libs/notifee/index.d.ts.map +1 -1
  111. package/dist/typescript/utils/push/setupCallingExpEvents.d.ts +8 -0
  112. package/dist/typescript/utils/push/setupCallingExpEvents.d.ts.map +1 -0
  113. package/dist/typescript/utils/push/setupIosVoipPushEvents.d.ts.map +1 -1
  114. package/expo-config-plugin/dist/withAndroidManifest.js +1 -33
  115. package/expo-config-plugin/dist/withAndroidPermissions.js +2 -7
  116. package/expo-config-plugin/dist/withAppDelegate.js +19 -197
  117. package/expo-config-plugin/dist/withMainActivity.js +1 -1
  118. package/expo-config-plugin/dist/withiOSInfoPlist.js +2 -3
  119. package/ios/StreamInCallManager.swift +4 -0
  120. package/ios/StreamVideoReactNative.h +7 -4
  121. package/ios/StreamVideoReactNative.m +191 -82
  122. package/package.json +10 -15
  123. package/src/hooks/push/useCallingExpWithCallingStateEffect.ts +361 -0
  124. package/src/hooks/push/useIosVoipPushEventsSetupEffect.ts +21 -34
  125. package/src/hooks/useAndroidKeepCallAliveEffect.ts +95 -120
  126. package/src/index.ts +1 -0
  127. package/src/modules/call-manager/CallManager.ts +30 -0
  128. package/src/providers/StreamCall/index.tsx +6 -6
  129. package/src/utils/StreamVideoRN/index.ts +40 -30
  130. package/src/utils/StreamVideoRN/types.ts +56 -29
  131. package/src/utils/internal/registerSDKGlobals.ts +42 -4
  132. package/src/utils/keepCallAliveHeadlessTask.ts +54 -0
  133. package/src/utils/push/android.ts +223 -308
  134. package/src/utils/push/internal/ios.ts +25 -46
  135. package/src/utils/push/internal/rxSubjects.ts +0 -29
  136. package/src/utils/push/internal/utils.ts +25 -0
  137. package/src/utils/push/ios.ts +1 -6
  138. package/src/utils/push/libs/callingx.ts +90 -0
  139. package/src/utils/push/libs/index.ts +1 -2
  140. package/src/utils/push/libs/notifee/index.ts +0 -27
  141. package/src/utils/push/setupCallingExpEvents.ts +100 -0
  142. package/src/utils/push/setupIosVoipPushEvents.ts +11 -7
  143. package/CHANGELOG.md +0 -3089
  144. package/android/src/main/java/com/streamvideo/reactnative/util/CallAliveServiceChecker.kt +0 -95
  145. package/dist/commonjs/hooks/push/useIosCallkeepWithCallingStateEffect.js +0 -160
  146. package/dist/commonjs/hooks/push/useIosCallkeepWithCallingStateEffect.js.map +0 -1
  147. package/dist/commonjs/utils/push/libs/callkeep.js +0 -17
  148. package/dist/commonjs/utils/push/libs/callkeep.js.map +0 -1
  149. package/dist/commonjs/utils/push/libs/voipPushNotification.js +0 -17
  150. package/dist/commonjs/utils/push/libs/voipPushNotification.js.map +0 -1
  151. package/dist/commonjs/utils/push/setupIosCallKeepEvents.js +0 -205
  152. package/dist/commonjs/utils/push/setupIosCallKeepEvents.js.map +0 -1
  153. package/dist/module/hooks/push/useIosCallkeepWithCallingStateEffect.js +0 -153
  154. package/dist/module/hooks/push/useIosCallkeepWithCallingStateEffect.js.map +0 -1
  155. package/dist/module/utils/push/libs/callkeep.js +0 -11
  156. package/dist/module/utils/push/libs/callkeep.js.map +0 -1
  157. package/dist/module/utils/push/libs/voipPushNotification.js +0 -11
  158. package/dist/module/utils/push/libs/voipPushNotification.js.map +0 -1
  159. package/dist/module/utils/push/setupIosCallKeepEvents.js +0 -199
  160. package/dist/module/utils/push/setupIosCallKeepEvents.js.map +0 -1
  161. package/dist/typescript/hooks/push/useIosCallkeepWithCallingStateEffect.d.ts +0 -5
  162. package/dist/typescript/hooks/push/useIosCallkeepWithCallingStateEffect.d.ts.map +0 -1
  163. package/dist/typescript/utils/push/libs/callkeep.d.ts +0 -3
  164. package/dist/typescript/utils/push/libs/callkeep.d.ts.map +0 -1
  165. package/dist/typescript/utils/push/libs/voipPushNotification.d.ts +0 -3
  166. package/dist/typescript/utils/push/libs/voipPushNotification.d.ts.map +0 -1
  167. package/dist/typescript/utils/push/setupIosCallKeepEvents.d.ts +0 -6
  168. package/dist/typescript/utils/push/setupIosCallKeepEvents.d.ts.map +0 -1
  169. package/src/hooks/push/useIosCallkeepWithCallingStateEffect.ts +0 -235
  170. package/src/utils/push/libs/callkeep.ts +0 -16
  171. package/src/utils/push/libs/voipPushNotification.ts +0 -17
  172. package/src/utils/push/setupIosCallKeepEvents.ts +0 -252
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_rxSubjects","require","_videoClient","_utils","_pushLogoutCallback","_callingx","_reactNative","setupCallingExpEvents","pushConfig","hasPushProvider","Platform","OS","android","pushProviderName","ios","callingx","getCallingxLib","remove","removeAnswerCall","addEventListener","onAcceptCall","removeEndCall","onEndCall","events","getInitialEvents","forEach","event","eventName","params","videoLoggerSystem","getLogger","debug","callId","setPushLogoutCallback","call_cid","source","clearPushWSEventSubscriptions","pushAcceptedIncomingCallCId$","next","processCallFromPushInBackground"],"sourceRoot":"../../../../src","sources":["utils/push/setupCallingExpEvents.ts"],"mappings":";;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,MAAA,GAAAF,OAAA;AAIA,IAAAG,mBAAA,GAAAH,OAAA;AACA,IAAAI,SAAA,GAAAJ,OAAA;AAKA,IAAAK,YAAA,GAAAL,OAAA;AAIA;AACA;AACA;AACO,SAASM,qBAAqBA,CAACC,UAAmC,EAAE;EACzE,MAAMC,eAAe,GAClBC,qBAAQ,CAACC,EAAE,KAAK,SAAS,IAAIH,UAAU,CAACI,OAAO,EAAEC,gBAAgB,IACjEH,qBAAQ,CAACC,EAAE,KAAK,KAAK,IAAIH,UAAU,CAACM,GAAG,EAAED,gBAAiB;EAE7D,IAAI,CAACJ,eAAe,EAAE;IACpB;EACF;EAEA,MAAMM,QAAQ,GAAG,IAAAC,wBAAc,EAAC,CAAC;EAEjC,MAAM;IAAEC,MAAM,EAAEC;EAAiB,CAAC,GAAGH,QAAQ,CAACI,gBAAgB,CAC5D,YAAY,EACZC,YACF,CAAC;EACD,MAAM;IAAEH,MAAM,EAAEI;EAAc,CAAC,GAAGN,QAAQ,CAACI,gBAAgB,CACzD,SAAS,EACTG,SAAS,CAACd,UAAU,CACtB,CAAC;;EAED;EACA;EACA,MAAMe,MAAM,GAAGR,QAAQ,CAACS,gBAAgB,CAAC,CAAC;EAC1CD,MAAM,CAACE,OAAO,CAAEC,KAAgB,IAAK;IACnC,MAAM;MAAEC,SAAS;MAAEC;IAAO,CAAC,GAAGF,KAAK;IACnC,IAAIC,SAAS,KAAK,YAAY,EAAE;MAC9BE,8BAAiB,CACdC,SAAS,CAAC,uBAAuB,CAAC,CAClCC,KAAK,CAAC,oCAAoCH,MAAM,EAAEI,MAAM,EAAE,CAAC;MAC9DZ,YAAY,CAACQ,MAAmC,CAAC;IACnD,CAAC,MAAM,IAAID,SAAS,KAAK,SAAS,EAAE;MAClCE,8BAAiB,CACdC,SAAS,CAAC,uBAAuB,CAAC,CAClCC,KAAK,CAAC,iCAAiCH,MAAM,EAAEI,MAAM,EAAE,CAAC;MAC3DV,SAAS,CAACd,UAAU,CAAC,CAACoB,MAAgC,CAAC;IACzD;EACF,CAAC,CAAC;EAEF,IAAAK,yCAAqB,EAAC,YAAY;IAChCf,gBAAgB,CAAC,CAAC;IAClBG,aAAa,CAAC,CAAC;EACjB,CAAC,CAAC;AACJ;AAEA,MAAMD,YAAY,GAAGA,CAAC;EACpBY,MAAM,EAAEE,QAAQ;EAChBC;AACyB,CAAC,KAAK;EAC/BN,8BAAiB,CACdC,SAAS,CAAC,sBAAsB,CAAC,CACjCC,KAAK,CAAC,sCAAsCG,QAAQ,YAAYC,MAAM,EAAE,CAAC;EAE5E,IAAIA,MAAM,KAAK,KAAK,IAAI,CAACD,QAAQ,EAAE;IACjC;IACA;EACF;EAEA,IAAAE,oCAA6B,EAACF,QAAQ,CAAC;EACvC;EACAG,wCAA4B,CAACC,IAAI,CAACJ,QAAQ,CAAC;AAC7C,CAAC;AAED,MAAMZ,SAAS,GACZd,UAAsB,IACvB,OAAO;EAAEwB,MAAM,EAAEE,QAAQ;EAAEC;AAA+B,CAAC,KAAK;EAC9DN,8BAAiB,CACdC,SAAS,CAAC,sBAAsB,CAAC,CACjCC,KAAK,CACJ,sCAAsCG,QAAQ,YAAYC,MAAM,EAClE,CAAC;EAEH,IAAIA,MAAM,KAAK,KAAK,IAAI,CAACD,QAAQ,EAAE;IACjC;IACA;EACF;EAEA,IAAAE,oCAA6B,EAACF,QAAQ,CAAC;EAEvC,MAAM,IAAAK,sCAA+B,EAAC/B,UAAU,EAAE0B,QAAQ,EAAE,SAAS,CAAC;AACxE,CAAC","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":[]}
@@ -0,0 +1,228 @@
1
+ import { CallingState, videoLoggerSystem } from '@stream-io/video-client';
2
+ import { useCall, useCallStateHooks } from '@stream-io/video-react-bindings';
3
+ import { useEffect, useMemo, useRef } from 'react';
4
+ import { getCallingxLibIfAvailable } from '../../utils/push/libs/callingx';
5
+ const logger = videoLoggerSystem.getLogger('useCallingExpWithCallingStateEffect');
6
+
7
+ //calling state methods are not exhaustive, so we need to add more methods to cover different cases
8
+ const canAcceptIncomingCall = (prevState, currentState) => {
9
+ if (!prevState && !currentState) {
10
+ return false;
11
+ }
12
+ const isJoined = state => {
13
+ if (!state) {
14
+ return false;
15
+ }
16
+ return state === CallingState.JOINING || state === CallingState.JOINED;
17
+ };
18
+ return !isJoined(prevState) && isJoined(currentState) || prevState === CallingState.JOINING && currentState === CallingState.JOINED;
19
+ };
20
+ const canEndCall = (prevState, currentState) => {
21
+ if (!prevState && !currentState) {
22
+ return false;
23
+ }
24
+ return (prevState === CallingState.JOINED || prevState === CallingState.JOINING || prevState === CallingState.RINGING || prevState === CallingState.RECONNECTING || prevState === CallingState.MIGRATING || prevState === CallingState.OFFLINE) && (currentState === CallingState.LEFT || currentState === CallingState.RECONNECTING_FAILED || currentState === CallingState.IDLE);
25
+ };
26
+ const canStartCall = (prevState, currentState) => {
27
+ if (!prevState && !currentState) {
28
+ return false;
29
+ }
30
+ return (!prevState || prevState === CallingState.IDLE || prevState === CallingState.UNKNOWN) && (currentState === CallingState.JOINED || currentState === CallingState.JOINING || currentState === CallingState.RINGING);
31
+ };
32
+ function getCallDisplayName(callMembers, participants, currentUserId) {
33
+ if (!callMembers || !participants || !currentUserId) {
34
+ return 'Call';
35
+ }
36
+ let names = [];
37
+ if (callMembers.length > 0) {
38
+ names = callMembers.filter(member => member.user.id !== currentUserId).map(member => member.user.name).filter(name => name !== undefined);
39
+ } else if (participants.length > 0) {
40
+ names = participants.filter(participant => participant.userId !== currentUserId).map(participant => participant.name).filter(Boolean);
41
+ }
42
+ return names.length > 0 ? names.sort().join(', ') : 'Call';
43
+ }
44
+
45
+ /**
46
+ * This hook is used to inform sync call state with CallKit/Telecom (i.e. start call, end call, mute/unmute call).
47
+ */
48
+ export const useCallingExpWithCallingStateEffect = () => {
49
+ const {
50
+ useCallCallingState,
51
+ // useMicrophoneState,
52
+ useParticipants,
53
+ useCallMembers
54
+ } = useCallStateHooks();
55
+ const activeCall = useCall();
56
+ const callingState = useCallCallingState();
57
+ // const { isMute, microphone } = useMicrophoneState();
58
+ const callMembers = useCallMembers();
59
+ const participants = useParticipants();
60
+ const prevState = useRef(undefined);
61
+ const activeCallCid = activeCall?.cid;
62
+ const isIncomingCall = activeCall?.ringing && !activeCall?.isCreatedByMe;
63
+ const isOutcomingCall = activeCall?.ringing && activeCall?.isCreatedByMe;
64
+ const currentUserId = activeCall?.currentUserId;
65
+ const isVideoCall = activeCall?.state.settings?.video?.enabled ?? false;
66
+ const callDisplayName = useMemo(() => getCallDisplayName(callMembers, participants, currentUserId), [callMembers, participants, currentUserId]);
67
+ useEffect(() => {
68
+ return () => {
69
+ const callingx = getCallingxLibIfAvailable();
70
+ if (!callingx?.isSetup || !activeCallCid) {
71
+ return;
72
+ }
73
+ const isCallRegistered = callingx.isCallRegistered(activeCallCid);
74
+ if (!isCallRegistered) {
75
+ logger.debug(`No active call cid to end in calling exp: ${activeCallCid} isCallRegistered: ${isCallRegistered}`);
76
+ return;
77
+ }
78
+ //if incoming stream call was unmounted, we need to end the call in CallKit/Telecom
79
+ logger.debug(`Ending call in calling exp: ${activeCallCid}`);
80
+ callingx.endCallWithReason(activeCallCid, 'local').catch(error => {
81
+ logger.error(`Error ending call in calling exp: ${activeCallCid}`, error);
82
+ });
83
+ };
84
+ }, [activeCallCid]);
85
+ useEffect(() => {
86
+ const callingx = getCallingxLibIfAvailable();
87
+ if (!callingx?.isSetup || !activeCallCid || prevState.current === callingState) {
88
+ return;
89
+ }
90
+
91
+ //tells if call is registered in CallKit/Telecom
92
+ const isCallRegistered = callingx.isCallRegistered(activeCallCid);
93
+ logger.debug(`useEffect: ${activeCallCid} isCallRegistered: ${isCallRegistered}
94
+ isIncomingCall: ${isIncomingCall} isOutcomingCall: ${isOutcomingCall}
95
+ prevState: ${prevState.current}, currentState: ${callingState}
96
+ isOngoingCallsEnabled: ${callingx.isOngoingCallsEnabled}`);
97
+ if (isIncomingCall && isCallRegistered && canAcceptIncomingCall(prevState.current, callingState)) {
98
+ logger.debug(`Should accept call in callkeep: ${activeCallCid}`);
99
+ callingx.answerIncomingCall(activeCallCid).catch(error => {
100
+ logger.error(`Error answering call in calling exp: ${activeCallCid}`, error);
101
+ });
102
+ } else if ((isOutcomingCall || !isIncomingCall && callingx.isOngoingCallsEnabled) &&
103
+ //we register call in case if is outcoming ringing call or it is non-ringing call and ongoing calls are enabled
104
+ !isCallRegistered && canStartCall(prevState.current, callingState)) {
105
+ logger.debug(`Should register call in callkeep: ${activeCallCid}`);
106
+ //we request start call action from CallKit/Telecom, next step is to make call active when we receive call started event
107
+ callingx.startCall(activeCallCid, activeCallCid, callDisplayName, isVideoCall).catch(error => {
108
+ logger.error(`Error starting call in calling exp: ${activeCallCid}`, error);
109
+ });
110
+ } else if (isCallRegistered && canEndCall(prevState.current, callingState)) {
111
+ //in case call was registered as incoming and state changed to "not joined", we need to end the call and clear rxjs subject
112
+ logger.debug(`Should end call in callkeep: ${activeCallCid}`);
113
+ //TODO: think about sending appropriate reason for end call
114
+ callingx.endCallWithReason(activeCallCid, 'local').catch(error => {
115
+ logger.error(`Error ending call in calling exp: ${activeCallCid}`, error);
116
+ });
117
+ }
118
+ prevState.current = callingState;
119
+ }, [activeCallCid, callingState, callDisplayName, isIncomingCall, isOutcomingCall, isVideoCall]);
120
+ useEffect(() => {
121
+ const callingx = getCallingxLibIfAvailable();
122
+ if (!callingx?.isSetup || !activeCallCid) {
123
+ logger.debug(`No active call cid to listen to start call action in calling exp: ${activeCallCid} callingx is not setup`);
124
+ return;
125
+ }
126
+ if (!isOutcomingCall && !(!isIncomingCall && callingx.isOngoingCallsEnabled)) {
127
+ logger.debug(`Call is not outcoming or ongoing calls are not enabled for non-ringing calls`);
128
+ return;
129
+ }
130
+
131
+ //listen to start call action from CallKit/Telecom and set the current call active
132
+ const subscription = callingx.addEventListener('didReceiveStartCallAction', ({
133
+ callId
134
+ }) => {
135
+ if (callId === activeCallCid) {
136
+ logger.debug(`Received start call action for call: ${activeCallCid}`);
137
+ callingx.setCurrentCallActive(activeCallCid).catch(error => {
138
+ logger.error(`Error answering call in calling exp: ${activeCallCid}`, error);
139
+ });
140
+ }
141
+ });
142
+ return () => {
143
+ subscription.remove();
144
+ };
145
+ }, [activeCallCid, isOutcomingCall, isIncomingCall]);
146
+ useEffect(() => {
147
+ const callingx = getCallingxLibIfAvailable();
148
+ if (!callingx?.isSetup || !activeCallCid) {
149
+ return;
150
+ }
151
+ const isCallRegistered = callingx.isCallRegistered(activeCallCid);
152
+ if (!isCallRegistered) {
153
+ logger.debug(`No active call cid to update calling exp: ${activeCallCid} isCallRegistered: ${isCallRegistered}`);
154
+ return;
155
+ }
156
+ callingx.updateDisplay(activeCallCid, activeCallCid, callDisplayName);
157
+ }, [activeCallCid, callDisplayName]);
158
+
159
+ // useEffect(() => {
160
+ // const callingx = getCallingxLibIfAvailable();
161
+ // if (!callingx?.isSetup || !activeCallCid) {
162
+ // return;
163
+ // }
164
+
165
+ // const isCallRegistered = callingx.isCallRegistered(activeCallCid);
166
+ // if (!isCallRegistered) {
167
+ // logger.debug(
168
+ // `No active call cid to set muted in calling exp: ${activeCallCid} isCallRegistered: ${isCallRegistered}`,
169
+ // );
170
+ // return;
171
+ // }
172
+
173
+ // callingx.setMutedCall(activeCallCid, isMute);
174
+ // }, [activeCallCid, isMute]);
175
+
176
+ // useEffect(() => {
177
+ // const callingx = getCallingxLibIfAvailable();
178
+ // if (!callingx?.isSetup || !activeCallCid) {
179
+ // return;
180
+ // }
181
+
182
+ // const isCallRegistered = callingx.isCallRegistered(activeCallCid);
183
+ // if (!isCallRegistered) {
184
+ // logger.debug(
185
+ // `No active call cid to set muted in calling exp: ${activeCallCid} isCallRegistered: ${isCallRegistered}`,
186
+ // );
187
+ // return;
188
+ // }
189
+
190
+ // //listen to mic toggle events from CallKit/Telecom and update stream call microphone state
191
+ // const subscription = callingx.addEventListener(
192
+ // 'didPerformSetMutedCallAction',
193
+ // async (event: { callId: string; muted: boolean }) => {
194
+ // const { callId, muted } = event;
195
+
196
+ // if (callId === activeCallCid) {
197
+ // const isCurrentlyMuted =
198
+ // RxUtils.getCurrentValue(microphone.state.status$) === 'disabled';
199
+ // if (isCurrentlyMuted === muted) {
200
+ // logger.debug(
201
+ // `Mic toggle is already in the desired state: ${muted} for call: ${activeCallCid}`,
202
+ // );
203
+ // //this check prevents mic toggle when state change was initiated from client and not from CallKit/Telecom
204
+ // return;
205
+ // }
206
+
207
+ // try {
208
+ // if (muted) {
209
+ // await microphone.disable();
210
+ // } else {
211
+ // await microphone.enable();
212
+ // }
213
+ // } catch (error: unknown) {
214
+ // logger.error(
215
+ // `Error toggling mic in calling exp: ${activeCallCid}`,
216
+ // error,
217
+ // );
218
+ // }
219
+ // }
220
+ // },
221
+ // );
222
+
223
+ // return () => {
224
+ // subscription.remove();
225
+ // };
226
+ // }, [activeCallCid, microphone, isOutcomingCall, isIncomingCall]);
227
+ };
228
+ //# sourceMappingURL=useCallingExpWithCallingStateEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CallingState","videoLoggerSystem","useCall","useCallStateHooks","useEffect","useMemo","useRef","getCallingxLibIfAvailable","logger","getLogger","canAcceptIncomingCall","prevState","currentState","isJoined","state","JOINING","JOINED","canEndCall","RINGING","RECONNECTING","MIGRATING","OFFLINE","LEFT","RECONNECTING_FAILED","IDLE","canStartCall","UNKNOWN","getCallDisplayName","callMembers","participants","currentUserId","names","length","filter","member","user","id","map","name","undefined","participant","userId","Boolean","sort","join","useCallingExpWithCallingStateEffect","useCallCallingState","useParticipants","useCallMembers","activeCall","callingState","activeCallCid","cid","isIncomingCall","ringing","isCreatedByMe","isOutcomingCall","isVideoCall","settings","video","enabled","callDisplayName","callingx","isSetup","isCallRegistered","debug","endCallWithReason","catch","error","current","isOngoingCallsEnabled","answerIncomingCall","startCall","subscription","addEventListener","callId","setCurrentCallActive","remove","updateDisplay"],"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":[]}