@stream-io/video-react-native-sdk 2.0.0-beta.0 → 2.0.0-beta.2

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 (263) hide show
  1. package/CHANGELOG.md +95 -0
  2. package/README.md +15 -0
  3. package/android/build.gradle +7 -1
  4. package/android/src/main/java/com/streamvideo/reactnative/audio/AudioDeviceManager.kt +110 -58
  5. package/android/src/main/java/com/streamvideo/reactnative/audio/CommunicationModeKeepAlive.kt +247 -0
  6. package/android/src/main/java/com/streamvideo/reactnative/callmanager/StreamInCallManagerModule.kt +16 -5
  7. package/dist/commonjs/components/Call/CallContent/CallContent.js +1 -1
  8. package/dist/commonjs/components/Call/CallContent/CallContent.js.map +1 -1
  9. package/dist/commonjs/components/Call/CallContent/RTCViewPipIOS.js +78 -7
  10. package/dist/commonjs/components/Call/CallContent/RTCViewPipIOS.js.map +1 -1
  11. package/dist/commonjs/components/Call/CallContent/RTCViewPipNative.js +3 -0
  12. package/dist/commonjs/components/Call/CallContent/RTCViewPipNative.js.map +1 -1
  13. package/dist/commonjs/components/Call/Lobby/JoinCallButton.js +3 -2
  14. package/dist/commonjs/components/Call/Lobby/JoinCallButton.js.map +1 -1
  15. package/dist/commonjs/components/Call/Lobby/Lobby.js +4 -3
  16. package/dist/commonjs/components/Call/Lobby/Lobby.js.map +1 -1
  17. package/dist/commonjs/components/Call/Lobby/LobbyFooter.js +10 -10
  18. package/dist/commonjs/components/Call/Lobby/LobbyFooter.js.map +1 -1
  19. package/dist/commonjs/components/Call/RingingCallContent/CallLeftIndicator.js +3 -3
  20. package/dist/commonjs/components/Call/RingingCallContent/CallLeftIndicator.js.map +1 -1
  21. package/dist/commonjs/components/Call/RingingCallContent/CallPreparingIndicator.js +3 -3
  22. package/dist/commonjs/components/Call/RingingCallContent/CallPreparingIndicator.js.map +1 -1
  23. package/dist/commonjs/components/Call/RingingCallContent/IncomingCall.js +3 -2
  24. package/dist/commonjs/components/Call/RingingCallContent/IncomingCall.js.map +1 -1
  25. package/dist/commonjs/components/Call/RingingCallContent/OutgoingCall.js +7 -14
  26. package/dist/commonjs/components/Call/RingingCallContent/OutgoingCall.js.map +1 -1
  27. package/dist/commonjs/components/Livestream/LivestreamControls/HostStartStreamButton.js +3 -2
  28. package/dist/commonjs/components/Livestream/LivestreamControls/HostStartStreamButton.js.map +1 -1
  29. package/dist/commonjs/components/Livestream/LivestreamPlayer/LivestreamEnded.js +4 -3
  30. package/dist/commonjs/components/Livestream/LivestreamPlayer/LivestreamEnded.js.map +1 -1
  31. package/dist/commonjs/components/Livestream/LivestreamTopView/LiveIndicator.js +3 -3
  32. package/dist/commonjs/components/Livestream/LivestreamTopView/LiveIndicator.js.map +1 -1
  33. package/dist/commonjs/components/Livestream/ViewerLivestream/ViewerLobby.js +9 -4
  34. package/dist/commonjs/components/Livestream/ViewerLivestream/ViewerLobby.js.map +1 -1
  35. package/dist/commonjs/components/Participant/ParticipantView/ParticipantLabel.js +4 -3
  36. package/dist/commonjs/components/Participant/ParticipantView/ParticipantLabel.js.map +1 -1
  37. package/dist/commonjs/components/Participant/ParticipantView/VideoRenderer/TrackSubscriber.js +27 -4
  38. package/dist/commonjs/components/Participant/ParticipantView/VideoRenderer/TrackSubscriber.js.map +1 -1
  39. package/dist/commonjs/components/utility/ScreenShareOverlay.js +4 -3
  40. package/dist/commonjs/components/utility/ScreenShareOverlay.js.map +1 -1
  41. package/dist/commonjs/i18n/Streami18n.js +77 -0
  42. package/dist/commonjs/i18n/Streami18n.js.map +1 -0
  43. package/dist/commonjs/i18n/TranslationContext.js +52 -0
  44. package/dist/commonjs/i18n/TranslationContext.js.map +1 -0
  45. package/dist/commonjs/i18n/index.js +85 -0
  46. package/dist/commonjs/i18n/index.js.map +1 -0
  47. package/dist/commonjs/i18n/keys.js +2 -0
  48. package/dist/commonjs/i18n/keys.js.map +1 -0
  49. package/dist/commonjs/i18n/runtimeDefaults.js +24 -0
  50. package/dist/commonjs/i18n/runtimeDefaults.js.map +1 -0
  51. package/dist/commonjs/i18n/types.js +6 -0
  52. package/dist/commonjs/i18n/types.js.map +1 -0
  53. package/dist/commonjs/i18n/useStreami18n.js +61 -0
  54. package/dist/commonjs/i18n/useStreami18n.js.map +1 -0
  55. package/dist/commonjs/index.js +18 -5
  56. package/dist/commonjs/index.js.map +1 -1
  57. package/dist/commonjs/modules/encryption/EncryptionManager.js +305 -0
  58. package/dist/commonjs/modules/encryption/EncryptionManager.js.map +1 -0
  59. package/dist/commonjs/modules/encryption/eventMapping.js +143 -0
  60. package/dist/commonjs/modules/encryption/eventMapping.js.map +1 -0
  61. package/dist/commonjs/modules/encryption/index.js +13 -0
  62. package/dist/commonjs/modules/encryption/index.js.map +1 -0
  63. package/dist/commonjs/modules/encryption/parity.js +6 -0
  64. package/dist/commonjs/modules/encryption/parity.js.map +1 -0
  65. package/dist/commonjs/providers/NoiseCancellation/NoiseCancellationProvider.js +6 -2
  66. package/dist/commonjs/providers/NoiseCancellation/NoiseCancellationProvider.js.map +1 -1
  67. package/dist/commonjs/providers/StreamVideo.js +28 -12
  68. package/dist/commonjs/providers/StreamVideo.js.map +1 -1
  69. package/dist/commonjs/utils/StreamVideoRN/index.js +46 -0
  70. package/dist/commonjs/utils/StreamVideoRN/index.js.map +1 -1
  71. package/dist/commonjs/utils/internal/callingx/callingx.js +29 -4
  72. package/dist/commonjs/utils/internal/callingx/callingx.js.map +1 -1
  73. package/dist/commonjs/utils/internal/iosPipTrack.js +41 -0
  74. package/dist/commonjs/utils/internal/iosPipTrack.js.map +1 -0
  75. package/dist/commonjs/utils/internal/registerSDKGlobals.js +6 -0
  76. package/dist/commonjs/utils/internal/registerSDKGlobals.js.map +1 -1
  77. package/dist/commonjs/utils/internal/ringingCallLifecycle.js +142 -0
  78. package/dist/commonjs/utils/internal/ringingCallLifecycle.js.map +1 -0
  79. package/dist/commonjs/utils/push/internal/utils.js +4 -0
  80. package/dist/commonjs/utils/push/internal/utils.js.map +1 -1
  81. package/dist/commonjs/version.js +1 -1
  82. package/dist/module/components/Call/CallContent/CallContent.js +1 -1
  83. package/dist/module/components/Call/CallContent/CallContent.js.map +1 -1
  84. package/dist/module/components/Call/CallContent/RTCViewPipIOS.js +80 -9
  85. package/dist/module/components/Call/CallContent/RTCViewPipIOS.js.map +1 -1
  86. package/dist/module/components/Call/CallContent/RTCViewPipNative.js +3 -0
  87. package/dist/module/components/Call/CallContent/RTCViewPipNative.js.map +1 -1
  88. package/dist/module/components/Call/Lobby/JoinCallButton.js +3 -2
  89. package/dist/module/components/Call/Lobby/JoinCallButton.js.map +1 -1
  90. package/dist/module/components/Call/Lobby/Lobby.js +4 -3
  91. package/dist/module/components/Call/Lobby/Lobby.js.map +1 -1
  92. package/dist/module/components/Call/Lobby/LobbyFooter.js +10 -10
  93. package/dist/module/components/Call/Lobby/LobbyFooter.js.map +1 -1
  94. package/dist/module/components/Call/RingingCallContent/CallLeftIndicator.js +2 -2
  95. package/dist/module/components/Call/RingingCallContent/CallLeftIndicator.js.map +1 -1
  96. package/dist/module/components/Call/RingingCallContent/CallPreparingIndicator.js +2 -2
  97. package/dist/module/components/Call/RingingCallContent/CallPreparingIndicator.js.map +1 -1
  98. package/dist/module/components/Call/RingingCallContent/IncomingCall.js +3 -2
  99. package/dist/module/components/Call/RingingCallContent/IncomingCall.js.map +1 -1
  100. package/dist/module/components/Call/RingingCallContent/OutgoingCall.js +7 -14
  101. package/dist/module/components/Call/RingingCallContent/OutgoingCall.js.map +1 -1
  102. package/dist/module/components/Livestream/LivestreamControls/HostStartStreamButton.js +3 -2
  103. package/dist/module/components/Livestream/LivestreamControls/HostStartStreamButton.js.map +1 -1
  104. package/dist/module/components/Livestream/LivestreamPlayer/LivestreamEnded.js +4 -3
  105. package/dist/module/components/Livestream/LivestreamPlayer/LivestreamEnded.js.map +1 -1
  106. package/dist/module/components/Livestream/LivestreamTopView/LiveIndicator.js +2 -2
  107. package/dist/module/components/Livestream/LivestreamTopView/LiveIndicator.js.map +1 -1
  108. package/dist/module/components/Livestream/ViewerLivestream/ViewerLobby.js +9 -4
  109. package/dist/module/components/Livestream/ViewerLivestream/ViewerLobby.js.map +1 -1
  110. package/dist/module/components/Participant/ParticipantView/ParticipantLabel.js +4 -3
  111. package/dist/module/components/Participant/ParticipantView/ParticipantLabel.js.map +1 -1
  112. package/dist/module/components/Participant/ParticipantView/VideoRenderer/TrackSubscriber.js +28 -5
  113. package/dist/module/components/Participant/ParticipantView/VideoRenderer/TrackSubscriber.js.map +1 -1
  114. package/dist/module/components/utility/ScreenShareOverlay.js +4 -3
  115. package/dist/module/components/utility/ScreenShareOverlay.js.map +1 -1
  116. package/dist/module/i18n/Streami18n.js +73 -0
  117. package/dist/module/i18n/Streami18n.js.map +1 -0
  118. package/dist/module/i18n/TranslationContext.js +48 -0
  119. package/dist/module/i18n/TranslationContext.js.map +1 -0
  120. package/dist/module/i18n/index.js +20 -0
  121. package/dist/module/i18n/index.js.map +1 -0
  122. package/dist/module/i18n/keys.js +2 -0
  123. package/dist/module/i18n/keys.js.map +1 -0
  124. package/dist/module/i18n/runtimeDefaults.js +20 -0
  125. package/dist/module/i18n/runtimeDefaults.js.map +1 -0
  126. package/dist/module/i18n/types.js +4 -0
  127. package/dist/module/i18n/types.js.map +1 -0
  128. package/dist/module/i18n/useStreami18n.js +56 -0
  129. package/dist/module/i18n/useStreami18n.js.map +1 -0
  130. package/dist/module/index.js +6 -1
  131. package/dist/module/index.js.map +1 -1
  132. package/dist/module/modules/encryption/EncryptionManager.js +301 -0
  133. package/dist/module/modules/encryption/EncryptionManager.js.map +1 -0
  134. package/dist/module/modules/encryption/eventMapping.js +135 -0
  135. package/dist/module/modules/encryption/eventMapping.js.map +1 -0
  136. package/dist/module/modules/encryption/index.js +4 -0
  137. package/dist/module/modules/encryption/index.js.map +1 -0
  138. package/dist/module/modules/encryption/parity.js +4 -0
  139. package/dist/module/modules/encryption/parity.js.map +1 -0
  140. package/dist/module/providers/NoiseCancellation/NoiseCancellationProvider.js +6 -2
  141. package/dist/module/providers/NoiseCancellation/NoiseCancellationProvider.js.map +1 -1
  142. package/dist/module/providers/StreamVideo.js +29 -14
  143. package/dist/module/providers/StreamVideo.js.map +1 -1
  144. package/dist/module/utils/StreamVideoRN/index.js +46 -0
  145. package/dist/module/utils/StreamVideoRN/index.js.map +1 -1
  146. package/dist/module/utils/internal/callingx/callingx.js +29 -4
  147. package/dist/module/utils/internal/callingx/callingx.js.map +1 -1
  148. package/dist/module/utils/internal/iosPipTrack.js +35 -0
  149. package/dist/module/utils/internal/iosPipTrack.js.map +1 -0
  150. package/dist/module/utils/internal/registerSDKGlobals.js +6 -0
  151. package/dist/module/utils/internal/registerSDKGlobals.js.map +1 -1
  152. package/dist/module/utils/internal/ringingCallLifecycle.js +134 -0
  153. package/dist/module/utils/internal/ringingCallLifecycle.js.map +1 -0
  154. package/dist/module/utils/push/internal/utils.js +4 -0
  155. package/dist/module/utils/push/internal/utils.js.map +1 -1
  156. package/dist/module/version.js +1 -1
  157. package/dist/typescript/components/Call/CallContent/RTCViewPipIOS.d.ts.map +1 -1
  158. package/dist/typescript/components/Call/CallContent/RTCViewPipNative.d.ts +12 -0
  159. package/dist/typescript/components/Call/CallContent/RTCViewPipNative.d.ts.map +1 -1
  160. package/dist/typescript/components/Call/Lobby/JoinCallButton.d.ts.map +1 -1
  161. package/dist/typescript/components/Call/Lobby/Lobby.d.ts.map +1 -1
  162. package/dist/typescript/components/Call/Lobby/LobbyFooter.d.ts.map +1 -1
  163. package/dist/typescript/components/Call/RingingCallContent/OutgoingCall.d.ts.map +1 -1
  164. package/dist/typescript/components/Livestream/LivestreamControls/HostStartStreamButton.d.ts.map +1 -1
  165. package/dist/typescript/components/Livestream/LivestreamPlayer/LivestreamEnded.d.ts.map +1 -1
  166. package/dist/typescript/components/Livestream/ViewerLivestream/ViewerLobby.d.ts.map +1 -1
  167. package/dist/typescript/components/Participant/ParticipantView/ParticipantLabel.d.ts.map +1 -1
  168. package/dist/typescript/components/Participant/ParticipantView/VideoRenderer/TrackSubscriber.d.ts +11 -0
  169. package/dist/typescript/components/Participant/ParticipantView/VideoRenderer/TrackSubscriber.d.ts.map +1 -1
  170. package/dist/typescript/components/utility/ScreenShareOverlay.d.ts.map +1 -1
  171. package/dist/typescript/i18n/Streami18n.d.ts +61 -0
  172. package/dist/typescript/i18n/Streami18n.d.ts.map +1 -0
  173. package/dist/typescript/i18n/TranslationContext.d.ts +31 -0
  174. package/dist/typescript/i18n/TranslationContext.d.ts.map +1 -0
  175. package/dist/typescript/i18n/index.d.ts +17 -0
  176. package/dist/typescript/i18n/index.d.ts.map +1 -0
  177. package/dist/typescript/i18n/keys.d.ts +38 -0
  178. package/dist/typescript/i18n/keys.d.ts.map +1 -0
  179. package/dist/typescript/i18n/runtimeDefaults.d.ts +18 -0
  180. package/dist/typescript/i18n/runtimeDefaults.d.ts.map +1 -0
  181. package/dist/typescript/i18n/types.d.ts +46 -0
  182. package/dist/typescript/i18n/types.d.ts.map +1 -0
  183. package/dist/typescript/i18n/useStreami18n.d.ts +20 -0
  184. package/dist/typescript/i18n/useStreami18n.d.ts.map +1 -0
  185. package/dist/typescript/index.d.ts +2 -1
  186. package/dist/typescript/index.d.ts.map +1 -1
  187. package/dist/typescript/modules/encryption/EncryptionManager.d.ts +190 -0
  188. package/dist/typescript/modules/encryption/EncryptionManager.d.ts.map +1 -0
  189. package/dist/typescript/modules/encryption/eventMapping.d.ts +38 -0
  190. package/dist/typescript/modules/encryption/eventMapping.d.ts.map +1 -0
  191. package/dist/typescript/modules/encryption/index.d.ts +2 -0
  192. package/dist/typescript/modules/encryption/index.d.ts.map +1 -0
  193. package/dist/typescript/modules/encryption/parity.d.ts +55 -0
  194. package/dist/typescript/modules/encryption/parity.d.ts.map +1 -0
  195. package/dist/typescript/providers/NoiseCancellation/NoiseCancellationProvider.d.ts.map +1 -1
  196. package/dist/typescript/providers/StreamVideo.d.ts +17 -4
  197. package/dist/typescript/providers/StreamVideo.d.ts.map +1 -1
  198. package/dist/typescript/utils/StreamVideoRN/index.d.ts +33 -1
  199. package/dist/typescript/utils/StreamVideoRN/index.d.ts.map +1 -1
  200. package/dist/typescript/utils/StreamVideoRN/types.d.ts +67 -0
  201. package/dist/typescript/utils/StreamVideoRN/types.d.ts.map +1 -1
  202. package/dist/typescript/utils/internal/callingx/callingx.d.ts +1 -1
  203. package/dist/typescript/utils/internal/callingx/callingx.d.ts.map +1 -1
  204. package/dist/typescript/utils/internal/iosPipTrack.d.ts +9 -0
  205. package/dist/typescript/utils/internal/iosPipTrack.d.ts.map +1 -0
  206. package/dist/typescript/utils/internal/registerSDKGlobals.d.ts.map +1 -1
  207. package/dist/typescript/utils/internal/ringingCallLifecycle.d.ts +27 -0
  208. package/dist/typescript/utils/internal/ringingCallLifecycle.d.ts.map +1 -0
  209. package/dist/typescript/utils/push/internal/utils.d.ts.map +1 -1
  210. package/dist/typescript/version.d.ts +1 -1
  211. package/ios/RTCViewPip.swift +33 -8
  212. package/ios/RTCViewPipManager.mm +1 -0
  213. package/package.json +17 -13
  214. package/src/components/Call/CallContent/CallContent.tsx +1 -1
  215. package/src/components/Call/CallContent/RTCViewPipIOS.tsx +92 -10
  216. package/src/components/Call/CallContent/RTCViewPipNative.tsx +13 -0
  217. package/src/components/Call/Lobby/JoinCallButton.tsx +5 -2
  218. package/src/components/Call/Lobby/Lobby.tsx +6 -3
  219. package/src/components/Call/Lobby/LobbyFooter.tsx +15 -10
  220. package/src/components/Call/RingingCallContent/CallLeftIndicator.tsx +2 -2
  221. package/src/components/Call/RingingCallContent/CallPreparingIndicator.tsx +2 -2
  222. package/src/components/Call/RingingCallContent/IncomingCall.tsx +2 -2
  223. package/src/components/Call/RingingCallContent/OutgoingCall.tsx +7 -14
  224. package/src/components/Livestream/LivestreamControls/HostStartStreamButton.tsx +5 -8
  225. package/src/components/Livestream/LivestreamPlayer/LivestreamEnded.tsx +11 -3
  226. package/src/components/Livestream/LivestreamTopView/LiveIndicator.tsx +2 -2
  227. package/src/components/Livestream/ViewerLivestream/ViewerLobby.tsx +23 -10
  228. package/src/components/Participant/ParticipantView/ParticipantLabel.tsx +15 -6
  229. package/src/components/Participant/ParticipantView/VideoRenderer/TrackSubscriber.tsx +58 -5
  230. package/src/components/utility/ScreenShareOverlay.tsx +7 -3
  231. package/src/i18n/Streami18n.ts +71 -0
  232. package/src/i18n/TranslationContext.tsx +55 -0
  233. package/src/i18n/index.ts +22 -0
  234. package/src/i18n/keys.ts +42 -0
  235. package/src/i18n/runtimeDefaults.ts +17 -0
  236. package/src/i18n/types.ts +78 -0
  237. package/src/i18n/useStreami18n.ts +66 -0
  238. package/src/index.ts +6 -1
  239. package/src/modules/call-manager/native-module.d.ts +14 -0
  240. package/src/modules/encryption/EncryptionManager.ts +360 -0
  241. package/src/modules/encryption/eventMapping.ts +151 -0
  242. package/src/modules/encryption/index.ts +1 -0
  243. package/src/modules/encryption/parity.ts +83 -0
  244. package/src/providers/NoiseCancellation/NoiseCancellationProvider.tsx +8 -4
  245. package/src/providers/StreamVideo.tsx +39 -28
  246. package/src/utils/StreamVideoRN/index.ts +51 -1
  247. package/src/utils/StreamVideoRN/types.ts +68 -0
  248. package/src/utils/internal/callingx/callingx.ts +37 -2
  249. package/src/utils/internal/iosPipTrack.ts +39 -0
  250. package/src/utils/internal/registerSDKGlobals.ts +2 -0
  251. package/src/utils/internal/ringingCallLifecycle.ts +148 -0
  252. package/src/utils/push/internal/utils.ts +4 -0
  253. package/src/version.ts +1 -1
  254. package/dist/commonjs/translations/en.json +0 -32
  255. package/dist/commonjs/translations/index.js +0 -12
  256. package/dist/commonjs/translations/index.js.map +0 -1
  257. package/dist/module/translations/en.json +0 -32
  258. package/dist/module/translations/index.js +0 -7
  259. package/dist/module/translations/index.js.map +0 -1
  260. package/dist/typescript/translations/index.d.ts +0 -35
  261. package/dist/typescript/translations/index.d.ts.map +0 -1
  262. package/src/translations/en.json +0 -32
  263. package/src/translations/index.ts +0 -3
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Compile-time proof that the React Native {@link EncryptionManager} exposes the
3
+ * same public surface as the web one in `@stream-io/video-client`.
4
+ *
5
+ * This file has no runtime output and is imported by nothing. It exists because
6
+ * the SDK's entry point deliberately *shadows* the client's `EncryptionManager`
7
+ * export with this platform's implementation: a host writing against the
8
+ * documented API gets whichever class its platform ships, so the two surfaces
9
+ * diverging would be a silent break for that host rather than a build error.
10
+ * Both directions are asserted, so adding a method to either manager fails the
11
+ * build until the other one follows. Keep it that way, or delete both managers'
12
+ * claim to a shared API.
13
+ *
14
+ * `test:types` and the `tsc` pass in `bob build` both cover `src`, so CI runs
15
+ * this whether or not anything imports it.
16
+ */
17
+ import type { EncryptionManager as WebEncryptionManager } from '@stream-io/video-client';
18
+ import type { EncryptionManager } from './EncryptionManager';
19
+ /** Fails to compile unless `T` is exactly `true`. */
20
+ type AssertTrue<T extends true> = T;
21
+ /**
22
+ * Public members only.
23
+ *
24
+ * A class type carrying `private` members is nominal, so the two managers can
25
+ * never be compared as classes however identical their APIs. `keyof` yields
26
+ * public keys alone, which is also precisely the surface a host can touch.
27
+ */
28
+ type PublicSurface<T> = {
29
+ [K in keyof T]: T[K];
30
+ };
31
+ /**
32
+ * `emit` is public on the web manager only because it extends the shared
33
+ * `TypedEventEmitter`. Dispatching a forged E2EE event is not part of the
34
+ * documented API — `SPEC.md` §2 lists `on`/`off` and nothing else — so it is
35
+ * excluded here rather than mirrored on this side.
36
+ */
37
+ type WebSurface = Omit<PublicSurface<WebEncryptionManager>, 'emit'>;
38
+ type NativeSurface = PublicSurface<EncryptionManager>;
39
+ /** Every documented web member exists here, with a compatible signature. */
40
+ export type NativeCoversWeb = AssertTrue<NativeSurface extends WebSurface ? true : false>;
41
+ /**
42
+ * ...and nothing extra. A React Native-only method would compile fine but make
43
+ * host code silently unportable, which is the failure this file exists to catch.
44
+ */
45
+ export type WebCoversNative = AssertTrue<WebSurface extends NativeSurface ? true : false>;
46
+ /**
47
+ * The statics are checked by signature rather than by assignability: both
48
+ * `create`s return their own class, so comparing them whole would only ever
49
+ * restate that the two classes are nominally distinct.
50
+ */
51
+ export type CreateAcceptsSameArguments = AssertTrue<Parameters<typeof EncryptionManager.create> extends Parameters<typeof WebEncryptionManager.create> ? Parameters<typeof WebEncryptionManager.create> extends Parameters<typeof EncryptionManager.create> ? true : false : false>;
52
+ export type CreateResolvesAManager = AssertTrue<Awaited<ReturnType<typeof EncryptionManager.create>> extends NativeSurface ? true : false>;
53
+ export type IsSupportedMatches = AssertTrue<typeof EncryptionManager.isSupported extends typeof WebEncryptionManager.isSupported ? typeof WebEncryptionManager.isSupported extends typeof EncryptionManager.isSupported ? true : false : false>;
54
+ export {};
55
+ //# sourceMappingURL=parity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parity.d.ts","sourceRoot":"","sources":["../../../../src/modules/encryption/parity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,iBAAiB,IAAI,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACzF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,qDAAqD;AACrD,KAAK,UAAU,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;AAEpC;;;;;;GAMG;AACH,KAAK,aAAa,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC;AAEjD;;;;;GAKG;AACH,KAAK,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC,CAAC;AACpE,KAAK,aAAa,GAAG,aAAa,CAAC,iBAAiB,CAAC,CAAC;AAEtD,4EAA4E;AAC5E,MAAM,MAAM,eAAe,GAAG,UAAU,CACtC,aAAa,SAAS,UAAU,GAAG,IAAI,GAAG,KAAK,CAChD,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,UAAU,CACtC,UAAU,SAAS,aAAa,GAAG,IAAI,GAAG,KAAK,CAChD,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,0BAA0B,GAAG,UAAU,CACjD,UAAU,CAAC,OAAO,iBAAiB,CAAC,MAAM,CAAC,SAAS,UAAU,CAC5D,OAAO,oBAAoB,CAAC,MAAM,CACnC,GACG,UAAU,CAAC,OAAO,oBAAoB,CAAC,MAAM,CAAC,SAAS,UAAU,CAC/D,OAAO,iBAAiB,CAAC,MAAM,CAChC,GACC,IAAI,GACJ,KAAK,GACP,KAAK,CACV,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,UAAU,CAC7C,OAAO,CAAC,UAAU,CAAC,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC,SAAS,aAAa,GACtE,IAAI,GACJ,KAAK,CACV,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,UAAU,CACzC,OAAO,iBAAiB,CAAC,WAAW,SAAS,OAAO,oBAAoB,CAAC,WAAW,GAChF,OAAO,oBAAoB,CAAC,WAAW,SAAS,OAAO,iBAAiB,CAAC,WAAW,GAClF,IAAI,GACJ,KAAK,GACP,KAAK,CACV,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"NoiseCancellationProvider.d.ts","sourceRoot":"","sources":["../../../../src/providers/NoiseCancellation/NoiseCancellationProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAEZ,iBAAiB,EAIlB,MAAM,OAAO,CAAC;AAaf;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC;;;;OAIG;IACH,qCAAqC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3D;;;OAGG;IACH,WAAW,EAAE,OAAO,GAAG,SAAS,CAAC;IACjC;;OAEG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,KAAK,IAAI,CAAC;CACxE,CAAC;AAMF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,QAAO,oBAQvC,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAI,OAAO,iBAAiB,CAAC,EAAE,CAAC,sBAkFrE,CAAC"}
1
+ {"version":3,"file":"NoiseCancellationProvider.d.ts","sourceRoot":"","sources":["../../../../src/providers/NoiseCancellation/NoiseCancellationProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAEZ,iBAAiB,EAIlB,MAAM,OAAO,CAAC;AAaf;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC;;;;OAIG;IACH,qCAAqC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3D;;;OAGG;IACH,WAAW,EAAE,OAAO,GAAG,SAAS,CAAC;IACjC;;OAEG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,KAAK,IAAI,CAAC;CACxE,CAAC;AAMF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,QAAO,oBAQvC,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAI,OAAO,iBAAiB,CAAC,EAAE,CAAC,sBAsFrE,CAAC"}
@@ -1,15 +1,28 @@
1
- import { type StreamI18nProviderProps, type StreamVideoProps } from '@stream-io/video-react-bindings';
1
+ import { type StreamVideoProviderProps } from '@stream-io/video-react-bindings';
2
2
  import React, { type PropsWithChildren } from 'react';
3
+ import { type UseStreami18nParams } from '../i18n';
3
4
  import { type DeepPartial } from '../contexts/ThemeContext';
4
5
  import { type Theme } from '../theme/theme';
6
+ export type StreamVideoProps = StreamVideoProviderProps & UseStreami18nParams & {
7
+ style?: DeepPartial<Theme>;
8
+ };
5
9
  /**
10
+ * StreamVideo is the root provider of the SDK: it provides the client to the component tree and
11
+ * mounts the SDK's translation context.
12
+ *
13
+ * The i18n runtime lives here rather than in `@stream-io/video-react-bindings` because the
14
+ * translation key catalog is generated from *this* package's `t()` call sites.
15
+ *
16
+ * There used to be a `translationsOverrides = translations` default parameter here, which was a
17
+ * bug: an integrator passing their own dictionaries *replaced* the SDK's bundled strings instead
18
+ * of merging with them, leaving every untranslated key rendering as a raw dotted path.
19
+ * `useStreami18n` layers integrator dictionaries over the SDK's own defaults, so a partial
20
+ * dictionary is now safe.
6
21
  *
7
22
  * @param props
8
23
  * @returns
9
24
  *
10
25
  * @category Client State
11
26
  */
12
- export declare const StreamVideo: (props: PropsWithChildren<StreamVideoProps & StreamI18nProviderProps & {
13
- style?: DeepPartial<Theme>;
14
- }>) => React.JSX.Element;
27
+ export declare const StreamVideo: (props: PropsWithChildren<StreamVideoProps>) => React.JSX.Element;
15
28
  //# sourceMappingURL=StreamVideo.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"StreamVideo.d.ts","sourceRoot":"","sources":["../../../src/providers/StreamVideo.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EAEtB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,EAAE,KAAK,iBAAiB,EAAa,MAAM,OAAO,CAAC;AAIjE,OAAO,EAAE,KAAK,WAAW,EAAe,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAI5C;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,GACtB,OAAO,iBAAiB,CACtB,gBAAgB,GACd,uBAAuB,GAAG;IACxB,KAAK,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;CAC5B,CACJ,sBA0CF,CAAC"}
1
+ {"version":3,"file":"StreamVideo.d.ts","sourceRoot":"","sources":["../../../src/providers/StreamVideo.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,wBAAwB,EAE9B,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,EAAE,KAAK,iBAAiB,EAAa,MAAM,OAAO,CAAC;AAGjE,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,KAAK,WAAW,EAAe,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAI5C,MAAM,MAAM,gBAAgB,GAAG,wBAAwB,GACrD,mBAAmB,GAAG;IACpB,KAAK,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;CAC5B,CAAC;AAEJ;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,WAAW,GAAI,OAAO,iBAAiB,CAAC,gBAAgB,CAAC,sBAwCrE,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { StreamVideoConfig } from './types';
1
+ import type { RingingCallLifecycleHooks, StreamVideoConfig } from './types';
2
2
  type DeepPartial<T> = {
3
3
  [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];
4
4
  };
@@ -47,6 +47,25 @@ export declare class StreamVideoRN {
47
47
  * AppRegistry.registerComponent('app', () => App);
48
48
  */
49
49
  static setPushConfig(pushConfig: NonNullable<StreamVideoConfig['push']>): void;
50
+ /**
51
+ * Register hooks that run around a ringing call's join, for every ringing path:
52
+ * accepted from the CallKit/Telecom UI, accepted inside the app, and outgoing.
53
+ *
54
+ * Call this at your application's entry point, alongside
55
+ * {@link StreamVideoRN.setPushConfig} and **outside** the React tree. A call
56
+ * accepted from a push notification can be created and joined before any
57
+ * component mounts, so hooks registered from inside React would be missed on
58
+ * exactly the path that most needs them.
59
+ *
60
+ * Calling it again replaces the previously registered hooks.
61
+ *
62
+ * @example // in index.js
63
+ * StreamVideoRN.setRingingCallLifecycleHooks({
64
+ * onBeforeCallJoin: (call) => attachE2EEIfConfigured(call),
65
+ * onAfterCallLeave: (call) => disposeE2EEManager(call),
66
+ * });
67
+ */
68
+ static setRingingCallLifecycleHooks: (hooks: RingingCallLifecycleHooks) => void;
50
69
  static getConfig(): StreamVideoConfig;
51
70
  /**
52
71
  * This is the function to be called when the push token must be removed.
@@ -54,6 +73,19 @@ export declare class StreamVideoRN {
54
73
  */
55
74
  static onPushLogout(): Promise<void>;
56
75
  static clearPushLogoutCallbacks(): void;
76
+ /**
77
+ * Android only. Opt out of the Android 11+ communication-mode keep-alive.
78
+ *
79
+ * By default the SDK plays a silent voice-communication track for the duration of a
80
+ * communicator-role call, so Android does not reset `MODE_IN_COMMUNICATION` ~6s after it is
81
+ * set (which breaks audio routing and echo cancellation).
82
+ * See {@link https://issuetracker.google.com/issues/209493718}
83
+ *
84
+ * Call this at app start, alongside {@link setPushConfig} — the native audio manager
85
+ * rejects the change once it has been activated for a call. No-op on iOS and on
86
+ * Android below API 30.
87
+ */
88
+ static setDisableCommunicationModeWorkaround(disabled: boolean): void;
57
89
  /**
58
90
  * Play native busy tone for call rejection
59
91
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/StreamVideoRN/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAajD,KAAK,WAAW,CAAC,CAAC,IAAI;KACnB,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAChE,CAAC;AAgDF,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,MAAM,CAA+B;IAEpD;;;;OAIG;IACH,MAAM,CAAC,YAAY,CACjB,YAAY,EAAE,WAAW,CAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAK5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACH,MAAM,CAAC,aAAa,CAAC,UAAU,EAAE,WAAW,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IA0BvE,MAAM,CAAC,SAAS;IAIhB;;;OAGG;IACH,MAAM,CAAC,YAAY;IASnB,MAAM,CAAC,wBAAwB;IAI/B;;OAEG;WACU,YAAY;IAIzB;;OAEG;WACU,YAAY;IAIzB;;;OAGG;WACU,6BAA6B,IAAI,OAAO,CAAC,OAAO,CAAC;IAQ9D;;;OAGG;WACU,4BAA4B,IAAI,OAAO,CAAC,OAAO,CAAC;IAQ7D;;;OAGG;WACU,wBAAwB,IAAI,OAAO,CAAC,OAAO,CAAC;CAO1D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/StreamVideoRN/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAc5E,KAAK,WAAW,CAAC,CAAC,IAAI;KACnB,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAChE,CAAC;AAgDF,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,MAAM,CAA+B;IAEpD;;;;OAIG;IACH,MAAM,CAAC,YAAY,CACjB,YAAY,EAAE,WAAW,CAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAK5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACH,MAAM,CAAC,aAAa,CAAC,UAAU,EAAE,WAAW,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IA0BvE;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,CAAC,4BAA4B,GAAI,OAAO,yBAAyB,UAErE;IAEF,MAAM,CAAC,SAAS;IAIhB;;;OAGG;IACH,MAAM,CAAC,YAAY;IASnB,MAAM,CAAC,wBAAwB;IAI/B;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,qCAAqC,CAAC,QAAQ,EAAE,OAAO;IAe9D;;OAEG;WACU,YAAY;IAIzB;;OAEG;WACU,YAAY;IAIzB;;;OAGG;WACU,6BAA6B,IAAI,OAAO,CAAC,OAAO,CAAC;IAQ9D;;;OAGG;WACU,4BAA4B,IAAI,OAAO,CAAC,OAAO,CAAC;IAQ7D;;;OAGG;WACU,wBAAwB,IAAI,OAAO,CAAC,OAAO,CAAC;CAO1D"}
@@ -10,6 +10,73 @@ export type KeepAliveAndroidNotificationTexts = {
10
10
  body: string;
11
11
  };
12
12
  export type NonRingingPushEvent = 'call.live_started' | 'call.notification' | 'call.missed';
13
+ /**
14
+ * Hooks that run around a ringing call's join, wherever that join is triggered.
15
+ *
16
+ * A ringing call is joined by the SDK, not by your code: the accept button joins
17
+ * internally, and an outgoing call joins itself once the callee answers. That
18
+ * leaves no moment in which app code holds the call and the join has not yet
19
+ * happened - which is a problem for anything that must be installed first, most
20
+ * notably `call.setE2EEManager()`, since it throws once a call has peer
21
+ * connections.
22
+ *
23
+ * These hooks are that moment. They run for every ringing path: accepted from the
24
+ * CallKit/Telecom UI, accepted inside the app, and outgoing.
25
+ *
26
+ * Register them with {@link StreamVideoRN.setRingingCallLifecycleHooks} at your app's
27
+ * entry point, next to `setPushConfig`. A call accepted from a push notification
28
+ * can be created and joined before any component mounts - the app may be launched
29
+ * from a killed state - so registering them from inside React is too late.
30
+ */
31
+ export type RingingCallLifecycleHooks = {
32
+ /**
33
+ * Awaited by `Call.join()` for a ringing call, before any peer connection exists.
34
+ * **Throwing aborts the join** and the call is not entered.
35
+ *
36
+ * That is deliberate: joining without whatever this hook installs would, in the
37
+ * E2EE case, publish unencrypted media on a call the user believes is private.
38
+ * On the push path there is no UI to reveal it, so the join fails closed instead.
39
+ * A failed join also ends the call, so the `Call` it failed on is finished with -
40
+ * a later attempt happens on a new incoming call or a newly created one.
41
+ *
42
+ * Keep it fast. On the CallKit accept path it runs inside iOS's accept deadline
43
+ * (roughly 30s before the app is killed) and anything slower than five seconds is
44
+ * treated as a failure. Deriving a key locally is fine; fetching one over the
45
+ * network does not belong here.
46
+ *
47
+ * @example
48
+ * onBeforeCallJoin: async (call) => {
49
+ * await attachE2EEIfConfigured(call);
50
+ * }
51
+ */
52
+ onBeforeCallJoin?: (call: Call) => Promise<void>;
53
+ /**
54
+ * Called once, when a ringing call is finished with - it left, whether because
55
+ * the user hung up, the other side ended it, or its join failed and the SDK
56
+ * ended the flow.
57
+ *
58
+ * Use it to free per-call resources the SDK does not own. An E2EE manager is the
59
+ * motivating case: it has no native detach, closing the peer connections does not
60
+ * free it, and on the push path the call can end while the app is still in the
61
+ * background, where no React cleanup ever runs.
62
+ *
63
+ * When an {@link onBeforeCallJoin} is also registered, this is only called for a
64
+ * call that hook actually entered, so it always pairs with a setup that happened -
65
+ * a call that rings and is then rejected, cancelled or missed was never set up and
66
+ * releases nothing. Registered on its own it has no such pairing to honour and is
67
+ * called for every ringing call that ends. Either way it is tied to the call
68
+ * ending rather than to any view's lifetime, so navigating away from a live call
69
+ * does not release it.
70
+ *
71
+ * If the setup hook is still running when the call ends - it timed out, say - the
72
+ * release waits for it to settle, so it cannot free something that hook is about
73
+ * to create.
74
+ *
75
+ * May return a promise; rejections are logged. Nothing is gated on it, so do not
76
+ * rely on it completing before the OS suspends the app.
77
+ */
78
+ onAfterCallLeave?: (call: Call) => void | Promise<void>;
79
+ };
13
80
  export type StreamVideoConfig = {
14
81
  /**
15
82
  * The configuration to be used for push notifications.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/utils/StreamVideoRN/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,oBAAoB,EACzB,iBAAiB,EACjB,KAAK,IAAI,EACV,MAAM,yBAAyB,CAAC;AAEjC,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAC7B,mBAAmB,GAAG,mBAAmB,GAAG,aAAa,CAAC;AAE5D,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;;OAIG;IACH,IAAI,CAAC,EAAE;QACL;;WAEG;QACH,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB;;;;WAIG;QACH,cAAc,CAAC,EAAE,oBAAoB,CAAC;QAEtC,GAAG,CAAC,EAAE;YACJ;;;;eAIG;YACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;YAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;YACxB;;;eAGG;YACH,KAAK,CAAC,EAAE,MAAM,CAAC;YACf;;;eAGG;YACH,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB;;;eAGG;YACH,YAAY,CAAC,EAAE,OAAO,CAAC;YACvB;;;eAGG;YACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;YAC5B;;;eAGG;YACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;YAC7B;;;;;;eAMG;YACH,4BAA4B,CAAC,EAAE,OAAO,CAAC;YACvC;;;;;eAKG;YACH,yBAAyB,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;SACpD,CAAC;QACF,OAAO,CAAC,EAAE;YACR;;;;eAIG;YACH,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB;;;;eAIG;YACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;YAC1B;;;;;;;;;eASG;YACH,eAAe,CAAC,EAAE,oBAAoB,CAAC;YACvC;;;;;;;;eAQG;YACH,iBAAiB,CAAC,EAAE;gBAClB,SAAS,CAAC,EAAE,MAAM,CAAC;gBACnB,SAAS,CAAC,EAAE,MAAM,CAAC;aACpB,CAAC;YACF;;eAEG;YACH,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,KAAK,MAAM,CAAC;YACrE,kBAAkB,CAAC,EAAE,OAAO,CAAC;YAC7B;;;;eAIG;YACH,4BAA4B,CAAC,EAAE,OAAO,CAAC;YACvC;;;eAGG;YACH,yBAAyB,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;SACpD,CAAC;QACF;;;WAGG;QACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;QACnC;;;;;;;;;;;;;;;;;WAiBG;QACH,uBAAuB,EAAE,MAAM,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAAC;KACvE,CAAC;IACF,iBAAiB,EAAE;QACjB,OAAO,EAAE;YACP;;eAEG;YACH,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAAE,OAAO,GAAG,WAAW,CAAC,CAAC;YAC3D;;eAEG;YACH,iBAAiB,EAAE,iCAAiC,CAAC;YACrD;;eAEG;YACH,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;SAC1C,CAAC;KACH,CAAC;CACH,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/utils/StreamVideoRN/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,oBAAoB,EACzB,iBAAiB,EACjB,KAAK,IAAI,EACV,MAAM,yBAAyB,CAAC;AAEjC,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAC7B,mBAAmB,GAAG,mBAAmB,GAAG,aAAa,CAAC;AAE5D;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC;;;;;;;;;;;;;;;;;;;OAmBG;IACH,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzD,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;;OAIG;IACH,IAAI,CAAC,EAAE;QACL;;WAEG;QACH,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB;;;;WAIG;QACH,cAAc,CAAC,EAAE,oBAAoB,CAAC;QAEtC,GAAG,CAAC,EAAE;YACJ;;;;eAIG;YACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;YAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;YACxB;;;eAGG;YACH,KAAK,CAAC,EAAE,MAAM,CAAC;YACf;;;eAGG;YACH,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB;;;eAGG;YACH,YAAY,CAAC,EAAE,OAAO,CAAC;YACvB;;;eAGG;YACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;YAC5B;;;eAGG;YACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;YAC7B;;;;;;eAMG;YACH,4BAA4B,CAAC,EAAE,OAAO,CAAC;YACvC;;;;;eAKG;YACH,yBAAyB,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;SACpD,CAAC;QACF,OAAO,CAAC,EAAE;YACR;;;;eAIG;YACH,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB;;;;eAIG;YACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;YAC1B;;;;;;;;;eASG;YACH,eAAe,CAAC,EAAE,oBAAoB,CAAC;YACvC;;;;;;;;eAQG;YACH,iBAAiB,CAAC,EAAE;gBAClB,SAAS,CAAC,EAAE,MAAM,CAAC;gBACnB,SAAS,CAAC,EAAE,MAAM,CAAC;aACpB,CAAC;YACF;;eAEG;YACH,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,KAAK,MAAM,CAAC;YACrE,kBAAkB,CAAC,EAAE,OAAO,CAAC;YAC7B;;;;eAIG;YACH,4BAA4B,CAAC,EAAE,OAAO,CAAC;YACvC;;;eAGG;YACH,yBAAyB,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;SACpD,CAAC;QACF;;;WAGG;QACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;QACnC;;;;;;;;;;;;;;;;;WAiBG;QACH,uBAAuB,EAAE,MAAM,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAAC;KACvE,CAAC;IACF,iBAAiB,EAAE;QACjB,OAAO,EAAE;YACP;;eAEG;YACH,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAAE,OAAO,GAAG,WAAW,CAAC,CAAC;YAC3D;;eAEG;YACH,iBAAiB,EAAE,iCAAiC,CAAC;YACrD;;eAEG;YACH,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;SAC1C,CAAC;KACH,CAAC;CACH,CAAC"}
@@ -13,7 +13,7 @@ export declare function registerOutgoingCall(call: Call): Promise<void>;
13
13
  * 2. Displays the incoming call in the callingx library
14
14
  * 3. Optionally for non-ringing calls also when ongoing calls are enabled.
15
15
  */
16
- export declare function joinCallingxCall(call: Call, activeCalls: Call[]): Promise<void>;
16
+ export declare function joinCallingxCall(call: Call, activeCalls: Call[], isCancelled?: () => boolean): Promise<void>;
17
17
  export declare function endCallingxCall(call: Call, reason?: EndCallReason): Promise<void>;
18
18
  export declare function wireAudioEngineSubscription(): Promise<void>;
19
19
  export declare function unwireAudioEngineSubscription(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"callingx.d.ts","sourceRoot":"","sources":["../../../../../src/utils/internal/callingx/callingx.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAEtE,OAAO,KAAK,EACV,IAAI,EACJ,cAAc,EACd,sBAAsB,EACvB,MAAM,yBAAyB,CAAC;AAKjC;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,cAAc,EAAE,GAAG,SAAS,EACzC,YAAY,EAAE,sBAAsB,EAAE,GAAG,SAAS,EAClD,aAAa,EAAE,MAAM,GAAG,SAAS,GAChC,MAAM,CAgCR;AAsBD,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,IAAI,iBAyBpD;AAED;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAoDrE;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,aAAa,iBAmBvE;AAED,wBAAsB,2BAA2B,kBAehD;AAED,wBAAgB,6BAA6B,SAe5C"}
1
+ {"version":3,"file":"callingx.d.ts","sourceRoot":"","sources":["../../../../../src/utils/internal/callingx/callingx.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAEtE,OAAO,KAAK,EACV,IAAI,EACJ,cAAc,EACd,sBAAsB,EACvB,MAAM,yBAAyB,CAAC;AAKjC;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,cAAc,EAAE,GAAG,SAAS,EACzC,YAAY,EAAE,sBAAsB,EAAE,GAAG,SAAS,EAClD,aAAa,EAAE,MAAM,GAAG,SAAS,GAChC,MAAM,CAgCR;AA2BD,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,IAAI,iBAyBpD;AAED;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,IAAI,EAAE,EACnB,WAAW,CAAC,EAAE,MAAM,OAAO,iBA+E5B;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,aAAa,iBAmBvE;AAED,wBAAsB,2BAA2B,kBAehD;AAED,wBAAgB,6BAA6B,SAe5C"}
@@ -0,0 +1,9 @@
1
+ import { type Call, type VideoTrackType } from '@stream-io/video-client';
2
+ import { BehaviorSubject } from 'rxjs';
3
+ export type PipTrack = {
4
+ sessionId: string;
5
+ trackType: VideoTrackType;
6
+ };
7
+ export declare const getIosPipTrack$: (call: Call) => BehaviorSubject<PipTrack | undefined>;
8
+ export declare const setIosPipTrack: (call: Call, track: PipTrack | undefined) => void;
9
+ //# sourceMappingURL=iosPipTrack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iosPipTrack.d.ts","sourceRoot":"","sources":["../../../../src/utils/internal/iosPipTrack.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,IAAI,EAET,KAAK,cAAc,EACpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAEvC,MAAM,MAAM,QAAQ,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,cAAc,CAAA;CAAE,CAAC;AASxE,eAAO,MAAM,eAAe,GAAI,MAAM,IAAI,0CAOzC,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,MAAM,IAAI,EAAE,OAAO,QAAQ,GAAG,SAAS,SAarE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"registerSDKGlobals.d.ts","sourceRoot":"","sources":["../../../../src/utils/internal/registerSDKGlobals.ts"],"names":[],"mappings":"AA8OA,wBAAgB,kBAAkB,SAMjC"}
1
+ {"version":3,"file":"registerSDKGlobals.d.ts","sourceRoot":"","sources":["../../../../src/utils/internal/registerSDKGlobals.ts"],"names":[],"mappings":"AAgPA,wBAAgB,kBAAkB,SAMjC"}
@@ -0,0 +1,27 @@
1
+ import { type Call } from '@stream-io/video-client';
2
+ import type { RingingCallLifecycleHooks } from '../StreamVideoRN/types';
3
+ export declare const setRingingCallLifecycleHooks: (next: RingingCallLifecycleHooks) => void;
4
+ /**
5
+ * Runs the app's pre-join setup, bounded by the deadline.
6
+ *
7
+ * Rejecting fails the join closed - joining without whatever this installs would
8
+ * publish unencrypted media on a call the user believes is private.
9
+ */
10
+ export declare const beforeJoin: (call: Call) => Promise<void>;
11
+ /**
12
+ * The join failed and will not be retried on this call.
13
+ *
14
+ * Ends the ringing flow rather than leaving the call sitting in `RINGING`: one
15
+ * `Call` is one call flow, so the accept button must not be able to offer this
16
+ * instance again. Never rejects, so the original join error survives.
17
+ */
18
+ export declare const onJoinFailed: (call: Call) => Promise<void>;
19
+ /**
20
+ * The call has ended.
21
+ *
22
+ * Releases what the setup hook installed, once the hook has actually settled -
23
+ * a hook still running may yet install something, and releasing before it
24
+ * finishes would strand that.
25
+ */
26
+ export declare const onLeave: (call: Call) => void;
27
+ //# sourceMappingURL=ringingCallLifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ringingCallLifecycle.d.ts","sourceRoot":"","sources":["../../../../src/utils/internal/ringingCallLifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,IAAI,EACV,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAuBxE,eAAO,MAAM,4BAA4B,GACvC,MAAM,yBAAyB,SAGhC,CAAC;AAmCF;;;;;GAKG;AACH,eAAO,MAAM,UAAU,GAAI,MAAM,IAAI,KAAG,OAAO,CAAC,IAAI,CAiCnD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,GAAU,MAAM,IAAI,KAAG,OAAO,CAAC,IAAI,CAc3D,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,GAAI,MAAM,IAAI,KAAG,IASpC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/utils/push/internal/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EAIL,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAKnE,KAAK,UAAU,GAAG,WAAW,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;AAGzD,KAAK,4BAA4B,GAAG;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAEzD;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAC5B,cAAc,IAAI,EAClB,eAAe,MAAM,GAAG,SAAS,EACjC,aAAa,MAAM,GAAG,SAAS;;;CAoChC,CAAC;AAMF,eAAO,MAAM,+BAA+B,GAC1C,YAAY,UAAU,EACtB,UAAU,MAAM,EAChB,QAAQ,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,qBAAqB;AAChE;;;;;GAKG;AACH,2BAA2B,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,kBAmFtD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,6BAA6B,GAAI,UAAU,MAAM,SAM7D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,4BAA4B,EAAE,4BAE1C,CAAC;AAEF,eAAO,MAAM,aAAa,eACkD,CAAC;AAE7E,eAAO,MAAM,kBAAkB,GAC7B,MAAM,IAAI,EACV,UAAU;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;CAAE;;;CAW7C,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/utils/push/internal/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EAIL,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAKnE,KAAK,UAAU,GAAG,WAAW,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;AAGzD,KAAK,4BAA4B,GAAG;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAEzD;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAC5B,cAAc,IAAI,EAClB,eAAe,MAAM,GAAG,SAAS,EACjC,aAAa,MAAM,GAAG,SAAS;;;CAoChC,CAAC;AAMF,eAAO,MAAM,+BAA+B,GAC1C,YAAY,UAAU,EACtB,UAAU,MAAM,EAChB,QAAQ,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,qBAAqB;AAChE;;;;;GAKG;AACH,2BAA2B,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,kBAuFtD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,6BAA6B,GAAI,UAAU,MAAM,SAM7D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,4BAA4B,EAAE,4BAE1C,CAAC;AAEF,eAAO,MAAM,aAAa,eACkD,CAAC;AAE7E,eAAO,MAAM,kBAAkB,GAC7B,MAAM,IAAI,EACV,UAAU;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;CAAE;;;CAW7C,CAAC"}
@@ -1,2 +1,2 @@
1
- export declare const version = "2.0.0-beta.0";
1
+ export declare const version = "2.0.0-beta.2";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -17,6 +17,9 @@ class RTCViewPip: UIView {
17
17
  weak var manager: RTCViewPipManager?
18
18
 
19
19
  @objc var onPiPChange: RCTBubblingEventBlock?
20
+ /// Actual PiP window bounds in logical points.
21
+ @objc var onPiPBoundsChange: RCTBubblingEventBlock?
22
+ private var lastEmittedBounds: CGSize?
20
23
 
21
24
  // MARK: - Avatar Placeholder Properties
22
25
 
@@ -156,8 +159,11 @@ class RTCViewPip: UIView {
156
159
  @objc
157
160
  func onCallClosed() {
158
161
  PictureInPictureLogger.log("pictureInPictureController cleanup called")
162
+ self.pictureInPictureController?.onPiPStateChange = nil
163
+ self.pictureInPictureController?.onSizeUpdate = nil
159
164
  self.pictureInPictureController?.cleanup()
160
165
  self.pictureInPictureController = nil
166
+ self.lastEmittedBounds = nil
161
167
  }
162
168
 
163
169
  @objc
@@ -191,9 +197,8 @@ class RTCViewPip: UIView {
191
197
  }
192
198
  self.pictureInPictureController?.sourceView = self
193
199
  self.pictureInPictureController?.isMirrored = self.mirror
194
- // Set up PiP state change callback
195
- self.pictureInPictureController?.onPiPStateChange = { [weak self] isActive in
196
- self?.sendPiPChangeEvent(isActive: isActive)
200
+ if let controller = self.pictureInPictureController {
201
+ self.installCallbacks(on: controller)
197
202
  }
198
203
  if let reactTag = self.reactTag,
199
204
  let size = self.manager?.getCachedSize(for: reactTag) {
@@ -277,12 +282,32 @@ class RTCViewPip: UIView {
277
282
  }
278
283
  }
279
284
 
280
- private func sendPiPChangeEvent(isActive: Bool) {
281
- guard let onPiPChange = onPiPChange else {
282
- return
285
+ // MARK: - Picture in Picture Events
286
+
287
+ /// Ignore callbacks from a controller that has already been disposed.
288
+ private func installCallbacks(on controller: StreamPictureInPictureController) {
289
+ controller.onPiPStateChange = { [weak self, weak controller] isActive in
290
+ guard let self, let controller,
291
+ self.pictureInPictureController === controller else { return }
292
+ self.onPiPChange?(["active": isActive])
293
+ }
294
+ controller.onSizeUpdate = { [weak self, weak controller] size in
295
+ guard let self, let controller,
296
+ self.pictureInPictureController === controller else { return }
297
+ self.handleSizeUpdate(size)
283
298
  }
299
+ }
284
300
 
285
- PictureInPictureLogger.log("Sending PiP state change event: \(isActive)")
286
- onPiPChange(["active": isActive])
301
+ private func handleSizeUpdate(_ size: CGSize) {
302
+ guard size.width.isFinite, size.height.isFinite else { return }
303
+ // truncated to match the integer dimensions the inline views report.
304
+ let bounds = CGSize(
305
+ width: size.width.rounded(.towardZero),
306
+ height: size.height.rounded(.towardZero)
307
+ )
308
+ guard bounds.width > 0, bounds.height > 0 else { return }
309
+ guard let onPiPBoundsChange, lastEmittedBounds != bounds else { return }
310
+ lastEmittedBounds = bounds
311
+ onPiPBoundsChange(["width": bounds.width, "height": bounds.height])
287
312
  }
288
313
  }
@@ -13,6 +13,7 @@
13
13
  RCT_EXPORT_VIEW_PROPERTY(streamURL, NSString)
14
14
  RCT_EXPORT_VIEW_PROPERTY(mirror, BOOL)
15
15
  RCT_EXPORT_VIEW_PROPERTY(onPiPChange, RCTBubblingEventBlock)
16
+ RCT_EXPORT_VIEW_PROPERTY(onPiPBoundsChange, RCTBubblingEventBlock)
16
17
  RCT_EXPORT_VIEW_PROPERTY(participantName, NSString)
17
18
  RCT_EXPORT_VIEW_PROPERTY(participantImageURL, NSString)
18
19
  RCT_EXPORT_VIEW_PROPERTY(isReconnecting, BOOL)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stream-io/video-react-native-sdk",
3
- "version": "2.0.0-beta.0",
3
+ "version": "2.0.0-beta.2",
4
4
  "description": "Stream Video SDK for React Native",
5
5
  "author": "https://getstream.io",
6
6
  "homepage": "https://getstream.io/video/docs/react-native/",
@@ -14,11 +14,14 @@
14
14
  "lint": "eslint \"**/*.{js,ts,tsx}\"",
15
15
  "start": "yarn copy-version && tsc --project tsconfig.json --watch",
16
16
  "build:expo-plugin": "rimraf expo-config-plugin/dist && tsc --project expo-config-plugin/tsconfig.json",
17
- "build": "yarn copy-version && bob build && yarn build:expo-plugin",
17
+ "build": "yarn copy-version && yarn build-translations && bob build && yarn build:expo-plugin",
18
18
  "test:expo-plugin": "jest --config=expo-config-plugin/jest.config.js --coverage",
19
19
  "test": "yarn copy-version && jest --coverage && yarn test:types && yarn test:expo-plugin",
20
20
  "test:types": "yarn copy-version && tsc -p tsconfig.spec.json",
21
- "copy-version": "echo \"export const version = '$npm_package_version';\" > ./src/version.ts"
21
+ "copy-version": "echo \"export const version = '$npm_package_version';\" > ./src/version.ts",
22
+ "build-translations": "node scripts/generate-i18n-keys.mts && yarn run -T prettier --write --log-level warn src/i18n/keys.ts",
23
+ "validate-translations": "yarn build-translations && git diff --exit-code -- src/i18n/keys.ts __tests__/i18n/catalog.fixture.json",
24
+ "i18n:export": "node scripts/generate-i18n-keys.mts --json en.json"
22
25
  },
23
26
  "repository": {
24
27
  "type": "git",
@@ -52,8 +55,9 @@
52
55
  "!**/.*"
53
56
  ],
54
57
  "dependencies": {
55
- "@stream-io/video-client": "2.0.0-beta.0",
56
- "@stream-io/video-react-bindings": "2.0.0-beta.0",
58
+ "@stream-io/i18n": "^1.0.2",
59
+ "@stream-io/video-client": "2.0.0-beta.1",
60
+ "@stream-io/video-react-bindings": "2.0.0-beta.1",
57
61
  "intl-pluralrules": "2.0.1",
58
62
  "react-native-url-polyfill": "^3.0.0",
59
63
  "rxjs": "~7.8.2",
@@ -63,10 +67,10 @@
63
67
  "@react-native-community/netinfo": ">=9.0.0",
64
68
  "@react-native-firebase/app": ">=17.5.0",
65
69
  "@react-native-firebase/messaging": ">=17.5.0",
66
- "@stream-io/noise-cancellation-react-native": ">=0.1.0",
67
- "@stream-io/react-native-callingx": ">=0.1.0",
68
- "@stream-io/react-native-webrtc": "^145.3.1",
69
- "@stream-io/video-filters-react-native": ">=0.1.0",
70
+ "@stream-io/noise-cancellation-react-native": ">=1.0.0-beta.0",
71
+ "@stream-io/react-native-callingx": ">=1.0.0-beta.0",
72
+ "@stream-io/react-native-webrtc": "^145.4.1",
73
+ "@stream-io/video-filters-react-native": ">=1.0.0-beta.0",
70
74
  "expo": ">=47.0.0",
71
75
  "expo-notifications": "*",
72
76
  "react": ">=17.0.0",
@@ -117,11 +121,11 @@
117
121
  "@react-native/babel-preset": "0.86.2",
118
122
  "@react-native/jest-preset": "0.86.2",
119
123
  "@react-native/metro-config": "0.86.2",
120
- "@stream-io/noise-cancellation-react-native": "^0.11.0",
121
- "@stream-io/react-native-callingx": "^0.11.1",
122
- "@stream-io/react-native-webrtc": "145.3.1",
124
+ "@stream-io/noise-cancellation-react-native": "^1.0.0-beta.1",
125
+ "@stream-io/react-native-callingx": "^1.0.0-beta.1",
126
+ "@stream-io/react-native-webrtc": "145.4.1",
123
127
  "@stream-io/typescript-config": "^0.0.0",
124
- "@stream-io/video-filters-react-native": "^0.16.0",
128
+ "@stream-io/video-filters-react-native": "^1.0.0-beta.1",
125
129
  "@testing-library/jest-native": "^5.4.3",
126
130
  "@testing-library/react-native": "13.3.3",
127
131
  "@tsconfig/node18": "^18.2.6",
@@ -267,7 +267,7 @@ export const CallContent = ({
267
267
 
268
268
  return (
269
269
  <>
270
- {!disablePictureInPicture && (
270
+ {Platform.OS === 'ios' && !disablePictureInPicture && (
271
271
  <RTCViewPipIOS
272
272
  includeLocalParticipantVideo={iOSPiPIncludeLocalParticipantVideo}
273
273
  mirror={mirror}