@stream-io/video-react-native-sdk 1.30.5 → 1.31.1-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 (248) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/android/src/main/AndroidManifest.xml +8 -1
  3. package/android/src/main/AndroidManifestNew.xml +11 -0
  4. package/android/src/main/java/com/streamvideo/reactnative/StreamVideoReactNativeModule.kt +127 -5
  5. package/android/src/main/java/com/streamvideo/reactnative/audio/utils/WebRtcAudioUtils.kt +70 -6
  6. package/android/src/main/java/com/streamvideo/reactnative/callmanager/StreamInCallManagerModule.kt +6 -4
  7. package/android/src/main/java/com/streamvideo/reactnative/keepalive/KeepAliveNotification.kt +83 -0
  8. package/android/src/main/java/com/streamvideo/reactnative/keepalive/StreamCallKeepAliveHeadlessService.kt +149 -0
  9. package/android/src/main/java/com/streamvideo/reactnative/screenshare/ScreenAudioCapture.kt +111 -0
  10. package/dist/commonjs/components/Call/CallControls/ScreenShareToggleButton.js +3 -2
  11. package/dist/commonjs/components/Call/CallControls/ScreenShareToggleButton.js.map +1 -1
  12. package/dist/commonjs/hooks/index.js +11 -0
  13. package/dist/commonjs/hooks/index.js.map +1 -1
  14. package/dist/commonjs/hooks/push/index.js +0 -2
  15. package/dist/commonjs/hooks/push/index.js.map +1 -1
  16. package/dist/commonjs/hooks/push/useCallingExpWithCallingStateEffect.js +144 -0
  17. package/dist/commonjs/hooks/push/useCallingExpWithCallingStateEffect.js.map +1 -0
  18. package/dist/commonjs/hooks/push/useIosVoipPushEventsSetupEffect.js +18 -31
  19. package/dist/commonjs/hooks/push/useIosVoipPushEventsSetupEffect.js.map +1 -1
  20. package/dist/commonjs/hooks/useAndroidKeepCallAliveEffect.js +64 -97
  21. package/dist/commonjs/hooks/useAndroidKeepCallAliveEffect.js.map +1 -1
  22. package/dist/commonjs/hooks/useScreenShareAudioMixing.js +126 -0
  23. package/dist/commonjs/hooks/useScreenShareAudioMixing.js.map +1 -0
  24. package/dist/commonjs/hooks/useScreenShareButton.js +57 -3
  25. package/dist/commonjs/hooks/useScreenShareButton.js.map +1 -1
  26. package/dist/commonjs/index.js +1 -0
  27. package/dist/commonjs/index.js.map +1 -1
  28. package/dist/commonjs/modules/ScreenShareAudioManager.js +54 -0
  29. package/dist/commonjs/modules/ScreenShareAudioManager.js.map +1 -0
  30. package/dist/commonjs/modules/call-manager/CallManager.js +26 -0
  31. package/dist/commonjs/modules/call-manager/CallManager.js.map +1 -1
  32. package/dist/commonjs/providers/StreamCall/index.js +16 -6
  33. package/dist/commonjs/providers/StreamCall/index.js.map +1 -1
  34. package/dist/commonjs/utils/StreamVideoRN/index.js +35 -21
  35. package/dist/commonjs/utils/StreamVideoRN/index.js.map +1 -1
  36. package/dist/commonjs/utils/internal/callingx/audioSessionPromise.js +68 -0
  37. package/dist/commonjs/utils/internal/callingx/audioSessionPromise.js.map +1 -0
  38. package/dist/commonjs/utils/internal/callingx/callingx.js +150 -0
  39. package/dist/commonjs/utils/internal/callingx/callingx.js.map +1 -0
  40. package/dist/commonjs/utils/internal/registerSDKGlobals.js +53 -3
  41. package/dist/commonjs/utils/internal/registerSDKGlobals.js.map +1 -1
  42. package/dist/commonjs/utils/keepCallAliveHeadlessTask.js +48 -0
  43. package/dist/commonjs/utils/keepCallAliveHeadlessTask.js.map +1 -0
  44. package/dist/commonjs/utils/push/android.js +135 -202
  45. package/dist/commonjs/utils/push/android.js.map +1 -1
  46. package/dist/commonjs/utils/push/internal/ios.js +17 -34
  47. package/dist/commonjs/utils/push/internal/ios.js.map +1 -1
  48. package/dist/commonjs/utils/push/internal/rxSubjects.js +1 -45
  49. package/dist/commonjs/utils/push/internal/rxSubjects.js.map +1 -1
  50. package/dist/commonjs/utils/push/internal/utils.js +71 -53
  51. package/dist/commonjs/utils/push/internal/utils.js.map +1 -1
  52. package/dist/commonjs/utils/push/ios.js.map +1 -1
  53. package/dist/commonjs/utils/push/libs/callingx.js +75 -0
  54. package/dist/commonjs/utils/push/libs/callingx.js.map +1 -0
  55. package/dist/commonjs/utils/push/libs/index.js +8 -19
  56. package/dist/commonjs/utils/push/libs/index.js.map +1 -1
  57. package/dist/commonjs/utils/push/libs/notifee/index.js +0 -19
  58. package/dist/commonjs/utils/push/libs/notifee/index.js.map +1 -1
  59. package/dist/commonjs/utils/push/setupCallingExpEvents.js +105 -0
  60. package/dist/commonjs/utils/push/setupCallingExpEvents.js.map +1 -0
  61. package/dist/commonjs/utils/push/setupIosVoipPushEvents.js +7 -6
  62. package/dist/commonjs/utils/push/setupIosVoipPushEvents.js.map +1 -1
  63. package/dist/commonjs/version.js +1 -1
  64. package/dist/commonjs/version.js.map +1 -1
  65. package/dist/module/components/Call/CallControls/ScreenShareToggleButton.js +3 -2
  66. package/dist/module/components/Call/CallControls/ScreenShareToggleButton.js.map +1 -1
  67. package/dist/module/hooks/index.js +1 -0
  68. package/dist/module/hooks/index.js.map +1 -1
  69. package/dist/module/hooks/push/index.js +0 -2
  70. package/dist/module/hooks/push/index.js.map +1 -1
  71. package/dist/module/hooks/push/useCallingExpWithCallingStateEffect.js +137 -0
  72. package/dist/module/hooks/push/useCallingExpWithCallingStateEffect.js.map +1 -0
  73. package/dist/module/hooks/push/useIosVoipPushEventsSetupEffect.js +18 -31
  74. package/dist/module/hooks/push/useIosVoipPushEventsSetupEffect.js.map +1 -1
  75. package/dist/module/hooks/useAndroidKeepCallAliveEffect.js +66 -99
  76. package/dist/module/hooks/useAndroidKeepCallAliveEffect.js.map +1 -1
  77. package/dist/module/hooks/useScreenShareAudioMixing.js +119 -0
  78. package/dist/module/hooks/useScreenShareAudioMixing.js.map +1 -0
  79. package/dist/module/hooks/useScreenShareButton.js +57 -3
  80. package/dist/module/hooks/useScreenShareButton.js.map +1 -1
  81. package/dist/module/index.js +1 -0
  82. package/dist/module/index.js.map +1 -1
  83. package/dist/module/modules/ScreenShareAudioManager.js +47 -0
  84. package/dist/module/modules/ScreenShareAudioManager.js.map +1 -0
  85. package/dist/module/modules/call-manager/CallManager.js +26 -0
  86. package/dist/module/modules/call-manager/CallManager.js.map +1 -1
  87. package/dist/module/providers/StreamCall/index.js +16 -6
  88. package/dist/module/providers/StreamCall/index.js.map +1 -1
  89. package/dist/module/utils/StreamVideoRN/index.js +35 -21
  90. package/dist/module/utils/StreamVideoRN/index.js.map +1 -1
  91. package/dist/module/utils/internal/callingx/audioSessionPromise.js +61 -0
  92. package/dist/module/utils/internal/callingx/audioSessionPromise.js.map +1 -0
  93. package/dist/module/utils/internal/callingx/callingx.js +140 -0
  94. package/dist/module/utils/internal/callingx/callingx.js.map +1 -0
  95. package/dist/module/utils/internal/registerSDKGlobals.js +53 -3
  96. package/dist/module/utils/internal/registerSDKGlobals.js.map +1 -1
  97. package/dist/module/utils/keepCallAliveHeadlessTask.js +42 -0
  98. package/dist/module/utils/keepCallAliveHeadlessTask.js.map +1 -0
  99. package/dist/module/utils/push/android.js +137 -204
  100. package/dist/module/utils/push/android.js.map +1 -1
  101. package/dist/module/utils/push/internal/ios.js +17 -34
  102. package/dist/module/utils/push/internal/ios.js.map +1 -1
  103. package/dist/module/utils/push/internal/rxSubjects.js +0 -44
  104. package/dist/module/utils/push/internal/rxSubjects.js.map +1 -1
  105. package/dist/module/utils/push/internal/utils.js +67 -50
  106. package/dist/module/utils/push/internal/utils.js.map +1 -1
  107. package/dist/module/utils/push/ios.js.map +1 -1
  108. package/dist/module/utils/push/libs/callingx.js +67 -0
  109. package/dist/module/utils/push/libs/callingx.js.map +1 -0
  110. package/dist/module/utils/push/libs/index.js +1 -2
  111. package/dist/module/utils/push/libs/index.js.map +1 -1
  112. package/dist/module/utils/push/libs/notifee/index.js +0 -18
  113. package/dist/module/utils/push/libs/notifee/index.js.map +1 -1
  114. package/dist/module/utils/push/setupCallingExpEvents.js +99 -0
  115. package/dist/module/utils/push/setupCallingExpEvents.js.map +1 -0
  116. package/dist/module/utils/push/setupIosVoipPushEvents.js +7 -6
  117. package/dist/module/utils/push/setupIosVoipPushEvents.js.map +1 -1
  118. package/dist/module/version.js +1 -1
  119. package/dist/module/version.js.map +1 -1
  120. package/dist/typescript/components/Call/CallControls/ScreenShareToggleButton.d.ts +6 -1
  121. package/dist/typescript/components/Call/CallControls/ScreenShareToggleButton.d.ts.map +1 -1
  122. package/dist/typescript/hooks/index.d.ts +1 -0
  123. package/dist/typescript/hooks/index.d.ts.map +1 -1
  124. package/dist/typescript/hooks/push/index.d.ts.map +1 -1
  125. package/dist/typescript/hooks/push/useCallingExpWithCallingStateEffect.d.ts +5 -0
  126. package/dist/typescript/hooks/push/useCallingExpWithCallingStateEffect.d.ts.map +1 -0
  127. package/dist/typescript/hooks/push/useIosVoipPushEventsSetupEffect.d.ts.map +1 -1
  128. package/dist/typescript/hooks/useAndroidKeepCallAliveEffect.d.ts.map +1 -1
  129. package/dist/typescript/hooks/useScreenShareAudioMixing.d.ts +14 -0
  130. package/dist/typescript/hooks/useScreenShareAudioMixing.d.ts.map +1 -0
  131. package/dist/typescript/hooks/useScreenShareButton.d.ts +39 -2
  132. package/dist/typescript/hooks/useScreenShareButton.d.ts.map +1 -1
  133. package/dist/typescript/index.d.ts +1 -0
  134. package/dist/typescript/index.d.ts.map +1 -1
  135. package/dist/typescript/modules/ScreenShareAudioManager.d.ts +28 -0
  136. package/dist/typescript/modules/ScreenShareAudioManager.d.ts.map +1 -0
  137. package/dist/typescript/modules/call-manager/CallManager.d.ts +5 -0
  138. package/dist/typescript/modules/call-manager/CallManager.d.ts.map +1 -1
  139. package/dist/typescript/providers/StreamCall/index.d.ts.map +1 -1
  140. package/dist/typescript/utils/StreamVideoRN/index.d.ts +22 -2
  141. package/dist/typescript/utils/StreamVideoRN/index.d.ts.map +1 -1
  142. package/dist/typescript/utils/StreamVideoRN/types.d.ts +59 -25
  143. package/dist/typescript/utils/StreamVideoRN/types.d.ts.map +1 -1
  144. package/dist/typescript/utils/internal/callingx/audioSessionPromise.d.ts +16 -0
  145. package/dist/typescript/utils/internal/callingx/audioSessionPromise.d.ts.map +1 -0
  146. package/dist/typescript/utils/internal/callingx/callingx.d.ts +18 -0
  147. package/dist/typescript/utils/internal/callingx/callingx.d.ts.map +1 -0
  148. package/dist/typescript/utils/internal/registerSDKGlobals.d.ts.map +1 -1
  149. package/dist/typescript/utils/keepCallAliveHeadlessTask.d.ts +10 -0
  150. package/dist/typescript/utils/keepCallAliveHeadlessTask.d.ts.map +1 -0
  151. package/dist/typescript/utils/push/android.d.ts +1 -2
  152. package/dist/typescript/utils/push/android.d.ts.map +1 -1
  153. package/dist/typescript/utils/push/internal/ios.d.ts.map +1 -1
  154. package/dist/typescript/utils/push/internal/rxSubjects.d.ts +0 -33
  155. package/dist/typescript/utils/push/internal/rxSubjects.d.ts.map +1 -1
  156. package/dist/typescript/utils/push/internal/utils.d.ts +14 -8
  157. package/dist/typescript/utils/push/internal/utils.d.ts.map +1 -1
  158. package/dist/typescript/utils/push/ios.d.ts +1 -2
  159. package/dist/typescript/utils/push/ios.d.ts.map +1 -1
  160. package/dist/typescript/utils/push/libs/callingx.d.ts +9 -0
  161. package/dist/typescript/utils/push/libs/callingx.d.ts.map +1 -0
  162. package/dist/typescript/utils/push/libs/firebaseMessaging/index.d.ts +16 -2
  163. package/dist/typescript/utils/push/libs/firebaseMessaging/index.d.ts.map +1 -1
  164. package/dist/typescript/utils/push/libs/index.d.ts +1 -2
  165. package/dist/typescript/utils/push/libs/index.d.ts.map +1 -1
  166. package/dist/typescript/utils/push/libs/notifee/index.d.ts +0 -1
  167. package/dist/typescript/utils/push/libs/notifee/index.d.ts.map +1 -1
  168. package/dist/typescript/utils/push/setupCallingExpEvents.d.ts +8 -0
  169. package/dist/typescript/utils/push/setupCallingExpEvents.d.ts.map +1 -0
  170. package/dist/typescript/utils/push/setupIosVoipPushEvents.d.ts.map +1 -1
  171. package/dist/typescript/version.d.ts +1 -1
  172. package/dist/typescript/version.d.ts.map +1 -1
  173. package/expo-config-plugin/dist/withAndroidManifest.js +1 -33
  174. package/expo-config-plugin/dist/withAndroidPermissions.js +2 -7
  175. package/expo-config-plugin/dist/withAppDelegate.js +19 -197
  176. package/expo-config-plugin/dist/withMainActivity.js +1 -1
  177. package/expo-config-plugin/dist/withiOSInfoPlist.js +2 -3
  178. package/ios/StreamInCallManager.m +2 -0
  179. package/ios/StreamInCallManager.swift +19 -7
  180. package/ios/StreamVideoReactNative.h +7 -4
  181. package/ios/StreamVideoReactNative.m +282 -86
  182. package/package.json +13 -18
  183. package/src/components/Call/CallControls/ScreenShareToggleButton.tsx +11 -1
  184. package/src/hooks/index.ts +1 -0
  185. package/src/hooks/push/index.ts +0 -2
  186. package/src/hooks/push/useCallingExpWithCallingStateEffect.ts +189 -0
  187. package/src/hooks/push/useIosVoipPushEventsSetupEffect.ts +21 -34
  188. package/src/hooks/useAndroidKeepCallAliveEffect.ts +94 -120
  189. package/src/hooks/useScreenShareAudioMixing.ts +130 -0
  190. package/src/hooks/useScreenShareButton.ts +87 -2
  191. package/src/index.ts +1 -0
  192. package/src/modules/ScreenShareAudioManager.ts +49 -0
  193. package/src/modules/call-manager/CallManager.ts +36 -0
  194. package/src/modules/call-manager/native-module.d.ts +7 -0
  195. package/src/providers/StreamCall/index.tsx +17 -6
  196. package/src/utils/StreamVideoRN/index.ts +42 -30
  197. package/src/utils/StreamVideoRN/types.ts +61 -25
  198. package/src/utils/internal/callingx/audioSessionPromise.ts +65 -0
  199. package/src/utils/internal/callingx/callingx.ts +194 -0
  200. package/src/utils/internal/registerSDKGlobals.ts +52 -4
  201. package/src/utils/keepCallAliveHeadlessTask.ts +54 -0
  202. package/src/utils/push/android.ts +198 -311
  203. package/src/utils/push/internal/ios.ts +28 -44
  204. package/src/utils/push/internal/rxSubjects.ts +0 -61
  205. package/src/utils/push/internal/utils.ts +108 -64
  206. package/src/utils/push/ios.ts +1 -6
  207. package/src/utils/push/libs/callingx.ts +89 -0
  208. package/src/utils/push/libs/index.ts +1 -2
  209. package/src/utils/push/libs/notifee/index.ts +0 -27
  210. package/src/utils/push/setupCallingExpEvents.ts +135 -0
  211. package/src/utils/push/setupIosVoipPushEvents.ts +11 -7
  212. package/src/version.ts +1 -1
  213. package/android/src/main/java/com/streamvideo/reactnative/util/CallAliveServiceChecker.kt +0 -95
  214. package/dist/commonjs/hooks/push/useIosCallkeepWithCallingStateEffect.js +0 -160
  215. package/dist/commonjs/hooks/push/useIosCallkeepWithCallingStateEffect.js.map +0 -1
  216. package/dist/commonjs/hooks/push/useProcessPushCallEffect.js +0 -67
  217. package/dist/commonjs/hooks/push/useProcessPushCallEffect.js.map +0 -1
  218. package/dist/commonjs/utils/push/libs/callkeep.js +0 -17
  219. package/dist/commonjs/utils/push/libs/callkeep.js.map +0 -1
  220. package/dist/commonjs/utils/push/libs/voipPushNotification.js +0 -17
  221. package/dist/commonjs/utils/push/libs/voipPushNotification.js.map +0 -1
  222. package/dist/commonjs/utils/push/setupIosCallKeepEvents.js +0 -205
  223. package/dist/commonjs/utils/push/setupIosCallKeepEvents.js.map +0 -1
  224. package/dist/module/hooks/push/useIosCallkeepWithCallingStateEffect.js +0 -153
  225. package/dist/module/hooks/push/useIosCallkeepWithCallingStateEffect.js.map +0 -1
  226. package/dist/module/hooks/push/useProcessPushCallEffect.js +0 -60
  227. package/dist/module/hooks/push/useProcessPushCallEffect.js.map +0 -1
  228. package/dist/module/utils/push/libs/callkeep.js +0 -11
  229. package/dist/module/utils/push/libs/callkeep.js.map +0 -1
  230. package/dist/module/utils/push/libs/voipPushNotification.js +0 -11
  231. package/dist/module/utils/push/libs/voipPushNotification.js.map +0 -1
  232. package/dist/module/utils/push/setupIosCallKeepEvents.js +0 -199
  233. package/dist/module/utils/push/setupIosCallKeepEvents.js.map +0 -1
  234. package/dist/typescript/hooks/push/useIosCallkeepWithCallingStateEffect.d.ts +0 -5
  235. package/dist/typescript/hooks/push/useIosCallkeepWithCallingStateEffect.d.ts.map +0 -1
  236. package/dist/typescript/hooks/push/useProcessPushCallEffect.d.ts +0 -8
  237. package/dist/typescript/hooks/push/useProcessPushCallEffect.d.ts.map +0 -1
  238. package/dist/typescript/utils/push/libs/callkeep.d.ts +0 -3
  239. package/dist/typescript/utils/push/libs/callkeep.d.ts.map +0 -1
  240. package/dist/typescript/utils/push/libs/voipPushNotification.d.ts +0 -3
  241. package/dist/typescript/utils/push/libs/voipPushNotification.d.ts.map +0 -1
  242. package/dist/typescript/utils/push/setupIosCallKeepEvents.d.ts +0 -6
  243. package/dist/typescript/utils/push/setupIosCallKeepEvents.d.ts.map +0 -1
  244. package/src/hooks/push/useIosCallkeepWithCallingStateEffect.ts +0 -235
  245. package/src/hooks/push/useProcessPushCallEffect.ts +0 -108
  246. package/src/utils/push/libs/callkeep.ts +0 -16
  247. package/src/utils/push/libs/voipPushNotification.ts +0 -17
  248. package/src/utils/push/setupIosCallKeepEvents.ts +0 -252
@@ -9,91 +9,56 @@ var _react = require("react");
9
9
  var _utils = require("../utils");
10
10
  var _reactNative = require("react-native");
11
11
  var _videoClient = require("@stream-io/video-client");
12
+ var _keepCallAliveHeadlessTask = require("../utils/keepCallAliveHeadlessTask");
12
13
  var _notifee = require("../utils/push/libs/notifee");
14
+ var _libs = require("../utils/push/libs");
13
15
  const notifeeLib = (0, _notifee.getNotifeeLibNoThrowForKeepCallAlive)();
14
- const callToPassToForegroundService = {
15
- current: undefined
16
- };
17
- function setForegroundService() {
18
- if (_reactNative.Platform.OS === 'ios' || !notifeeLib) return;
19
- _reactNative.NativeModules.StreamVideoReactNative.isCallAliveConfigured().then(isConfigured => {
20
- if (!isConfigured) {
21
- const logger = _videoClient.videoLoggerSystem.getLogger('setForegroundService method');
22
- logger.info('KeepCallAlive is not configured. Skipping foreground service setup.');
23
- return;
24
- }
25
- notifeeLib.default.registerForegroundService(() => {
26
- const task = new Promise(resolve => {
27
- const logger = _videoClient.videoLoggerSystem.getLogger('setForegroundService method');
28
- logger.info('Foreground service running for call in progress');
29
- // any task to run from SDK in the foreground service must be added
30
- resolve(true);
31
- });
32
- const videoConfig = _utils.StreamVideoRN.getConfig();
33
- const foregroundServiceConfig = videoConfig.foregroundService;
34
- const {
35
- taskToRun
36
- } = foregroundServiceConfig.android;
37
- const call = callToPassToForegroundService.current;
38
- if (!call) {
39
- const logger = _videoClient.videoLoggerSystem.getLogger('setForegroundService method');
40
- logger.warn('No call to pass to foreground service');
41
- return task.then(() => new Promise(() => {}));
42
- }
43
- callToPassToForegroundService.current = undefined;
44
- return task.then(() => taskToRun(call));
45
- });
46
- });
16
+ async function stopForegroundServiceNoThrow() {
17
+ const logger = _videoClient.videoLoggerSystem.getLogger('stopForegroundServiceNoThrow');
18
+ try {
19
+ await _reactNative.NativeModules.StreamVideoReactNative.stopKeepCallAliveService();
20
+ } catch (e) {
21
+ logger.warn('Failed to stop keep-call-alive foreground service', e);
22
+ }
47
23
  }
48
24
  async function startForegroundService(call_cid) {
49
- const isCallAliveConfigured = await _reactNative.NativeModules.StreamVideoReactNative.isCallAliveConfigured();
25
+ const logger = _videoClient.videoLoggerSystem.getLogger('startForegroundService');
26
+ const isCallAliveConfigured = await (async () => {
27
+ try {
28
+ return await _reactNative.NativeModules.StreamVideoReactNative.isCallAliveConfigured();
29
+ } catch (e) {
30
+ logger.warn('Failed to check whether KeepCallAlive is configured', e);
31
+ return false;
32
+ }
33
+ })();
50
34
  if (!isCallAliveConfigured) {
51
- const logger = _videoClient.videoLoggerSystem.getLogger('startForegroundService');
52
35
  logger.info('KeepCallAlive is not configured. Skipping foreground service setup.');
53
36
  return;
54
37
  }
55
- // check for notification permission and then start the foreground service
56
- if (!notifeeLib) return;
57
- const settings = await notifeeLib.default.getNotificationSettings();
58
- if (settings.authorizationStatus !== notifeeLib.AuthorizationStatus.AUTHORIZED) {
59
- const logger = _videoClient.videoLoggerSystem.getLogger('startForegroundService');
38
+ // Check for notification permission (Android 13+) before starting the service.
39
+ const hasPostNotificationsPermission = Number(_reactNative.Platform.Version) < 33 || (await _reactNative.PermissionsAndroid.check(_reactNative.PermissionsAndroid.PERMISSIONS.POST_NOTIFICATIONS));
40
+ if (!hasPostNotificationsPermission) {
60
41
  logger.info('Notification permission not granted, can not start foreground service to keep the call alive');
61
42
  return;
62
43
  }
63
44
  const videoConfig = _utils.StreamVideoRN.getConfig();
64
45
  const foregroundServiceConfig = videoConfig.foregroundService;
65
46
  const notificationTexts = foregroundServiceConfig.android.notificationTexts;
66
- const channelId = foregroundServiceConfig.android.channel.id;
67
- await notifeeLib.default.createChannel(foregroundServiceConfig.android.channel);
68
- const foregroundServiceTypes = await (0, _notifee.getKeepCallAliveForegroundServiceTypes)();
47
+ const channel = foregroundServiceConfig.android.channel;
48
+ const smallIconName = videoConfig.push?.android.smallIcon;
49
+
69
50
  // NOTE: we use requestAnimationFrame to ensure that the foreground service is started after all the current UI operations are done
70
51
  // this is a workaround for the crash - android.app.RemoteServiceException$ForegroundServiceDidNotStartInTimeException: Context.startForegroundService() did not then call Service.startForeground()
71
52
  // this crash was reproducible only in some android devices
72
- requestAnimationFrame(() => {
73
- notifeeLib.default.displayNotification({
74
- id: call_cid,
75
- title: notificationTexts.title,
76
- body: notificationTexts.body,
77
- android: {
78
- channelId,
79
- smallIcon: videoConfig.push?.android.smallIcon,
80
- foregroundServiceTypes,
81
- asForegroundService: true,
82
- ongoing: true,
83
- // user cannot dismiss the notification
84
- colorized: true,
85
- pressAction: {
86
- id: 'default',
87
- launchActivity: 'default' // open the app when the notification is pressed
88
- }
89
- }
90
- });
53
+ requestAnimationFrame(async () => {
54
+ try {
55
+ await _reactNative.NativeModules.StreamVideoReactNative.startKeepCallAliveService(call_cid, channel.id, channel.name, notificationTexts.title, notificationTexts.body, smallIconName ?? null);
56
+ } catch (e) {
57
+ logger.warn('Failed to start keep-call-alive foreground service', e);
58
+ }
91
59
  });
92
60
  }
93
61
 
94
- // flag to check if setForegroundService has already been run once
95
- let isSetForegroundServiceRan = false;
96
-
97
62
  /**
98
63
  * This hook is used to keep the call alive in the background for Android.
99
64
  * It starts a foreground service to keep the call alive as soon as the call is joined
@@ -103,7 +68,7 @@ let isSetForegroundServiceRan = false;
103
68
  const useAndroidKeepCallAliveEffect = () => {
104
69
  const foregroundServiceStartedRef = (0, _react.useRef)(false);
105
70
  const call = (0, _videoReactBindings.useCall)();
106
- callToPassToForegroundService.current = call;
71
+ _keepCallAliveHeadlessTask.keepCallAliveCallRef.current = call;
107
72
  const activeCallCid = call?.cid;
108
73
  const {
109
74
  useCallCallingState
@@ -111,12 +76,16 @@ const useAndroidKeepCallAliveEffect = () => {
111
76
  const callingState = useCallCallingState();
112
77
  const isOutgoingCall = callingState === _videoClient.CallingState.RINGING && call?.isCreatedByMe;
113
78
  const isCallJoined = callingState === _videoClient.CallingState.JOINED;
79
+ const isRingingCall = call?.ringing;
114
80
  const shouldStartForegroundService = !foregroundServiceStartedRef.current && (isOutgoingCall || isCallJoined);
115
81
  (0, _react.useEffect)(() => {
116
82
  if (_reactNative.Platform.OS === 'ios' || !activeCallCid) {
117
83
  return undefined;
118
84
  }
119
- if (!notifeeLib) return undefined;
85
+ const callingx = (0, _libs.getCallingxLibIfAvailable)();
86
+ if (callingx?.isSetup && (isRingingCall || !isRingingCall && callingx?.isOngoingCallsEnabled)) {
87
+ return undefined;
88
+ }
120
89
 
121
90
  // start foreground service as soon as the call is joined
122
91
  if (shouldStartForegroundService) {
@@ -124,21 +93,18 @@ const useAndroidKeepCallAliveEffect = () => {
124
93
  if (foregroundServiceStartedRef.current) {
125
94
  return;
126
95
  }
127
- if (!isSetForegroundServiceRan) {
128
- isSetForegroundServiceRan = true;
129
- setForegroundService();
130
- }
131
- const notifee = notifeeLib.default;
132
- const displayedNotifications = await notifee.getDisplayedNotifications();
133
- const activeCallNotification = displayedNotifications.find(notification => notification.id === activeCallCid);
134
- if (activeCallNotification) {
135
- callToPassToForegroundService.current = undefined;
136
- // this means that we have a incoming call notification shown as foreground service and we must stop it
137
- notifee.stopForegroundService();
138
- notifee.cancelDisplayedNotification(activeCallCid);
96
+ // Optional compatibility cleanup: if the app uses Notifee for ringing push,
97
+ // we might have an incoming call notification running as a foreground service.
98
+ if (notifeeLib) {
99
+ const notifee = notifeeLib.default;
100
+ const displayedNotifications = await notifee.getDisplayedNotifications();
101
+ const activeCallNotification = displayedNotifications.find(notification => notification.id === activeCallCid);
102
+ if (activeCallNotification) {
103
+ // this means that we have a incoming call notification shown as foreground service and we must stop it
104
+ notifee.stopForegroundService();
105
+ notifee.cancelDisplayedNotification(activeCallCid);
106
+ }
139
107
  }
140
- // check for notification permission and then start the foreground service
141
-
142
108
  await startForegroundService(activeCallCid);
143
109
  foregroundServiceStartedRef.current = true;
144
110
  };
@@ -146,7 +112,6 @@ const useAndroidKeepCallAliveEffect = () => {
146
112
  // ensure that app is active before running the function
147
113
  if (_reactNative.AppState.currentState === 'active') {
148
114
  run();
149
- return undefined;
150
115
  }
151
116
  const sub = _reactNative.AppState.addEventListener('change', nextAppState => {
152
117
  if (nextAppState === 'active') {
@@ -161,34 +126,36 @@ const useAndroidKeepCallAliveEffect = () => {
161
126
  return () => {
162
127
  // cancel any notifee displayed notification when the call has transitioned out of ringing
163
128
  // NOTE: cancels only the non fg service notifications
164
- notifeeLib.default.cancelDisplayedNotification(activeCallCid);
129
+ if (notifeeLib) {
130
+ notifeeLib.default.cancelDisplayedNotification(activeCallCid);
131
+ }
165
132
  };
166
133
  } else if (callingState === _videoClient.CallingState.IDLE || callingState === _videoClient.CallingState.LEFT) {
167
134
  if (foregroundServiceStartedRef.current) {
168
- callToPassToForegroundService.current = undefined;
135
+ _keepCallAliveHeadlessTask.keepCallAliveCallRef.current = undefined;
169
136
  // stop foreground service when the call is not active
170
- notifeeLib.default.stopForegroundService();
137
+ stopForegroundServiceNoThrow();
171
138
  foregroundServiceStartedRef.current = false;
172
139
  } else {
173
- notifeeLib.default.getDisplayedNotifications().then(displayedNotifications => {
174
- const activeCallNotification = displayedNotifications.find(notification => notification.id === activeCallCid);
175
- if (activeCallNotification) {
176
- callToPassToForegroundService.current = undefined;
177
- // this means that we have a incoming call notification shown as foreground service and we must stop it
178
- notifeeLib.default.stopForegroundService();
179
- }
180
- });
140
+ if (notifeeLib) {
141
+ notifeeLib.default.getDisplayedNotifications().then(displayedNotifications => {
142
+ const activeCallNotification = displayedNotifications.find(notification => notification.id === activeCallCid);
143
+ if (activeCallNotification) {
144
+ // this means that we have a incoming call notification shown as foreground service and we must stop it
145
+ notifeeLib.default.stopForegroundService();
146
+ }
147
+ });
148
+ }
181
149
  }
182
150
  }
183
151
  return undefined;
184
- }, [activeCallCid, callingState, shouldStartForegroundService]);
152
+ }, [activeCallCid, callingState, shouldStartForegroundService, isRingingCall]);
185
153
  (0, _react.useEffect)(() => {
186
154
  return () => {
187
155
  // stop foreground service when this effect is unmounted
188
156
  if (foregroundServiceStartedRef.current) {
189
- if (!notifeeLib) return;
190
- callToPassToForegroundService.current = undefined;
191
- notifeeLib.default.stopForegroundService();
157
+ _keepCallAliveHeadlessTask.keepCallAliveCallRef.current = undefined;
158
+ stopForegroundServiceNoThrow();
192
159
  foregroundServiceStartedRef.current = false;
193
160
  }
194
161
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_videoReactBindings","require","_react","_utils","_reactNative","_videoClient","_notifee","notifeeLib","getNotifeeLibNoThrowForKeepCallAlive","callToPassToForegroundService","current","undefined","setForegroundService","Platform","OS","NativeModules","StreamVideoReactNative","isCallAliveConfigured","then","isConfigured","logger","videoLoggerSystem","getLogger","info","default","registerForegroundService","task","Promise","resolve","videoConfig","StreamVideoRN","getConfig","foregroundServiceConfig","foregroundService","taskToRun","android","call","warn","startForegroundService","call_cid","settings","getNotificationSettings","authorizationStatus","AuthorizationStatus","AUTHORIZED","notificationTexts","channelId","channel","id","createChannel","foregroundServiceTypes","getKeepCallAliveForegroundServiceTypes","requestAnimationFrame","displayNotification","title","body","smallIcon","push","asForegroundService","ongoing","colorized","pressAction","launchActivity","isSetForegroundServiceRan","useAndroidKeepCallAliveEffect","foregroundServiceStartedRef","useRef","useCall","activeCallCid","cid","useCallCallingState","useCallStateHooks","callingState","isOutgoingCall","CallingState","RINGING","isCreatedByMe","isCallJoined","JOINED","shouldStartForegroundService","useEffect","run","notifee","displayedNotifications","getDisplayedNotifications","activeCallNotification","find","notification","stopForegroundService","cancelDisplayedNotification","AppState","currentState","sub","addEventListener","nextAppState","remove","IDLE","LEFT","exports"],"sourceRoot":"../../../src","sources":["hooks/useAndroidKeepCallAliveEffect.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_videoReactBindings","require","_react","_utils","_reactNative","_videoClient","_keepCallAliveHeadlessTask","_notifee","_libs","notifeeLib","getNotifeeLibNoThrowForKeepCallAlive","stopForegroundServiceNoThrow","logger","videoLoggerSystem","getLogger","NativeModules","StreamVideoReactNative","stopKeepCallAliveService","e","warn","startForegroundService","call_cid","isCallAliveConfigured","info","hasPostNotificationsPermission","Number","Platform","Version","PermissionsAndroid","check","PERMISSIONS","POST_NOTIFICATIONS","videoConfig","StreamVideoRN","getConfig","foregroundServiceConfig","foregroundService","notificationTexts","android","channel","smallIconName","push","smallIcon","requestAnimationFrame","startKeepCallAliveService","id","name","title","body","useAndroidKeepCallAliveEffect","foregroundServiceStartedRef","useRef","call","useCall","keepCallAliveCallRef","current","activeCallCid","cid","useCallCallingState","useCallStateHooks","callingState","isOutgoingCall","CallingState","RINGING","isCreatedByMe","isCallJoined","JOINED","isRingingCall","ringing","shouldStartForegroundService","useEffect","OS","undefined","callingx","getCallingxLibIfAvailable","isSetup","isOngoingCallsEnabled","run","notifee","default","displayedNotifications","getDisplayedNotifications","activeCallNotification","find","notification","stopForegroundService","cancelDisplayedNotification","AppState","currentState","sub","addEventListener","nextAppState","remove","IDLE","LEFT","then","exports"],"sourceRoot":"../../../src","sources":["hooks/useAndroidKeepCallAliveEffect.ts"],"mappings":";;;;;;AAAA,IAAAA,mBAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,YAAA,GAAAH,OAAA;AAOA,IAAAI,YAAA,GAAAJ,OAAA;AACA,IAAAK,0BAAA,GAAAL,OAAA;AACA,IAAAM,QAAA,GAAAN,OAAA;AACA,IAAAO,KAAA,GAAAP,OAAA;AAEA,MAAMQ,UAAU,GAAG,IAAAC,6CAAoC,EAAC,CAAC;AAEzD,eAAeC,4BAA4BA,CAAA,EAAG;EAC5C,MAAMC,MAAM,GAAGC,8BAAiB,CAACC,SAAS,CAAC,8BAA8B,CAAC;EAC1E,IAAI;IACF,MAAMC,0BAAa,CAACC,sBAAsB,CAACC,wBAAwB,CAAC,CAAC;EACvE,CAAC,CAAC,OAAOC,CAAC,EAAE;IACVN,MAAM,CAACO,IAAI,CAAC,mDAAmD,EAAED,CAAC,CAAC;EACrE;AACF;AAEA,eAAeE,sBAAsBA,CAACC,QAAgB,EAAE;EACtD,MAAMT,MAAM,GAAGC,8BAAiB,CAACC,SAAS,CAAC,wBAAwB,CAAC;EACpE,MAAMQ,qBAAqB,GAAG,MAAM,CAAC,YAAY;IAC/C,IAAI;MACF,OAAO,MAAMP,0BAAa,CAACC,sBAAsB,CAACM,qBAAqB,CAAC,CAAC;IAC3E,CAAC,CAAC,OAAOJ,CAAC,EAAE;MACVN,MAAM,CAACO,IAAI,CAAC,qDAAqD,EAAED,CAAC,CAAC;MACrE,OAAO,KAAK;IACd;EACF,CAAC,EAAE,CAAC;EACJ,IAAI,CAACI,qBAAqB,EAAE;IAC1BV,MAAM,CAACW,IAAI,CACT,qEACF,CAAC;IACD;EACF;EACA;EACA,MAAMC,8BAA8B,GAClCC,MAAM,CAACC,qBAAQ,CAACC,OAAO,CAAC,GAAG,EAAE,KAC5B,MAAMC,+BAAkB,CAACC,KAAK,CAC7BD,+BAAkB,CAACE,WAAW,CAACC,kBACjC,CAAC,CAAC;EACJ,IAAI,CAACP,8BAA8B,EAAE;IACnCZ,MAAM,CAACW,IAAI,CACT,8FACF,CAAC;IACD;EACF;EACA,MAAMS,WAAW,GAAGC,oBAAa,CAACC,SAAS,CAAC,CAAC;EAC7C,MAAMC,uBAAuB,GAAGH,WAAW,CAACI,iBAAiB;EAC7D,MAAMC,iBAAiB,GAAGF,uBAAuB,CAACG,OAAO,CAACD,iBAAiB;EAC3E,MAAME,OAAO,GAAGJ,uBAAuB,CAACG,OAAO,CAACC,OAAO;EACvD,MAAMC,aAAa,GAAGR,WAAW,CAACS,IAAI,EAAEH,OAAO,CAACI,SAAS;;EAEzD;EACA;EACA;EACAC,qBAAqB,CAAC,YAAY;IAChC,IAAI;MACF,MAAM5B,0BAAa,CAACC,sBAAsB,CAAC4B,yBAAyB,CAClEvB,QAAQ,EACRkB,OAAO,CAACM,EAAE,EACVN,OAAO,CAACO,IAAI,EACZT,iBAAiB,CAACU,KAAK,EACvBV,iBAAiB,CAACW,IAAI,EACtBR,aAAa,IAAI,IACnB,CAAC;IACH,CAAC,CAAC,OAAOtB,CAAC,EAAE;MACVN,MAAM,CAACO,IAAI,CAAC,oDAAoD,EAAED,CAAC,CAAC;IACtE;EACF,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM+B,6BAA6B,GAAGA,CAAA,KAAM;EACjD,MAAMC,2BAA2B,GAAG,IAAAC,aAAM,EAAC,KAAK,CAAC;EAEjD,MAAMC,IAAI,GAAG,IAAAC,2BAAO,EAAC,CAAC;EACtBC,+CAAoB,CAACC,OAAO,GAAGH,IAAI;EACnC,MAAMI,aAAa,GAAGJ,IAAI,EAAEK,GAAG;EAC/B,MAAM;IAAEC;EAAoB,CAAC,GAAG,IAAAC,qCAAiB,EAAC,CAAC;EACnD,MAAMC,YAAY,GAAGF,mBAAmB,CAAC,CAAC;EAE1C,MAAMG,cAAc,GAClBD,YAAY,KAAKE,yBAAY,CAACC,OAAO,IAAIX,IAAI,EAAEY,aAAa;EAC9D,MAAMC,YAAY,GAAGL,YAAY,KAAKE,yBAAY,CAACI,MAAM;EACzD,MAAMC,aAAa,GAAGf,IAAI,EAAEgB,OAAO;EAEnC,MAAMC,4BAA4B,GAChC,CAACnB,2BAA2B,CAACK,OAAO,KAAKM,cAAc,IAAII,YAAY,CAAC;EAE1E,IAAAK,gBAAS,EAAC,MAAgC;IACxC,IAAI5C,qBAAQ,CAAC6C,EAAE,KAAK,KAAK,IAAI,CAACf,aAAa,EAAE;MAC3C,OAAOgB,SAAS;IAClB;IAEA,MAAMC,QAAQ,GAAG,IAAAC,+BAAyB,EAAC,CAAC;IAC5C,IACED,QAAQ,EAAEE,OAAO,KAChBR,aAAa,IAAK,CAACA,aAAa,IAAIM,QAAQ,EAAEG,qBAAsB,CAAC,EACtE;MACA,OAAOJ,SAAS;IAClB;;IAEA;IACA,IAAIH,4BAA4B,EAAE;MAChC,MAAMQ,GAAG,GAAG,MAAAA,CAAA,KAAY;QACtB,IAAI3B,2BAA2B,CAACK,OAAO,EAAE;UACvC;QACF;QACA;QACA;QACA,IAAI9C,UAAU,EAAE;UACd,MAAMqE,OAAO,GAAGrE,UAAU,CAACsE,OAAO;UAClC,MAAMC,sBAAsB,GAC1B,MAAMF,OAAO,CAACG,yBAAyB,CAAC,CAAC;UAC3C,MAAMC,sBAAsB,GAAGF,sBAAsB,CAACG,IAAI,CACvDC,YAAY,IAAKA,YAAY,CAACvC,EAAE,KAAKW,aACxC,CAAC;UACD,IAAI0B,sBAAsB,EAAE;YAC1B;YACAJ,OAAO,CAACO,qBAAqB,CAAC,CAAC;YAC/BP,OAAO,CAACQ,2BAA2B,CAAC9B,aAAa,CAAC;UACpD;QACF;QAEA,MAAMpC,sBAAsB,CAACoC,aAAa,CAAC;QAC3CN,2BAA2B,CAACK,OAAO,GAAG,IAAI;MAC5C,CAAC;;MAED;MACA,IAAIgC,qBAAQ,CAACC,YAAY,KAAK,QAAQ,EAAE;QACtCX,GAAG,CAAC,CAAC;MACP;MACA,MAAMY,GAAG,GAAGF,qBAAQ,CAACG,gBAAgB,CACnC,QAAQ,EACPC,YAA4B,IAAK;QAChC,IAAIA,YAAY,KAAK,QAAQ,EAAE;UAC7Bd,GAAG,CAAC,CAAC;UACLY,GAAG,CAACG,MAAM,CAAC,CAAC;QACd;MACF,CACF,CAAC;MACD,OAAO,MAAM;QACXH,GAAG,CAACG,MAAM,CAAC,CAAC;MACd,CAAC;IACH,CAAC,MAAM,IAAIhC,YAAY,KAAKE,yBAAY,CAACC,OAAO,EAAE;MAChD,OAAO,MAAM;QACX;QACA;QACA,IAAItD,UAAU,EAAE;UACdA,UAAU,CAACsE,OAAO,CAACO,2BAA2B,CAAC9B,aAAa,CAAC;QAC/D;MACF,CAAC;IACH,CAAC,MAAM,IACLI,YAAY,KAAKE,yBAAY,CAAC+B,IAAI,IAClCjC,YAAY,KAAKE,yBAAY,CAACgC,IAAI,EAClC;MACA,IAAI5C,2BAA2B,CAACK,OAAO,EAAE;QACvCD,+CAAoB,CAACC,OAAO,GAAGiB,SAAS;QACxC;QACA7D,4BAA4B,CAAC,CAAC;QAC9BuC,2BAA2B,CAACK,OAAO,GAAG,KAAK;MAC7C,CAAC,MAAM;QACL,IAAI9C,UAAU,EAAE;UACdA,UAAU,CAACsE,OAAO,CACfE,yBAAyB,CAAC,CAAC,CAC3Bc,IAAI,CAAEf,sBAAsB,IAAK;YAChC,MAAME,sBAAsB,GAAGF,sBAAsB,CAACG,IAAI,CACvDC,YAAY,IAAKA,YAAY,CAACvC,EAAE,KAAKW,aACxC,CAAC;YACD,IAAI0B,sBAAsB,EAAE;cAC1B;cACAzE,UAAU,CAACsE,OAAO,CAACM,qBAAqB,CAAC,CAAC;YAC5C;UACF,CAAC,CAAC;QACN;MACF;IACF;IACA,OAAOb,SAAS;EAClB,CAAC,EAAE,CACDhB,aAAa,EACbI,YAAY,EACZS,4BAA4B,EAC5BF,aAAa,CACd,CAAC;EAEF,IAAAG,gBAAS,EAAC,MAAM;IACd,OAAO,MAAM;MACX;MACA,IAAIpB,2BAA2B,CAACK,OAAO,EAAE;QACvCD,+CAAoB,CAACC,OAAO,GAAGiB,SAAS;QACxC7D,4BAA4B,CAAC,CAAC;QAC9BuC,2BAA2B,CAACK,OAAO,GAAG,KAAK;MAC7C;IACF,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;AACR,CAAC;AAACyC,OAAA,CAAA/C,6BAAA,GAAAA,6BAAA","ignoreList":[]}
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useScreenShareAudioMixing = void 0;
7
+ var _react = require("react");
8
+ var _videoClient = require("@stream-io/video-client");
9
+ var _videoReactBindings = require("@stream-io/video-react-bindings");
10
+ var _ScreenShareAudioManager = require("../modules/ScreenShareAudioManager");
11
+ var _lib = require("../providers/NoiseCancellation/lib");
12
+ const logger = _videoClient.videoLoggerSystem.getLogger('useScreenShareAudioMixing');
13
+
14
+ /**
15
+ * Tries to disable noise cancellation so screen audio passes through
16
+ * unfiltered. Returns true if NC was disabled (and should be re-enabled later).
17
+ */
18
+ async function disableNoiseCancellation() {
19
+ try {
20
+ const nc = _lib.NoiseCancellationWrapper.getInstance();
21
+ const wasEnabled = await nc.isEnabled();
22
+ if (wasEnabled) {
23
+ await nc.disable();
24
+ logger.info('Noise cancellation disabled for screen share audio');
25
+ }
26
+ return wasEnabled;
27
+ } catch {
28
+ // NC module not installed or not configured — nothing to do
29
+ return false;
30
+ }
31
+ }
32
+
33
+ /**
34
+ * Re-enables noise cancellation if it was previously disabled.
35
+ */
36
+ async function restoreNoiseCancellation() {
37
+ try {
38
+ const nc = _lib.NoiseCancellationWrapper.getInstance();
39
+ await nc.enable();
40
+ logger.info('Noise cancellation re-enabled after screen share audio');
41
+ } catch {
42
+ // NC module not installed — nothing to do
43
+ }
44
+ }
45
+
46
+ /**
47
+ * Hook that manages the lifecycle of screen share audio mixing.
48
+ *
49
+ * When screen share is active and audio mixing is enabled
50
+ * (via `call.screenShare.enableScreenShareAudio()`), this hook
51
+ * calls the native module to mix captured screen/app audio
52
+ * into the microphone audio track.
53
+ *
54
+ * Noise cancellation is temporarily disabled while screen audio mixing
55
+ * is active so that all captured sounds (music, game audio, etc.)
56
+ * pass through without being filtered.
57
+ */
58
+ const useScreenShareAudioMixing = () => {
59
+ const call = (0, _videoReactBindings.useCall)();
60
+ const {
61
+ useLocalParticipant
62
+ } = (0, _videoReactBindings.useCallStateHooks)();
63
+ const localParticipant = useLocalParticipant();
64
+ const isScreenSharing = localParticipant != null && (0, _videoClient.hasScreenShare)(localParticipant);
65
+ const [audioEnabled, setAudioEnabled] = (0, _react.useState)(() => call?.screenShare.state.audioEnabled ?? false);
66
+ const isMixingActiveRef = (0, _react.useRef)(false);
67
+ const ncWasEnabledRef = (0, _react.useRef)(false);
68
+ (0, _react.useEffect)(() => {
69
+ if (!call) return;
70
+ const sub = call.screenShare.state.audioEnabled$.subscribe(setAudioEnabled);
71
+ return () => sub.unsubscribe();
72
+ }, [call]);
73
+ const startMixing = (0, _react.useCallback)(async () => {
74
+ if (isMixingActiveRef.current) return;
75
+ try {
76
+ // Disable NC before starting mixing so screen audio is not filtered
77
+ ncWasEnabledRef.current = await disableNoiseCancellation();
78
+ logger.info('Starting screen share audio mixing');
79
+ await _ScreenShareAudioManager.screenShareAudioMixingManager.startScreenShareAudioMixing();
80
+ isMixingActiveRef.current = true;
81
+ } catch (error) {
82
+ logger.warn('Failed to start screen share audio mixing', error);
83
+ if (ncWasEnabledRef.current) {
84
+ restoreNoiseCancellation().catch(() => {});
85
+ ncWasEnabledRef.current = false;
86
+ }
87
+ }
88
+ }, []);
89
+ const stopMixing = (0, _react.useCallback)(async () => {
90
+ if (!isMixingActiveRef.current) return;
91
+ try {
92
+ logger.info('Stopping screen share audio mixing');
93
+ await _ScreenShareAudioManager.screenShareAudioMixingManager.stopScreenShareAudioMixing();
94
+ isMixingActiveRef.current = false;
95
+ if (ncWasEnabledRef.current) {
96
+ await restoreNoiseCancellation();
97
+ ncWasEnabledRef.current = false;
98
+ }
99
+ } catch (error) {
100
+ logger.warn('Failed to stop screen share audio mixing', error);
101
+ }
102
+ }, []);
103
+
104
+ // Start/stop audio mixing based on screen share status and audio preference
105
+ (0, _react.useEffect)(() => {
106
+ if (isScreenSharing && audioEnabled) {
107
+ startMixing();
108
+ } else {
109
+ stopMixing();
110
+ }
111
+ }, [isScreenSharing, audioEnabled, startMixing, stopMixing]);
112
+ (0, _react.useEffect)(() => {
113
+ return () => {
114
+ if (isMixingActiveRef.current) {
115
+ _ScreenShareAudioManager.screenShareAudioMixingManager.stopScreenShareAudioMixing().catch(() => {});
116
+ isMixingActiveRef.current = false;
117
+ if (ncWasEnabledRef.current) {
118
+ restoreNoiseCancellation().catch(() => {});
119
+ ncWasEnabledRef.current = false;
120
+ }
121
+ }
122
+ };
123
+ }, []);
124
+ };
125
+ exports.useScreenShareAudioMixing = useScreenShareAudioMixing;
126
+ //# sourceMappingURL=useScreenShareAudioMixing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_videoClient","_videoReactBindings","_ScreenShareAudioManager","_lib","logger","videoLoggerSystem","getLogger","disableNoiseCancellation","nc","NoiseCancellationWrapper","getInstance","wasEnabled","isEnabled","disable","info","restoreNoiseCancellation","enable","useScreenShareAudioMixing","call","useCall","useLocalParticipant","useCallStateHooks","localParticipant","isScreenSharing","hasScreenShare","audioEnabled","setAudioEnabled","useState","screenShare","state","isMixingActiveRef","useRef","ncWasEnabledRef","useEffect","sub","audioEnabled$","subscribe","unsubscribe","startMixing","useCallback","current","screenShareAudioMixingManager","startScreenShareAudioMixing","error","warn","catch","stopMixing","stopScreenShareAudioMixing","exports"],"sourceRoot":"../../../src","sources":["hooks/useScreenShareAudioMixing.ts"],"mappings":"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","ignoreList":[]}
@@ -10,9 +10,25 @@ var _react = require("react");
10
10
  var _reactNative = require("react-native");
11
11
  var _hooks = require("../utils/hooks");
12
12
  var _useIsIosScreenshareBroadcastStarted = require("./useIsIosScreenshareBroadcastStarted");
13
+ var _ScreenShareAudioManager = require("../modules/ScreenShareAudioManager");
14
+ /**
15
+ * The type of screen sharing to use on iOS.
16
+ *
17
+ * - `'broadcast'` — Uses a Broadcast Upload Extension (RPSystemBroadcastPickerView).
18
+ * Captures the entire device screen, works across all apps. Requires an extension target.
19
+ * - `'inApp'` — Uses RPScreenRecorder.startCapture to capture the current app's screen.
20
+ * Only captures the current app. Supports `.audioApp` sample buffers for audio mixing.
21
+ *
22
+ * On Android, this option is ignored — the system screen capture dialog is always used.
23
+ */
24
+
25
+ /**
26
+ * Options for screen share behavior.
27
+ */
28
+
13
29
  // ios >= 14.0 or android - platform restrictions
14
30
  const CanDeviceScreenShare = _reactNative.Platform.OS === 'ios' && Number.parseInt(_reactNative.Platform.Version?.split('.')[0] ?? '0', 10) >= 14 || _reactNative.Platform.OS === 'android';
15
- const useScreenShareButton = (screenCapturePickerViewiOSRef, onScreenShareStartedHandler, onScreenShareStoppedHandler, onMissingScreenShareStreamPermission) => {
31
+ const useScreenShareButton = (screenCapturePickerViewiOSRef, onScreenShareStartedHandler, onScreenShareStoppedHandler, onMissingScreenShareStreamPermission, screenShareOptions) => {
16
32
  const call = (0, _videoReactBindings.useCall)();
17
33
  const {
18
34
  useLocalParticipant,
@@ -23,6 +39,8 @@ const useScreenShareButton = (screenCapturePickerViewiOSRef, onScreenShareStarte
23
39
  const ownCapabilities = useOwnCapabilities();
24
40
  const hasScreenSharingPermissions = ownCapabilities?.includes(_videoClient.OwnCapability.SCREENSHARE);
25
41
  const isScreenSharingEnabledInCall = callSettings?.screensharing.enabled;
42
+ const screenShareType = screenShareOptions?.type ?? 'broadcast';
43
+ const includeAudio = screenShareOptions?.includeAudio ?? false;
26
44
  const onScreenShareStartedHandlerRef = (0, _react.useRef)(onScreenShareStartedHandler);
27
45
  onScreenShareStartedHandlerRef.current = onScreenShareStartedHandler;
28
46
  const onScreenShareStoppedHandlerRef = (0, _react.useRef)(onScreenShareStoppedHandler);
@@ -33,31 +51,63 @@ const useScreenShareButton = (screenCapturePickerViewiOSRef, onScreenShareStarte
33
51
  const hasPublishedScreenShare = localParticipant && (0, _videoClient.hasScreenShare)(localParticipant);
34
52
 
35
53
  // listens to iOS screen share broadcast started event from the system
54
+ // (only relevant for broadcast mode)
36
55
  (0, _react.useEffect)(() => {
37
56
  if (_reactNative.Platform.OS !== 'ios') {
38
57
  return;
39
58
  }
59
+ if (screenShareType !== 'broadcast') {
60
+ return;
61
+ }
40
62
  if (iosScreenShareStartedFromSystem && !prevIosScreenShareStartedFromSystem) {
41
63
  onScreenShareStartedHandlerRef.current?.();
64
+ if (includeAudio) {
65
+ call?.screenShare.enableScreenShareAudio();
66
+ }
42
67
  call?.screenShare.enable();
43
68
  } else if (!iosScreenShareStartedFromSystem && prevIosScreenShareStartedFromSystem) {
44
69
  onScreenShareStoppedHandlerRef.current?.();
45
70
  call?.screenShare.disable(true);
46
71
  }
47
- }, [call, iosScreenShareStartedFromSystem, prevIosScreenShareStartedFromSystem]);
72
+ }, [call, includeAudio, screenShareType, iosScreenShareStartedFromSystem, prevIosScreenShareStartedFromSystem]);
48
73
  const onPress = async () => {
49
74
  if (!hasScreenSharingPermissions) {
50
75
  const logger = _videoClient.videoLoggerSystem.getLogger('useScreenShareButton');
51
76
  logger.info('User does not have permissions to stream the screen share media, calling onMissingScreenShareStreamPermission handler if present');
52
77
  onMissingScreenShareStreamPermission?.();
78
+ return;
53
79
  }
54
80
  if (!hasPublishedScreenShare) {
55
- if (_reactNative.Platform.OS === 'ios') {
81
+ // Set audio mixing preference before starting screen share
82
+ if (includeAudio) {
83
+ call?.screenShare.enableScreenShareAudio();
84
+ } else {
85
+ try {
86
+ await call?.screenShare.disableScreenShareAudio();
87
+ } catch (error) {
88
+ const logger = _videoClient.videoLoggerSystem.getLogger('useScreenShareButton');
89
+ logger.warn('Failed to disable screen share audio', error);
90
+ }
91
+ }
92
+ if (_reactNative.Platform.OS === 'ios' && screenShareType === 'inApp') {
93
+ // In-app screen sharing on iOS — uses RPScreenRecorder directly
94
+ try {
95
+ await _ScreenShareAudioManager.screenShareAudioMixingManager.startInAppScreenCapture(includeAudio);
96
+ await call?.screenShare.enable();
97
+ onScreenShareStartedHandler?.();
98
+ } catch (error) {
99
+ await _ScreenShareAudioManager.screenShareAudioMixingManager.stopInAppScreenCapture();
100
+ const logger = _videoClient.videoLoggerSystem.getLogger('useScreenShareButton');
101
+ logger.warn('Failed to start in-app screen capture', error);
102
+ }
103
+ } else if (_reactNative.Platform.OS === 'ios') {
104
+ // Broadcast screen sharing on iOS — shows the system picker
56
105
  const reactTag = (0, _reactNative.findNodeHandle)(screenCapturePickerViewiOSRef.current);
57
106
  await _reactNative.NativeModules.ScreenCapturePickerViewManager.show(reactTag);
58
107
  // After this the iOS screen share broadcast started/stopped event will be triggered
59
108
  // and the useEffect listener will handle the rest
60
109
  } else {
110
+ // Android screen sharing
61
111
  try {
62
112
  await call?.screenShare.enable();
63
113
  onScreenShareStartedHandler?.();
@@ -69,6 +119,10 @@ const useScreenShareButton = (screenCapturePickerViewiOSRef, onScreenShareStarte
69
119
  }
70
120
  } else if (hasPublishedScreenShare) {
71
121
  onScreenShareStoppedHandler?.();
122
+ // Stop in-app screen capture if it was active (iOS only)
123
+ if (_reactNative.Platform.OS === 'ios' && screenShareType === 'inApp') {
124
+ await _ScreenShareAudioManager.screenShareAudioMixingManager.stopInAppScreenCapture();
125
+ }
72
126
  await call?.screenShare.disable(true);
73
127
  }
74
128
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_videoClient","require","_videoReactBindings","_react","_reactNative","_hooks","_useIsIosScreenshareBroadcastStarted","CanDeviceScreenShare","Platform","OS","Number","parseInt","Version","split","useScreenShareButton","screenCapturePickerViewiOSRef","onScreenShareStartedHandler","onScreenShareStoppedHandler","onMissingScreenShareStreamPermission","call","useCall","useLocalParticipant","useCallSettings","useOwnCapabilities","useCallStateHooks","callSettings","ownCapabilities","hasScreenSharingPermissions","includes","OwnCapability","SCREENSHARE","isScreenSharingEnabledInCall","screensharing","enabled","onScreenShareStartedHandlerRef","useRef","current","onScreenShareStoppedHandlerRef","iosScreenShareStartedFromSystem","useIsIosScreenshareBroadcastStarted","prevIosScreenShareStartedFromSystem","usePrevious","localParticipant","hasPublishedScreenShare","hasScreenShare","useEffect","screenShare","enable","disable","onPress","logger","videoLoggerSystem","getLogger","info","reactTag","findNodeHandle","NativeModules","ScreenCapturePickerViewManager","show","error","undefined","exports"],"sourceRoot":"../../../src","sources":["hooks/useScreenShareButton.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_videoClient","require","_videoReactBindings","_react","_reactNative","_hooks","_useIsIosScreenshareBroadcastStarted","_ScreenShareAudioManager","CanDeviceScreenShare","Platform","OS","Number","parseInt","Version","split","useScreenShareButton","screenCapturePickerViewiOSRef","onScreenShareStartedHandler","onScreenShareStoppedHandler","onMissingScreenShareStreamPermission","screenShareOptions","call","useCall","useLocalParticipant","useCallSettings","useOwnCapabilities","useCallStateHooks","callSettings","ownCapabilities","hasScreenSharingPermissions","includes","OwnCapability","SCREENSHARE","isScreenSharingEnabledInCall","screensharing","enabled","screenShareType","type","includeAudio","onScreenShareStartedHandlerRef","useRef","current","onScreenShareStoppedHandlerRef","iosScreenShareStartedFromSystem","useIsIosScreenshareBroadcastStarted","prevIosScreenShareStartedFromSystem","usePrevious","localParticipant","hasPublishedScreenShare","hasScreenShare","useEffect","screenShare","enableScreenShareAudio","enable","disable","onPress","logger","videoLoggerSystem","getLogger","info","disableScreenShareAudio","error","warn","screenShareAudioMixingManager","startInAppScreenCapture","stopInAppScreenCapture","reactTag","findNodeHandle","NativeModules","ScreenCapturePickerViewManager","show","undefined","exports"],"sourceRoot":"../../../src","sources":["hooks/useScreenShareButton.ts"],"mappings":"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","ignoreList":[]}
@@ -27,6 +27,7 @@ var _reactNativeWebrtc = require("@stream-io/react-native-webrtc");
27
27
  var _Logger = _interopRequireDefault(require("@stream-io/react-native-webrtc/src/Logger"));
28
28
  var _reactNative = require("react-native");
29
29
  var _registerSDKGlobals = require("./utils/internal/registerSDKGlobals");
30
+ require("./utils/keepCallAliveHeadlessTask");
30
31
  var _videoClient = require("@stream-io/video-client");
31
32
  Object.keys(_videoClient).forEach(function (key) {
32
33
  if (key === "default" || key === "__esModule") return;
@@ -1 +1 @@
1
- {"version":3,"names":["_setClientDetails","require","_reactNativeWebrtc","_Logger","_interopRequireDefault","_reactNative","_registerSDKGlobals","_videoClient","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_videoReactBindings","_components","_contexts","_hooks","_theme","_utils","_translations","_callManager","_StreamVideo","_StreamCall","_NoiseCancellation","e","__esModule","default","Platform","OS","registerGlobals","registerSDKGlobals","Logger","enable","ROOT_PREFIX","setClientDetails"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_setClientDetails","require","_reactNativeWebrtc","_Logger","_interopRequireDefault","_reactNative","_registerSDKGlobals","_videoClient","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_videoReactBindings","_components","_contexts","_hooks","_theme","_utils","_translations","_callManager","_StreamVideo","_StreamCall","_NoiseCancellation","e","__esModule","default","Platform","OS","registerGlobals","registerSDKGlobals","Logger","enable","ROOT_PREFIX","setClientDetails"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,iBAAA,GAAAC,OAAA;AAEAA,OAAA;AAEAA,OAAA;AAEAA,OAAA;AACA,IAAAC,kBAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,YAAA,GAAAJ,OAAA;AACA,IAAAK,mBAAA,GAAAL,OAAA;AACAA,OAAA;AAaA,IAAAM,YAAA,GAAAN,OAAA;AAAAO,MAAA,CAAAC,IAAA,CAAAF,YAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,YAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,YAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,mBAAA,GAAAnB,OAAA;AAAAO,MAAA,CAAAC,IAAA,CAAAW,mBAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,mBAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,mBAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AACA,IAAAU,WAAA,GAAApB,OAAA;AAAAO,MAAA,CAAAC,IAAA,CAAAY,WAAA,EAAAX,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAU,WAAA,CAAAV,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,WAAA,CAAAV,GAAA;IAAA;EAAA;AAAA;AACA,IAAAW,SAAA,GAAArB,OAAA;AAAAO,MAAA,CAAAC,IAAA,CAAAa,SAAA,EAAAZ,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAW,SAAA,CAAAX,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAG,SAAA,CAAAX,GAAA;IAAA;EAAA;AAAA;AACA,IAAAY,MAAA,GAAAtB,OAAA;AAAAO,MAAA,CAAAC,IAAA,CAAAc,MAAA,EAAAb,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAY,MAAA,CAAAZ,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAI,MAAA,CAAAZ,GAAA;IAAA;EAAA;AAAA;AACA,IAAAa,MAAA,GAAAvB,OAAA;AAAAO,MAAA,CAAAC,IAAA,CAAAe,MAAA,EAAAd,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAa,MAAA,CAAAb,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAK,MAAA,CAAAb,GAAA;IAAA;EAAA;AAAA;AACA,IAAAc,MAAA,GAAAxB,OAAA;AAAAO,MAAA,CAAAC,IAAA,CAAAgB,MAAA,EAAAf,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAc,MAAA,CAAAd,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAM,MAAA,CAAAd,GAAA;IAAA;EAAA;AAAA;AACA,IAAAe,aAAA,GAAAzB,OAAA;AAAAO,MAAA,CAAAC,IAAA,CAAAiB,aAAA,EAAAhB,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAe,aAAA,CAAAf,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAO,aAAA,CAAAf,GAAA;IAAA;EAAA;AAAA;AACA,IAAAgB,YAAA,GAAA1B,OAAA;AAAAO,MAAA,CAAAC,IAAA,CAAAkB,YAAA,EAAAjB,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAgB,YAAA,CAAAhB,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAQ,YAAA,CAAAhB,GAAA;IAAA;EAAA;AAAA;AAIA,IAAAiB,YAAA,GAAA3B,OAAA;AACA,IAAA4B,WAAA,GAAA5B,OAAA;AACA,IAAA6B,kBAAA,GAAA7B,OAAA;AAAAO,MAAA,CAAAC,IAAA,CAAAqB,kBAAA,EAAApB,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAmB,kBAAA,CAAAnB,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAW,kBAAA,CAAAnB,GAAA;IAAA;EAAA;AAAA;AAA8C,SAAAP,uBAAA2B,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AArC9C;;AAEA;;AAEA;;AAQA;AACA;AACA;AACA,IAAIG,qBAAQ,CAACC,EAAE,KAAK,KAAK,EAAE;EACzB,IAAAC,kCAAe,EAAC,CAAC;EACjB,IAAAC,sCAAkB,EAAC,CAAC;AACtB;;AAEA;AACAC,eAAM,CAACC,MAAM,CAAC,GAAGD,eAAM,CAACE,WAAW,eAAe,CAAC;;AAYnD;AACA;;AAKA,IAAAC,kCAAgB,EAAC,CAAC","ignoreList":[]}