@stream-io/video-react-native-sdk 1.10.17 → 1.10.18

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 (303) hide show
  1. package/CHANGELOG.md +718 -687
  2. package/dist/commonjs/components/Call/CallContent/RTCViewPipIOS.js +1 -0
  3. package/dist/commonjs/components/Call/CallContent/RTCViewPipIOS.js.map +1 -1
  4. package/dist/commonjs/components/Call/CallContent/RTCViewPipNative.js +5 -5
  5. package/dist/commonjs/components/Call/CallContent/RTCViewPipNative.js.map +1 -1
  6. package/dist/commonjs/components/Call/Lobby/Lobby.js.map +1 -1
  7. package/dist/commonjs/components/Participant/FloatingParticipantView/FloatingView/AnimatedFloatingView.js +1 -1
  8. package/dist/commonjs/components/Participant/FloatingParticipantView/FloatingView/AnimatedFloatingView.js.map +1 -1
  9. package/dist/commonjs/components/Participant/FloatingParticipantView/FloatingView/ReanimatedFloatingView.js +5 -3
  10. package/dist/commonjs/components/Participant/FloatingParticipantView/FloatingView/ReanimatedFloatingView.js.map +1 -1
  11. package/dist/commonjs/contexts/BackgroundFilters.js +1 -1
  12. package/dist/commonjs/contexts/BackgroundFilters.js.map +1 -1
  13. package/dist/commonjs/hooks/internal/useCallMediaStreamCleanup.js +0 -1
  14. package/dist/commonjs/hooks/internal/useCallMediaStreamCleanup.js.map +1 -1
  15. package/dist/commonjs/hooks/push/useIosCallkeepWithCallingStateEffect.js +4 -4
  16. package/dist/commonjs/hooks/push/useIosVoipPushEventsSetupEffect.js +11 -5
  17. package/dist/commonjs/hooks/push/useIosVoipPushEventsSetupEffect.js.map +1 -1
  18. package/dist/commonjs/hooks/useScreenShareButton.js +1 -3
  19. package/dist/commonjs/hooks/useScreenShareButton.js.map +1 -1
  20. package/dist/commonjs/hooks/useTrackDimensions.js +1 -1
  21. package/dist/commonjs/hooks/useTrackDimensions.js.map +1 -1
  22. package/dist/commonjs/providers/StreamCall/DeviceStats.js +2 -2
  23. package/dist/commonjs/providers/StreamCall/DeviceStats.js.map +1 -1
  24. package/dist/commonjs/utils/internal/optionallibs/gestureHandler.js +1 -1
  25. package/dist/commonjs/utils/internal/optionallibs/gestureHandler.js.map +1 -1
  26. package/dist/commonjs/utils/internal/optionallibs/reanimated.js +1 -1
  27. package/dist/commonjs/utils/internal/optionallibs/reanimated.js.map +1 -1
  28. package/dist/commonjs/utils/internal/pushLogoutCallback.js +1 -1
  29. package/dist/commonjs/utils/internal/pushLogoutCallback.js.map +1 -1
  30. package/dist/commonjs/utils/push/internal/ios.js +104 -0
  31. package/dist/commonjs/utils/push/internal/ios.js.map +1 -0
  32. package/dist/commonjs/utils/push/ios.js +15 -107
  33. package/dist/commonjs/utils/push/ios.js.map +1 -1
  34. package/dist/commonjs/utils/push/libs/callkeep.js +1 -1
  35. package/dist/commonjs/utils/push/libs/callkeep.js.map +1 -1
  36. package/dist/commonjs/utils/push/libs/expoNotifications.js +1 -1
  37. package/dist/commonjs/utils/push/libs/expoNotifications.js.map +1 -1
  38. package/dist/commonjs/utils/push/libs/firebaseMessaging/lib.js +1 -1
  39. package/dist/commonjs/utils/push/libs/firebaseMessaging/lib.js.map +1 -1
  40. package/dist/commonjs/utils/push/libs/iosPushNotification.js +1 -1
  41. package/dist/commonjs/utils/push/libs/iosPushNotification.js.map +1 -1
  42. package/dist/commonjs/utils/push/libs/notifee/lib.js +1 -1
  43. package/dist/commonjs/utils/push/libs/notifee/lib.js.map +1 -1
  44. package/dist/commonjs/utils/push/libs/voipPushNotification.js +1 -1
  45. package/dist/commonjs/utils/push/libs/voipPushNotification.js.map +1 -1
  46. package/dist/commonjs/utils/push/setupIosCallKeepEvents.js +2 -2
  47. package/dist/commonjs/utils/push/setupIosCallKeepEvents.js.map +1 -1
  48. package/dist/commonjs/utils/push/setupIosVoipPushEvents.js +2 -2
  49. package/dist/commonjs/utils/push/setupIosVoipPushEvents.js.map +1 -1
  50. package/dist/commonjs/version.js +1 -1
  51. package/dist/module/components/Call/CallContent/CallContent.js +2 -2
  52. package/dist/module/components/Call/CallContent/CallContent.js.map +1 -1
  53. package/dist/module/components/Call/CallContent/RTCViewPipIOS.js +2 -1
  54. package/dist/module/components/Call/CallContent/RTCViewPipIOS.js.map +1 -1
  55. package/dist/module/components/Call/CallContent/RTCViewPipNative.js +6 -6
  56. package/dist/module/components/Call/CallContent/RTCViewPipNative.js.map +1 -1
  57. package/dist/module/components/Call/CallControls/internal/ReactionsPicker.js +1 -1
  58. package/dist/module/components/Call/CallControls/internal/ReactionsPicker.js.map +1 -1
  59. package/dist/module/components/Call/Lobby/Lobby.js.map +1 -1
  60. package/dist/module/components/Call/Lobby/LobbyFooter.js +1 -1
  61. package/dist/module/components/Call/Lobby/LobbyFooter.js.map +1 -1
  62. package/dist/module/components/Participant/FloatingParticipantView/FloatingView/AnimatedFloatingView.js +4 -4
  63. package/dist/module/components/Participant/FloatingParticipantView/FloatingView/AnimatedFloatingView.js.map +1 -1
  64. package/dist/module/components/Participant/FloatingParticipantView/FloatingView/ReanimatedFloatingView.js +7 -5
  65. package/dist/module/components/Participant/FloatingParticipantView/FloatingView/ReanimatedFloatingView.js.map +1 -1
  66. package/dist/module/components/Participant/ParticipantView/ParticipantReaction.js +1 -1
  67. package/dist/module/components/Participant/ParticipantView/ParticipantReaction.js.map +1 -1
  68. package/dist/module/components/Participant/ParticipantView/SpeechIndicator.js +1 -1
  69. package/dist/module/components/Participant/ParticipantView/SpeechIndicator.js.map +1 -1
  70. package/dist/module/contexts/BackgroundFilters.js +1 -1
  71. package/dist/module/contexts/BackgroundFilters.js.map +1 -1
  72. package/dist/module/hooks/internal/useCallMediaStreamCleanup.js +0 -1
  73. package/dist/module/hooks/internal/useCallMediaStreamCleanup.js.map +1 -1
  74. package/dist/module/hooks/push/useIosCallkeepWithCallingStateEffect.js +4 -4
  75. package/dist/module/hooks/push/useIosVoipPushEventsSetupEffect.js +12 -6
  76. package/dist/module/hooks/push/useIosVoipPushEventsSetupEffect.js.map +1 -1
  77. package/dist/module/hooks/push/useProcessPushCallEffect.js +1 -1
  78. package/dist/module/hooks/push/useProcessPushCallEffect.js.map +1 -1
  79. package/dist/module/hooks/useAndroidKeepCallAliveEffect.js +2 -2
  80. package/dist/module/hooks/useAndroidKeepCallAliveEffect.js.map +1 -1
  81. package/dist/module/hooks/usePermissionRequest.js +1 -1
  82. package/dist/module/hooks/usePermissionRequest.js.map +1 -1
  83. package/dist/module/hooks/useScreenShareButton.js +3 -5
  84. package/dist/module/hooks/useScreenShareButton.js.map +1 -1
  85. package/dist/module/hooks/useTrackDimensions.js +2 -2
  86. package/dist/module/hooks/useTrackDimensions.js.map +1 -1
  87. package/dist/module/providers/StreamCall/DeviceStats.js +4 -4
  88. package/dist/module/providers/StreamCall/DeviceStats.js.map +1 -1
  89. package/dist/module/utils/internal/optionallibs/gestureHandler.js +1 -1
  90. package/dist/module/utils/internal/optionallibs/gestureHandler.js.map +1 -1
  91. package/dist/module/utils/internal/optionallibs/reanimated.js +1 -1
  92. package/dist/module/utils/internal/optionallibs/reanimated.js.map +1 -1
  93. package/dist/module/utils/internal/pushLogoutCallback.js +1 -1
  94. package/dist/module/utils/internal/pushLogoutCallback.js.map +1 -1
  95. package/dist/module/utils/push/android.js +3 -3
  96. package/dist/module/utils/push/android.js.map +1 -1
  97. package/dist/module/utils/push/internal/ios.js +97 -0
  98. package/dist/module/utils/push/internal/ios.js.map +1 -0
  99. package/dist/module/utils/push/internal/utils.js +1 -1
  100. package/dist/module/utils/push/internal/utils.js.map +1 -1
  101. package/dist/module/utils/push/ios.js +18 -109
  102. package/dist/module/utils/push/ios.js.map +1 -1
  103. package/dist/module/utils/push/libs/callkeep.js +1 -1
  104. package/dist/module/utils/push/libs/callkeep.js.map +1 -1
  105. package/dist/module/utils/push/libs/expoNotifications.js +1 -1
  106. package/dist/module/utils/push/libs/expoNotifications.js.map +1 -1
  107. package/dist/module/utils/push/libs/firebaseMessaging/index.js.map +1 -1
  108. package/dist/module/utils/push/libs/firebaseMessaging/lib.js +1 -1
  109. package/dist/module/utils/push/libs/firebaseMessaging/lib.js.map +1 -1
  110. package/dist/module/utils/push/libs/iosPushNotification.js +1 -1
  111. package/dist/module/utils/push/libs/iosPushNotification.js.map +1 -1
  112. package/dist/module/utils/push/libs/notifee/index.js.map +1 -1
  113. package/dist/module/utils/push/libs/notifee/lib.js +1 -1
  114. package/dist/module/utils/push/libs/notifee/lib.js.map +1 -1
  115. package/dist/module/utils/push/libs/voipPushNotification.js +1 -1
  116. package/dist/module/utils/push/libs/voipPushNotification.js.map +1 -1
  117. package/dist/module/utils/push/setupIosCallKeepEvents.js +3 -4
  118. package/dist/module/utils/push/setupIosCallKeepEvents.js.map +1 -1
  119. package/dist/module/utils/push/setupIosVoipPushEvents.js +2 -2
  120. package/dist/module/utils/push/setupIosVoipPushEvents.js.map +1 -1
  121. package/dist/module/version.js +1 -1
  122. package/dist/typescript/components/Call/CallContent/CallContent.d.ts.map +1 -1
  123. package/dist/typescript/components/Call/CallContent/RTCViewPipIOS.d.ts.map +1 -1
  124. package/dist/typescript/components/Call/CallContent/RTCViewPipNative.d.ts.map +1 -1
  125. package/dist/typescript/components/Call/CallControls/AcceptCallButton.d.ts.map +1 -1
  126. package/dist/typescript/components/Call/CallControls/CallControls.d.ts.map +1 -1
  127. package/dist/typescript/components/Call/CallControls/CallControlsButton.d.ts.map +1 -1
  128. package/dist/typescript/components/Call/CallControls/HangupCallButton.d.ts.map +1 -1
  129. package/dist/typescript/components/Call/CallControls/IncomingCallControls.d.ts.map +1 -1
  130. package/dist/typescript/components/Call/CallControls/OutgoingCallControls.d.ts.map +1 -1
  131. package/dist/typescript/components/Call/CallControls/ReactionsButton.d.ts.map +1 -1
  132. package/dist/typescript/components/Call/CallControls/RejectCallButton.d.ts.map +1 -1
  133. package/dist/typescript/components/Call/CallControls/ScreenShareToggleButton.d.ts.map +1 -1
  134. package/dist/typescript/components/Call/CallControls/ToggleAudioPreviewButton.d.ts.map +1 -1
  135. package/dist/typescript/components/Call/CallControls/ToggleAudioPublishingButton.d.ts.map +1 -1
  136. package/dist/typescript/components/Call/CallControls/ToggleCameraFaceButton.d.ts.map +1 -1
  137. package/dist/typescript/components/Call/CallControls/ToggleVideoPreviewButton.d.ts.map +1 -1
  138. package/dist/typescript/components/Call/CallControls/ToggleVideoPublishingButton.d.ts.map +1 -1
  139. package/dist/typescript/components/Call/CallControls/internal/ReactionsPicker.d.ts.map +1 -1
  140. package/dist/typescript/components/Call/CallLayout/CallParticipantsGrid.d.ts.map +1 -1
  141. package/dist/typescript/components/Call/CallLayout/CallParticipantsSpotlight.d.ts.map +1 -1
  142. package/dist/typescript/components/Call/CallParticipantsList/CallParticipantsList.d.ts.map +1 -1
  143. package/dist/typescript/components/Call/Lobby/JoinCallButton.d.ts.map +1 -1
  144. package/dist/typescript/components/Call/Lobby/Lobby.d.ts.map +1 -1
  145. package/dist/typescript/components/Call/Lobby/LobbyFooter.d.ts.map +1 -1
  146. package/dist/typescript/components/Call/RingingCallContent/CallLeftIndicator.d.ts.map +1 -1
  147. package/dist/typescript/components/Call/RingingCallContent/CallPreparingIndicator.d.ts.map +1 -1
  148. package/dist/typescript/components/Call/RingingCallContent/IncomingCall.d.ts.map +1 -1
  149. package/dist/typescript/components/Call/RingingCallContent/OutgoingCall.d.ts.map +1 -1
  150. package/dist/typescript/components/Call/RingingCallContent/RingingCallContent.d.ts.map +1 -1
  151. package/dist/typescript/components/Call/RingingCallContent/TextBasedIndicator.d.ts.map +1 -1
  152. package/dist/typescript/components/Call/RingingCallContent/UserInfo.d.ts.map +1 -1
  153. package/dist/typescript/components/Livestream/HostLivestream/HostLivestream.d.ts.map +1 -1
  154. package/dist/typescript/components/Livestream/LivestreamControls/HostLivestreamControls.d.ts.map +1 -1
  155. package/dist/typescript/components/Livestream/LivestreamControls/HostStartStreamButton.d.ts.map +1 -1
  156. package/dist/typescript/components/Livestream/LivestreamControls/LivestreamMediaControls.d.ts.map +1 -1
  157. package/dist/typescript/components/Livestream/LivestreamControls/ViewerLeaveStreamButton.d.ts.map +1 -1
  158. package/dist/typescript/components/Livestream/LivestreamControls/ViewerLivestreamControls.d.ts.map +1 -1
  159. package/dist/typescript/components/Livestream/LivestreamLayout/LivestreamLayout.d.ts.map +1 -1
  160. package/dist/typescript/components/Livestream/LivestreamPlayer/LivestreamPlayer.d.ts.map +1 -1
  161. package/dist/typescript/components/Livestream/LivestreamTopView/DurationBadge.d.ts.map +1 -1
  162. package/dist/typescript/components/Livestream/LivestreamTopView/FollowerCount.d.ts.map +1 -1
  163. package/dist/typescript/components/Livestream/LivestreamTopView/HostLivestreamTopView.d.ts.map +1 -1
  164. package/dist/typescript/components/Livestream/LivestreamTopView/LiveIndicator.d.ts.map +1 -1
  165. package/dist/typescript/components/Livestream/LivestreamTopView/ViewerLivestreamTopView.d.ts.map +1 -1
  166. package/dist/typescript/components/Livestream/ViewerLivestream/ViewerLivestream.d.ts.map +1 -1
  167. package/dist/typescript/components/Participant/FloatingParticipantView/FloatingView/AnimatedFloatingView.d.ts.map +1 -1
  168. package/dist/typescript/components/Participant/FloatingParticipantView/FloatingView/ReanimatedFloatingView.d.ts.map +1 -1
  169. package/dist/typescript/components/Participant/FloatingParticipantView/index.d.ts.map +1 -1
  170. package/dist/typescript/components/Participant/ParticipantView/ParticipantLabel.d.ts.map +1 -1
  171. package/dist/typescript/components/Participant/ParticipantView/ParticipantNetworkQualityIndicator.d.ts.map +1 -1
  172. package/dist/typescript/components/Participant/ParticipantView/ParticipantReaction.d.ts.map +1 -1
  173. package/dist/typescript/components/Participant/ParticipantView/ParticipantVideoFallback.d.ts.map +1 -1
  174. package/dist/typescript/components/Participant/ParticipantView/ParticipantView.d.ts.map +1 -1
  175. package/dist/typescript/components/Participant/ParticipantView/SpeechIndicator.d.ts.map +1 -1
  176. package/dist/typescript/components/Participant/ParticipantView/VideoRenderer.d.ts.map +1 -1
  177. package/dist/typescript/components/utility/Avatar.d.ts.map +1 -1
  178. package/dist/typescript/components/utility/ScreenShareOverlay.d.ts.map +1 -1
  179. package/dist/typescript/contexts/BackgroundFilters.d.ts.map +1 -1
  180. package/dist/typescript/contexts/ThemeContext.d.ts.map +1 -1
  181. package/dist/typescript/hooks/internal/useCallMediaStreamCleanup.d.ts.map +1 -1
  182. package/dist/typescript/hooks/push/useIosVoipPushEventsSetupEffect.d.ts.map +1 -1
  183. package/dist/typescript/hooks/usePaginatedLayoutSortPreset.d.ts.map +1 -1
  184. package/dist/typescript/hooks/usePermissionNotification.d.ts.map +1 -1
  185. package/dist/typescript/hooks/useScreenShareButton.d.ts +21 -1
  186. package/dist/typescript/hooks/useScreenShareButton.d.ts.map +1 -1
  187. package/dist/typescript/icons/Back.d.ts.map +1 -1
  188. package/dist/typescript/icons/CameraSwitch.d.ts.map +1 -1
  189. package/dist/typescript/icons/IconWrapper.d.ts.map +1 -1
  190. package/dist/typescript/icons/Lock.d.ts.map +1 -1
  191. package/dist/typescript/icons/Mic.d.ts.map +1 -1
  192. package/dist/typescript/icons/MicOff.d.ts.map +1 -1
  193. package/dist/typescript/icons/Phone.d.ts.map +1 -1
  194. package/dist/typescript/icons/PhoneDown.d.ts.map +1 -1
  195. package/dist/typescript/icons/PinVertical.d.ts.map +1 -1
  196. package/dist/typescript/icons/Reaction.d.ts.map +1 -1
  197. package/dist/typescript/icons/ScreenShare.d.ts.map +1 -1
  198. package/dist/typescript/icons/ScreenShareIndicator.d.ts.map +1 -1
  199. package/dist/typescript/icons/Settings.d.ts.map +1 -1
  200. package/dist/typescript/icons/Spotlight.d.ts.map +1 -1
  201. package/dist/typescript/icons/StopScreenShare.d.ts.map +1 -1
  202. package/dist/typescript/icons/ThreeDots.d.ts.map +1 -1
  203. package/dist/typescript/icons/TopViewBackground.d.ts.map +1 -1
  204. package/dist/typescript/icons/Video.d.ts.map +1 -1
  205. package/dist/typescript/icons/VideoSlash.d.ts.map +1 -1
  206. package/dist/typescript/providers/StreamCall/index.d.ts.map +1 -1
  207. package/dist/typescript/providers/StreamVideo.d.ts.map +1 -1
  208. package/dist/typescript/utils/hooks/usePrevious.d.ts.map +1 -1
  209. package/dist/typescript/utils/index.d.ts.map +1 -1
  210. package/dist/typescript/utils/internal/optionallibs/gestureHandler.d.ts.map +1 -1
  211. package/dist/typescript/utils/internal/optionallibs/reanimated.d.ts.map +1 -1
  212. package/dist/typescript/utils/internal/pushLogoutCallback.d.ts +1 -1
  213. package/dist/typescript/utils/internal/pushLogoutCallback.d.ts.map +1 -1
  214. package/dist/typescript/utils/push/android.d.ts +1 -1
  215. package/dist/typescript/utils/push/android.d.ts.map +1 -1
  216. package/dist/typescript/utils/push/internal/ios.d.ts +3 -0
  217. package/dist/typescript/utils/push/internal/ios.d.ts.map +1 -0
  218. package/dist/typescript/utils/push/internal/utils.d.ts.map +1 -1
  219. package/dist/typescript/utils/push/ios.d.ts +0 -1
  220. package/dist/typescript/utils/push/ios.d.ts.map +1 -1
  221. package/dist/typescript/utils/push/libs/expoNotifications.d.ts +1 -1
  222. package/dist/typescript/utils/push/libs/expoNotifications.d.ts.map +1 -1
  223. package/dist/typescript/utils/push/libs/firebaseMessaging/index.d.ts.map +1 -1
  224. package/dist/typescript/utils/push/libs/iosPushNotification.d.ts +1 -1
  225. package/dist/typescript/utils/push/libs/iosPushNotification.d.ts.map +1 -1
  226. package/dist/typescript/utils/push/libs/notifee/index.d.ts.map +1 -1
  227. package/dist/typescript/utils/push/setupIosCallKeepEvents.d.ts.map +1 -1
  228. package/dist/typescript/version.d.ts +1 -1
  229. package/expo-config-plugin/dist/withAndroidManifest.js +0 -1
  230. package/expo-config-plugin/dist/withAppDelegate.js +1 -1
  231. package/expo-config-plugin/dist/withIosScreenCapture/withPlistUpdates.js +1 -1
  232. package/expo-config-plugin/dist/withiOSInfoPlist.js +3 -1
  233. package/package.json +21 -23
  234. package/src/components/Call/CallContent/CallContent.tsx +3 -3
  235. package/src/components/Call/CallContent/RTCViewPipIOS.tsx +6 -4
  236. package/src/components/Call/CallContent/RTCViewPipNative.tsx +5 -5
  237. package/src/components/Call/CallControls/CallControlsButton.tsx +1 -1
  238. package/src/components/Call/CallControls/LobbyControls.tsx +1 -1
  239. package/src/components/Call/CallControls/ScreenShareToggleButton.tsx +1 -1
  240. package/src/components/Call/CallControls/internal/ReactionsPicker.tsx +4 -4
  241. package/src/components/Call/CallLayout/CallParticipantsSpotlight.tsx +1 -1
  242. package/src/components/Call/CallParticipantsList/CallParticipantsList.tsx +5 -5
  243. package/src/components/Call/Lobby/JoinCallButton.tsx +1 -1
  244. package/src/components/Call/Lobby/Lobby.tsx +2 -2
  245. package/src/components/Call/Lobby/LobbyFooter.tsx +2 -2
  246. package/src/components/Call/RingingCallContent/UserInfo.tsx +1 -1
  247. package/src/components/Livestream/HostLivestream/HostLivestream.tsx +1 -1
  248. package/src/components/Livestream/LivestreamControls/LivestreamScreenShareToggleButton.tsx +1 -1
  249. package/src/components/Livestream/LivestreamLayout/LivestreamLayout.tsx +1 -1
  250. package/src/components/Livestream/LivestreamTopView/DurationBadge.tsx +1 -1
  251. package/src/components/Livestream/ViewerLivestream/ViewerLivestream.tsx +1 -1
  252. package/src/components/Participant/FloatingParticipantView/FloatingView/AnimatedFloatingView.tsx +10 -10
  253. package/src/components/Participant/FloatingParticipantView/FloatingView/ReanimatedFloatingView.tsx +15 -13
  254. package/src/components/Participant/ParticipantView/ParticipantLabel.tsx +1 -1
  255. package/src/components/Participant/ParticipantView/ParticipantNetworkQualityIndicator.tsx +1 -1
  256. package/src/components/Participant/ParticipantView/ParticipantReaction.tsx +3 -3
  257. package/src/components/Participant/ParticipantView/ParticipantView.tsx +1 -1
  258. package/src/components/Participant/ParticipantView/SpeechIndicator.tsx +3 -3
  259. package/src/components/Participant/ParticipantView/VideoRenderer.tsx +1 -1
  260. package/src/contexts/BackgroundFilters.tsx +7 -7
  261. package/src/contexts/StreamVideoContext.tsx +3 -3
  262. package/src/contexts/ThemeContext.tsx +2 -2
  263. package/src/hooks/internal/useCallMediaStreamCleanup.ts +2 -6
  264. package/src/hooks/push/useInitAndroidTokenAndRest.ts +1 -1
  265. package/src/hooks/push/useIosCallkeepWithCallingStateEffect.ts +25 -25
  266. package/src/hooks/push/useIosVoipPushEventsSetupEffect.ts +28 -19
  267. package/src/hooks/push/useProcessPushCallEffect.ts +8 -8
  268. package/src/hooks/push/useProcessPushNonRingingCallEffect.ts +1 -1
  269. package/src/hooks/useAndroidKeepCallAliveEffect.ts +10 -10
  270. package/src/hooks/useAutoEnterPiPEffect.tsx +2 -2
  271. package/src/hooks/useIsIosScreenshareBroadcastStarted.ts +2 -2
  272. package/src/hooks/usePaginatedLayoutSortPreset.ts +1 -1
  273. package/src/hooks/usePermissionNotification.tsx +1 -1
  274. package/src/hooks/usePermissionRequest.tsx +4 -4
  275. package/src/hooks/useScreenShareButton.ts +9 -10
  276. package/src/hooks/useTrackDimensions.ts +3 -3
  277. package/src/providers/StreamCall/AppStateListener.tsx +6 -6
  278. package/src/providers/StreamCall/DeviceStats.tsx +8 -8
  279. package/src/providers/StreamVideo.tsx +1 -1
  280. package/src/utils/StreamVideoRN/index.ts +4 -4
  281. package/src/utils/StreamVideoRN/types.ts +2 -2
  282. package/src/utils/enterPiPAndroid.ts +1 -1
  283. package/src/utils/index.ts +2 -2
  284. package/src/utils/internal/newNotificationCallbacks.ts +3 -3
  285. package/src/utils/internal/optionallibs/gestureHandler.ts +1 -1
  286. package/src/utils/internal/optionallibs/reanimated.ts +1 -1
  287. package/src/utils/internal/pushLogoutCallback.ts +1 -1
  288. package/src/utils/push/android.ts +33 -33
  289. package/src/utils/push/internal/ios.ts +133 -0
  290. package/src/utils/push/internal/utils.ts +10 -10
  291. package/src/utils/push/ios.ts +38 -164
  292. package/src/utils/push/libs/callkeep.ts +2 -2
  293. package/src/utils/push/libs/expoNotifications.ts +5 -5
  294. package/src/utils/push/libs/firebaseMessaging/index.ts +3 -3
  295. package/src/utils/push/libs/firebaseMessaging/lib.ts +1 -1
  296. package/src/utils/push/libs/iosPushNotification.ts +4 -4
  297. package/src/utils/push/libs/notifee/index.ts +7 -7
  298. package/src/utils/push/libs/notifee/lib.ts +1 -1
  299. package/src/utils/push/libs/voipPushNotification.ts +2 -2
  300. package/src/utils/push/setupIosCallKeepEvents.ts +17 -18
  301. package/src/utils/push/setupIosVoipPushEvents.ts +5 -5
  302. package/src/utils/push/utils.ts +2 -2
  303. package/src/version.ts +1 -1
@@ -26,7 +26,7 @@ export const useInitAndroidTokenAndRest = () => {
26
26
  getLogger(['useInitAndroidTokenAndRest'])(
27
27
  'warn',
28
28
  'Error in initializing android push token',
29
- error
29
+ error,
30
30
  );
31
31
  });
32
32
  return () => {
@@ -27,14 +27,14 @@ const isAcceptedCallingState = (callingState: CallingState) => {
27
27
 
28
28
  const unsubscribeCallkeepEvents = async (activeCallCid: string | undefined) => {
29
29
  const voipPushNotificationCallCId = RxUtils.getCurrentValue(
30
- voipPushNotificationCallCId$
30
+ voipPushNotificationCallCId$,
31
31
  );
32
32
  if (activeCallCid && activeCallCid === voipPushNotificationCallCId) {
33
33
  // callkeep events should not be listened anymore so clear the call cid
34
34
  voipPushNotificationCallCId$.next(undefined);
35
35
  }
36
36
  return await NativeModules.StreamVideoReactNative?.removeIncomingCall(
37
- activeCallCid
37
+ activeCallCid,
38
38
  );
39
39
  };
40
40
 
@@ -75,10 +75,10 @@ export const useIosCallkeepWithCallingStateEffect = () => {
75
75
  // if the component is unmounted and the callID was not reported to callkeep, then report it now
76
76
  if (acceptedForegroundCallkeepMap) {
77
77
  log(
78
- `Ending call in callkeep: ${acceptedForegroundCallkeepMap.cid}, reason: component unmounted and call was present in acceptedForegroundCallkeepMap`
78
+ `Ending call in callkeep: ${acceptedForegroundCallkeepMap.cid}, reason: component unmounted and call was present in acceptedForegroundCallkeepMap`,
79
79
  );
80
80
  unsubscribeCallkeepEvents(acceptedForegroundCallkeepMap.cid).then(() =>
81
- callkeep.endCall(acceptedForegroundCallkeepMap.uuid)
81
+ callkeep.endCall(acceptedForegroundCallkeepMap.uuid),
82
82
  );
83
83
  }
84
84
  };
@@ -102,27 +102,27 @@ export const useIosCallkeepWithCallingStateEffect = () => {
102
102
  return;
103
103
  }
104
104
  const nativeDialerAcceptedCallMap = RxUtils.getCurrentValue(
105
- voipCallkeepAcceptedCallOnNativeDialerMap$
105
+ voipCallkeepAcceptedCallOnNativeDialerMap$,
106
106
  );
107
107
  const foregroundIncomingCallkeepMap = RxUtils.getCurrentValue(
108
- voipCallkeepCallOnForegroundMap$
108
+ voipCallkeepCallOnForegroundMap$,
109
109
  );
110
110
  const callkeep = getCallKeepLib();
111
111
  if (activeCallCid === nativeDialerAcceptedCallMap?.cid) {
112
112
  log(
113
- `Ending call in callkeep: ${activeCallCid}, reason: activeCallCid changed or was removed and call was present in nativeDialerAcceptedCallMap`
113
+ `Ending call in callkeep: ${activeCallCid}, reason: activeCallCid changed or was removed and call was present in nativeDialerAcceptedCallMap`,
114
114
  );
115
115
  unsubscribeCallkeepEvents(activeCallCid).then(() =>
116
- callkeep.endCall(nativeDialerAcceptedCallMap.uuid)
116
+ callkeep.endCall(nativeDialerAcceptedCallMap.uuid),
117
117
  );
118
118
  // no need to keep this reference anymore
119
119
  voipCallkeepAcceptedCallOnNativeDialerMap$.next(undefined);
120
120
  } else if (activeCallCid === foregroundIncomingCallkeepMap?.cid) {
121
121
  log(
122
- `Ending call in callkeep: ${activeCallCid}, reason: activeCallCid changed or was removed and call was present in foregroundIncomingCallkeepMap`
122
+ `Ending call in callkeep: ${activeCallCid}, reason: activeCallCid changed or was removed and call was present in foregroundIncomingCallkeepMap`,
123
123
  );
124
124
  unsubscribeCallkeepEvents(activeCallCid).then(() =>
125
- callkeep.endCall(foregroundIncomingCallkeepMap.uuid)
125
+ callkeep.endCall(foregroundIncomingCallkeepMap.uuid),
126
126
  );
127
127
  }
128
128
  };
@@ -153,17 +153,17 @@ export const useIosCallkeepWithCallingStateEffect = () => {
153
153
  // push notification was displayed
154
154
  // but the call has been accepted through the app and not through the native dialer
155
155
  const foregroundCallkeepMap = RxUtils.getCurrentValue(
156
- voipCallkeepCallOnForegroundMap$
156
+ voipCallkeepCallOnForegroundMap$,
157
157
  );
158
158
  if (foregroundCallkeepMap && foregroundCallkeepMap.cid === activeCallCid) {
159
159
  log(
160
- // @ts-ignore
161
- `Accepting call in callkeep: ${activeCallCid}, reason: callingstate went to ${CallingState[callingState]} and call was present in foregroundCallkeepMap`
160
+ // @ts-expect-error - types issue
161
+ `Accepting call in callkeep: ${activeCallCid}, reason: callingstate went to ${CallingState[callingState]} and call was present in foregroundCallkeepMap`,
162
162
  );
163
163
  // no need to keep this reference anymore
164
164
  voipCallkeepCallOnForegroundMap$.next(undefined);
165
165
  NativeModules.StreamVideoReactNative?.removeIncomingCall(
166
- activeCallCid
166
+ activeCallCid,
167
167
  ).then(() => callkeep.answerIncomingCall(foregroundCallkeepMap.uuid));
168
168
  // this call should be accepted in callkeep
169
169
  setAcceptedForegroundCallkeepMap(foregroundCallkeepMap);
@@ -181,11 +181,11 @@ export const useIosCallkeepWithCallingStateEffect = () => {
181
181
  // the call was left using the leave button in the app and not through native dialer
182
182
  if (activeCallCid === acceptedForegroundCallkeepMap?.cid) {
183
183
  log(
184
- // @ts-ignore
185
- `Ending call in callkeep: ${activeCallCid}, reason: callingstate went to ${CallingState[callingState]} and call was present in acceptedForegroundCallkeepMap`
184
+ // @ts-expect-error - types issue
185
+ `Ending call in callkeep: ${activeCallCid}, reason: callingstate went to ${CallingState[callingState]} and call was present in acceptedForegroundCallkeepMap`,
186
186
  );
187
187
  unsubscribeCallkeepEvents(activeCallCid).then(() =>
188
- callkeep.endCall(acceptedForegroundCallkeepMap.uuid)
188
+ callkeep.endCall(acceptedForegroundCallkeepMap.uuid),
189
189
  );
190
190
  setAcceptedForegroundCallkeepMap(undefined);
191
191
  return;
@@ -193,15 +193,15 @@ export const useIosCallkeepWithCallingStateEffect = () => {
193
193
  // this was a call which had push notification displayed but never joined
194
194
  // the user rejected in the app and not from native dialer
195
195
  const foregroundIncomingCallkeepMap = RxUtils.getCurrentValue(
196
- voipCallkeepCallOnForegroundMap$
196
+ voipCallkeepCallOnForegroundMap$,
197
197
  );
198
198
  if (activeCallCid === foregroundIncomingCallkeepMap?.cid) {
199
199
  log(
200
- // @ts-ignore
201
- `Ending call in callkeep: ${activeCallCid}, reason: callingstate went to ${CallingState[callingState]} and call was present in foregroundIncomingCallkeepMap`
200
+ // @ts-expect-error - types issue
201
+ `Ending call in callkeep: ${activeCallCid}, reason: callingstate went to ${CallingState[callingState]} and call was present in foregroundIncomingCallkeepMap`,
202
202
  );
203
203
  unsubscribeCallkeepEvents(activeCallCid).then(() =>
204
- callkeep.endCall(foregroundIncomingCallkeepMap.uuid)
204
+ callkeep.endCall(foregroundIncomingCallkeepMap.uuid),
205
205
  );
206
206
  // no need to keep this reference anymore
207
207
  voipCallkeepCallOnForegroundMap$.next(undefined);
@@ -211,15 +211,15 @@ export const useIosCallkeepWithCallingStateEffect = () => {
211
211
  // it was an accepted call from native dialer and not from the app
212
212
  // the user left using the leave button in the app
213
213
  const nativeDialerAcceptedCallMap = RxUtils.getCurrentValue(
214
- voipCallkeepAcceptedCallOnNativeDialerMap$
214
+ voipCallkeepAcceptedCallOnNativeDialerMap$,
215
215
  );
216
216
  if (activeCallCid === nativeDialerAcceptedCallMap?.cid) {
217
217
  log(
218
- // @ts-ignore
219
- `Ending call in callkeep: ${activeCallCid}, reason: callingstate went to ${CallingState[callingState]} and call was present in nativeDialerAcceptedCallMap`
218
+ // @ts-expect-error - types issue
219
+ `Ending call in callkeep: ${activeCallCid}, reason: callingstate went to ${CallingState[callingState]} and call was present in nativeDialerAcceptedCallMap`,
220
220
  );
221
221
  unsubscribeCallkeepEvents(activeCallCid).then(() =>
222
- callkeep.endCall(nativeDialerAcceptedCallMap.uuid)
222
+ callkeep.endCall(nativeDialerAcceptedCallMap.uuid),
223
223
  );
224
224
  // no need to keep this reference anymore
225
225
  voipCallkeepAcceptedCallOnNativeDialerMap$.next(undefined);
@@ -2,13 +2,14 @@ import { type MutableRefObject, useEffect, useRef, useState } from 'react';
2
2
  import { getVoipPushNotificationLib } from '../../utils/push/libs';
3
3
 
4
4
  import { Platform } from 'react-native';
5
- import { onVoipNotificationReceived, StreamVideoRN } from '../../utils';
5
+ import { StreamVideoRN } from '../../utils';
6
+ import { onVoipNotificationReceived } from '../../utils/push/internal/ios';
6
7
  import {
7
8
  useConnectedUser,
8
9
  useStreamVideoClient,
9
10
  } from '@stream-io/video-react-bindings';
10
11
  import { setPushLogoutCallback } from '../../utils/internal/pushLogoutCallback';
11
- import { StreamVideoClient, getLogger } from '@stream-io/video-client';
12
+ import { getLogger, StreamVideoClient } from '@stream-io/video-client';
12
13
 
13
14
  const logger = getLogger(['useIosVoipPushEventsSetupEffect']);
14
15
 
@@ -16,12 +17,12 @@ const logger = getLogger(['useIosVoipPushEventsSetupEffect']);
16
17
  hence to support login and logout scenario of multiple users we keep of the last count of the listener that was added
17
18
  This helps in not removing the listeners when a new user logs in and overrides the last listener
18
19
  */
19
- let lastListener = { count: 0 };
20
+ const lastListener = { count: 0 };
20
21
 
21
22
  function setLogoutCallback(
22
23
  client: StreamVideoClient,
23
24
  token: string,
24
- lastVoipTokenRef: MutableRefObject<{ token: string; userId: string }>
25
+ lastVoipTokenRef: MutableRefObject<{ token: string; userId: string }>,
25
26
  ) {
26
27
  setPushLogoutCallback(async () => {
27
28
  lastVoipTokenRef.current = { token: '', userId: '' };
@@ -31,7 +32,7 @@ function setLogoutCallback(
31
32
  logger(
32
33
  'warn',
33
34
  'PushLogoutCallback - Failed to remove voip token from stream',
34
- err
35
+ err,
35
36
  );
36
37
  }
37
38
  });
@@ -62,7 +63,7 @@ export const useIosVoipPushEventsSetupEffect = () => {
62
63
  logger(
63
64
  'debug',
64
65
  'Sending unsent voip token to stream as user logged in after token was received, token: ' +
65
- unsentToken
66
+ unsentToken,
66
67
  );
67
68
  client
68
69
  .addVoipDevice(unsentToken, 'apn', pushConfig.ios.pushProviderName)
@@ -70,7 +71,7 @@ export const useIosVoipPushEventsSetupEffect = () => {
70
71
  setLogoutCallback(client, unsentToken, lastVoipTokenRef);
71
72
  logger(
72
73
  'debug',
73
- 'Sent unsent voip token to stream - token: ' + unsentToken
74
+ 'Sent unsent voip token to stream - token: ' + unsentToken,
74
75
  );
75
76
  lastVoipTokenRef.current = {
76
77
  token: unsentToken,
@@ -86,14 +87,22 @@ export const useIosVoipPushEventsSetupEffect = () => {
86
87
  useEffect(() => {
87
88
  const pushConfig = StreamVideoRN.getConfig().push;
88
89
  const pushProviderName = pushConfig?.ios.pushProviderName;
89
- if (Platform.OS !== 'ios' || !pushConfig || !client || !pushProviderName) {
90
+ if (Platform.OS !== 'ios' || !client || !pushProviderName) {
90
91
  return;
91
92
  }
92
93
  if (!pushConfig.android.incomingCallChannel) {
93
94
  // TODO: remove this check and find a better way once we have telecom integration for android
94
95
  getLogger(['useIosVoipPushEventsSetupEffect'])(
95
96
  'debug',
96
- 'android incomingCallChannel is not defined, so skipping the useIosVoipPushEventsSetupEffect'
97
+ 'android incomingCallChannel is not defined, so skipping the useIosVoipPushEventsSetupEffect',
98
+ );
99
+ return;
100
+ }
101
+ if (!pushConfig.android.incomingCallChannel) {
102
+ // TODO: remove this check and find a better way once we have telecom integration for android
103
+ getLogger(['useIosVoipPushEventsSetupEffect'])(
104
+ 'debug',
105
+ 'android incomingCallChannel is not defined, so skipping the useIosVoipPushEventsSetupEffect',
97
106
  );
98
107
  return;
99
108
  }
@@ -110,7 +119,7 @@ export const useIosVoipPushEventsSetupEffect = () => {
110
119
  if (!token) {
111
120
  logger(
112
121
  'debug',
113
- `Skipped sending voip token to stream no token was present - userId: ${userId} (possibly using a simulator)`
122
+ `Skipped sending voip token to stream no token was present - userId: ${userId} (possibly using a simulator)`,
114
123
  );
115
124
  setUnsentToken(token);
116
125
  return;
@@ -118,7 +127,7 @@ export const useIosVoipPushEventsSetupEffect = () => {
118
127
  if (!userId) {
119
128
  logger(
120
129
  'debug',
121
- `Skipped sending voip token to stream no user id was present - token: ${token}`
130
+ `Skipped sending voip token to stream no user id was present - token: ${token}`,
122
131
  );
123
132
  setUnsentToken(token);
124
133
  return;
@@ -127,20 +136,20 @@ export const useIosVoipPushEventsSetupEffect = () => {
127
136
  if (lastVoipToken.token === token && lastVoipToken.userId === userId) {
128
137
  logger(
129
138
  'debug',
130
- `Skipped sending voip token to stream as it is same as last token - token: ${token}, userId: ${userId}`
139
+ `Skipped sending voip token to stream as it is same as last token - token: ${token}, userId: ${userId}`,
131
140
  );
132
141
  return;
133
142
  }
134
143
  logger(
135
144
  'debug',
136
- `Sending voip token to stream, token: ${token} userId: ${userId}`
145
+ `Sending voip token to stream, token: ${token} userId: ${userId}`,
137
146
  );
138
147
  client
139
148
  .addVoipDevice(token, 'apn', pushProviderName)
140
149
  .then(() => {
141
150
  logger(
142
151
  'debug',
143
- `Sent voip token to stream, token: ${token} userId: ${userId}`
152
+ `Sent voip token to stream, token: ${token} userId: ${userId}`,
144
153
  );
145
154
  setLogoutCallback(client, token, lastVoipTokenRef);
146
155
  lastVoipTokenRef.current = { token, userId };
@@ -150,7 +159,7 @@ export const useIosVoipPushEventsSetupEffect = () => {
150
159
  logger(
151
160
  'warn',
152
161
  `Failed to send voip token to stream token: ${token} userId: ${userId}`,
153
- err
162
+ err,
154
163
  );
155
164
  });
156
165
  };
@@ -164,12 +173,12 @@ export const useIosVoipPushEventsSetupEffect = () => {
164
173
  if (!events || !Array.isArray(events) || events.length < 1) {
165
174
  return;
166
175
  }
167
- for (let voipPushEvent of events) {
168
- let { name, data } = voipPushEvent;
176
+ for (const voipPushEvent of events) {
177
+ const { name, data } = voipPushEvent;
169
178
  if (name === 'RNVoipPushRemoteNotificationsRegisteredEvent') {
170
179
  onTokenReceived(data);
171
180
  } else if (name === 'RNVoipPushRemoteNotificationReceivedEvent') {
172
- onVoipNotificationReceived(data);
181
+ onVoipNotificationReceived(data, pushConfig);
173
182
  }
174
183
  }
175
184
  });
@@ -181,7 +190,7 @@ export const useIosVoipPushEventsSetupEffect = () => {
181
190
  if (currentListenerCount !== lastListener.count) {
182
191
  logger(
183
192
  'debug',
184
- 'Skipped removing voip event listeners for user: ' + userId
193
+ 'Skipped removing voip event listeners for user: ' + userId,
185
194
  );
186
195
  return;
187
196
  }
@@ -11,7 +11,7 @@ import {
11
11
  useStreamVideoClient,
12
12
  } from '@stream-io/video-react-bindings';
13
13
  import { BehaviorSubject } from 'rxjs';
14
- import { filter, distinctUntilChanged } from 'rxjs/operators';
14
+ import { distinctUntilChanged, filter } from 'rxjs/operators';
15
15
  import { processCallFromPush } from '../../utils/push/internal/utils';
16
16
  import { getLogger, StreamVideoClient } from '@stream-io/video-client';
17
17
  import type { StreamVideoConfig } from '../../utils/StreamVideoRN/types';
@@ -34,7 +34,7 @@ export const useProcessPushCallEffect = () => {
34
34
 
35
35
  getLogger(['useProcessPushCallEffect'])(
36
36
  'debug',
37
- `Adding subscriptions to process incoming call from push notification`
37
+ `Adding subscriptions to process incoming call from push notification`,
38
38
  );
39
39
 
40
40
  // if the user accepts the call from push notification we join the call
@@ -42,7 +42,7 @@ export const useProcessPushCallEffect = () => {
42
42
  pushAcceptedIncomingCallCId$,
43
43
  client,
44
44
  pushConfig,
45
- 'accept'
45
+ 'accept',
46
46
  );
47
47
 
48
48
  // if the user rejects the call from push notification we leave the call
@@ -50,7 +50,7 @@ export const useProcessPushCallEffect = () => {
50
50
  pushRejectedIncomingCallCId$,
51
51
  client,
52
52
  pushConfig,
53
- 'decline'
53
+ 'decline',
54
54
  );
55
55
 
56
56
  // if the user taps the call from push notification we do nothing as the only thing is to get the call which adds it to the client
@@ -58,14 +58,14 @@ export const useProcessPushCallEffect = () => {
58
58
  pushTappedIncomingCallCId$,
59
59
  client,
60
60
  pushConfig,
61
- 'pressed'
61
+ 'pressed',
62
62
  );
63
63
 
64
64
  const backgroundIncomingDeliveredCallSubscription = createCallSubscription(
65
65
  pushAndroidBackgroundDeliveredIncomingCallCId$,
66
66
  client,
67
67
  pushConfig,
68
- 'backgroundDelivered'
68
+ 'backgroundDelivered',
69
69
  );
70
70
 
71
71
  return () => {
@@ -91,14 +91,14 @@ const createCallSubscription = (
91
91
  behaviourSubjectWithCallCid: BehaviorSubject<string | undefined>,
92
92
  client: StreamVideoClient,
93
93
  pushConfig: NonNullable<StreamVideoConfig['push']>,
94
- action: 'accept' | 'decline' | 'pressed' | 'backgroundDelivered'
94
+ action: 'accept' | 'decline' | 'pressed' | 'backgroundDelivered',
95
95
  ) => {
96
96
  return behaviourSubjectWithCallCid
97
97
  .pipe(distinctUntilChanged(), filter(cidIsNotUndefined))
98
98
  .subscribe(async (callCId) => {
99
99
  getLogger(['useProcessPushCallEffect'])(
100
100
  'debug',
101
- `Processing call from push notification with action: ${action} and callCId: ${callCId}`
101
+ `Processing call from push notification with action: ${action} and callCId: ${callCId}`,
102
102
  );
103
103
  await processCallFromPush(client, callCId, action, pushConfig);
104
104
  behaviourSubjectWithCallCid.next(undefined); // remove the current call id to avoid processing again
@@ -29,7 +29,7 @@ export const useProcessPushNonRingingCallEffect = () => {
29
29
  .subscribe(async ({ cid, type }) => {
30
30
  getLogger(['useProcessPushNonRingingCallEffect'])(
31
31
  'debug',
32
- `processNonIncomingCallFromPush with callCId: ${cid} and type: ${type}`
32
+ `processNonIncomingCallFromPush with callCId: ${cid} and type: ${type}`,
33
33
  );
34
34
  await processNonIncomingCallFromPush(client, cid, type);
35
35
  pushNonRingingCallData$.next(undefined); // remove the current data to avoid processing again
@@ -2,15 +2,15 @@ import { useCall, useCallStateHooks } from '@stream-io/video-react-bindings';
2
2
  import { useEffect, useRef } from 'react';
3
3
  import { StreamVideoRN } from '../utils';
4
4
  import {
5
- NativeModules,
6
5
  AppState,
7
6
  type AppStateStatus,
7
+ NativeModules,
8
8
  Platform,
9
9
  } from 'react-native';
10
10
  import { CallingState, getLogger } from '@stream-io/video-client';
11
11
  import {
12
- getNotifeeLibNoThrowForKeepCallAlive,
13
12
  getKeepCallAliveForegroundServiceTypes,
13
+ getNotifeeLibNoThrowForKeepCallAlive,
14
14
  } from '../utils/push/libs/notifee';
15
15
 
16
16
  const notifeeLib = getNotifeeLibNoThrowForKeepCallAlive();
@@ -23,7 +23,7 @@ function setForegroundService() {
23
23
  const logger = getLogger(['setForegroundService method']);
24
24
  logger(
25
25
  'info',
26
- 'KeepCallAlive is not configured. Skipping foreground service setup.'
26
+ 'KeepCallAlive is not configured. Skipping foreground service setup.',
27
27
  );
28
28
  return;
29
29
  }
@@ -33,7 +33,7 @@ function setForegroundService() {
33
33
  logger('info', 'Foreground service running for call in progress');
34
34
  });
35
35
  });
36
- }
36
+ },
37
37
  );
38
38
  }
39
39
 
@@ -50,7 +50,7 @@ async function startForegroundService(call_cid: string) {
50
50
  const logger = getLogger(['startForegroundService']);
51
51
  logger(
52
52
  'info',
53
- 'KeepCallAlive is not configured. Skipping foreground service setup.'
53
+ 'KeepCallAlive is not configured. Skipping foreground service setup.',
54
54
  );
55
55
  return;
56
56
  }
@@ -61,13 +61,13 @@ async function startForegroundService(call_cid: string) {
61
61
  const logger = getLogger(['startForegroundService']);
62
62
  logger(
63
63
  'info',
64
- 'Notification permission not granted, can not start foreground service to keep the call alive'
64
+ 'Notification permission not granted, can not start foreground service to keep the call alive',
65
65
  );
66
66
  return;
67
67
  }
68
68
  const channelId = foregroundServiceConfig.android.channel.id;
69
69
  await notifeeLib.default.createChannel(
70
- foregroundServiceConfig.android.channel
70
+ foregroundServiceConfig.android.channel,
71
71
  );
72
72
  const foregroundServiceTypes = await getKeepCallAliveForegroundServiceTypes();
73
73
  // NOTE: we use requestAnimationFrame to ensure that the foreground service is started after all the current UI operations are done
@@ -138,7 +138,7 @@ export const useAndroidKeepCallAliveEffect = () => {
138
138
  const displayedNotifications =
139
139
  await notifee.getDisplayedNotifications();
140
140
  const activeCallNotification = displayedNotifications.find(
141
- (notification) => notification.id === activeCallCid
141
+ (notification) => notification.id === activeCallCid,
142
142
  );
143
143
  if (activeCallNotification) {
144
144
  // this means that we have a incoming call notification shown as foreground service and we must stop it
@@ -163,7 +163,7 @@ export const useAndroidKeepCallAliveEffect = () => {
163
163
  run();
164
164
  sub.remove();
165
165
  }
166
- }
166
+ },
167
167
  );
168
168
  return () => {
169
169
  sub.remove();
@@ -187,7 +187,7 @@ export const useAndroidKeepCallAliveEffect = () => {
187
187
  .getDisplayedNotifications()
188
188
  .then((displayedNotifications) => {
189
189
  const activeCallNotification = displayedNotifications.find(
190
- (notification) => notification.id === activeCallCid
190
+ (notification) => notification.id === activeCallCid,
191
191
  );
192
192
  if (activeCallNotification) {
193
193
  // this means that we have a incoming call notification shown as foreground service and we must stop it
@@ -5,7 +5,7 @@ import { NativeModules, Platform } from 'react-native';
5
5
  import { disablePiPMode$ } from '../utils/internal/rxSubjects';
6
6
 
7
7
  export function useAutoEnterPiPEffect(
8
- disablePictureInPicture: boolean | undefined
8
+ disablePictureInPicture: boolean | undefined,
9
9
  ) {
10
10
  const { useCallCallingState } = useCallStateHooks();
11
11
 
@@ -19,7 +19,7 @@ export function useAutoEnterPiPEffect(
19
19
 
20
20
  if (!disablePictureInPicture && callingState === CallingState.JOINED) {
21
21
  NativeModules.StreamVideoReactNative.canAutoEnterPipMode(
22
- !disablePictureInPicture
22
+ !disablePictureInPicture,
23
23
  );
24
24
  }
25
25
  }, [callingState, disablePictureInPicture]);
@@ -14,14 +14,14 @@ export function useIsIosScreenshareBroadcastStarted() {
14
14
  }
15
15
 
16
16
  const eventEmitter = new NativeEventEmitter(
17
- NativeModules.StreamVideoReactNative
17
+ NativeModules.StreamVideoReactNative,
18
18
  );
19
19
 
20
20
  const subscription = eventEmitter.addListener(
21
21
  'StreamVideoReactNative_Ios_Screenshare_Event',
22
22
  (event: Event) => {
23
23
  setHasStarted(event.name === 'iOS_BroadcastStarted');
24
- }
24
+ },
25
25
  );
26
26
 
27
27
  return () => {
@@ -10,7 +10,7 @@ const resetSortPreset = (call: Call) => {
10
10
  // reset the sorting to the default for the call type
11
11
  const callConfig = CallTypes.get(call.type);
12
12
  call.setSortParticipantsBy(
13
- callConfig.options.sortParticipantsBy || defaultSortPreset
13
+ callConfig.options.sortParticipantsBy || defaultSortPreset,
14
14
  );
15
15
  };
16
16
 
@@ -24,7 +24,7 @@ export type PermissionNotificationProps = {
24
24
  };
25
25
 
26
26
  export const usePermissionNotification = (
27
- props: PermissionNotificationProps
27
+ props: PermissionNotificationProps,
28
28
  ) => {
29
29
  const { permission, messageApproved, messageRevoked } = props;
30
30
  const { useCallCallingState, useHasPermissions } = useCallStateHooks();
@@ -1,7 +1,7 @@
1
1
  import {
2
+ getLogger,
2
3
  OwnCapability,
3
4
  type PermissionRequestEvent,
4
- getLogger,
5
5
  } from '@stream-io/video-client';
6
6
  import { useCall, useCallStateHooks } from '@stream-io/video-react-bindings';
7
7
  import { useCallback, useEffect } from 'react';
@@ -12,7 +12,7 @@ export const usePermissionRequest = () => {
12
12
 
13
13
  const { useHasPermissions } = useCallStateHooks();
14
14
  const userHasUpdateCallPermissionsCapability = useHasPermissions(
15
- OwnCapability.UPDATE_CALL_PERMISSIONS
15
+ OwnCapability.UPDATE_CALL_PERMISSIONS,
16
16
  );
17
17
 
18
18
  const messageForPermission = (userName: string, permission: string) => {
@@ -44,7 +44,7 @@ export const usePermissionRequest = () => {
44
44
  }
45
45
  };
46
46
  },
47
- [call]
47
+ [call],
48
48
  );
49
49
 
50
50
  useEffect(() => {
@@ -69,7 +69,7 @@ export const usePermissionRequest = () => {
69
69
  text: 'Allow',
70
70
  onPress: handleUpdatePermission(event, true),
71
71
  },
72
- ]
72
+ ],
73
73
  );
74
74
  });
75
75
  });
@@ -4,17 +4,16 @@ import {
4
4
  OwnCapability,
5
5
  } from '@stream-io/video-client';
6
6
  import { useCall, useCallStateHooks } from '@stream-io/video-react-bindings';
7
- import React, { useRef, useEffect } from 'react';
8
- import { Platform, findNodeHandle, NativeModules } from 'react-native';
7
+ import React, { useEffect, useRef } from 'react';
8
+ import { findNodeHandle, NativeModules, Platform } from 'react-native';
9
9
  import { usePrevious } from '../utils/hooks';
10
10
  import { useIsIosScreenshareBroadcastStarted } from './useIsIosScreenshareBroadcastStarted';
11
11
 
12
12
  // ios >= 14.0 or android - platform restrictions
13
13
  const CanDeviceScreenShare =
14
14
  (Platform.OS === 'ios' &&
15
- // @ts-ignore
16
- Number.parseInt(Platform.Version.split('.')[0], 10) >= 14,
17
- 10) || Platform.OS === 'android';
15
+ Number.parseInt(Platform.Version.split('.')[0], 10) >= 14) ||
16
+ Platform.OS === 'android';
18
17
 
19
18
  export const useScreenShareButton = (
20
19
  /**
@@ -36,7 +35,7 @@ export const useScreenShareButton = (
36
35
  * Handler to be called when the permissions to stream screen share media is missing
37
36
  *
38
37
  */
39
- onMissingScreenShareStreamPermission?: () => void
38
+ onMissingScreenShareStreamPermission?: () => void,
40
39
  ) => {
41
40
  const call = useCall();
42
41
  const { useLocalParticipant, useCallSettings, useOwnCapabilities } =
@@ -44,7 +43,7 @@ export const useScreenShareButton = (
44
43
  const callSettings = useCallSettings();
45
44
  const ownCapabilities = useOwnCapabilities();
46
45
  const hasScreenSharingPermissions = ownCapabilities?.includes(
47
- OwnCapability.SCREENSHARE
46
+ OwnCapability.SCREENSHARE,
48
47
  );
49
48
  const isScreenSharingEnabledInCall = callSettings?.screensharing.enabled;
50
49
 
@@ -55,7 +54,7 @@ export const useScreenShareButton = (
55
54
 
56
55
  const iosScreenShareStartedFromSystem = useIsIosScreenshareBroadcastStarted();
57
56
  const prevIosScreenShareStartedFromSystem = usePrevious(
58
- iosScreenShareStartedFromSystem
57
+ iosScreenShareStartedFromSystem,
59
58
  );
60
59
 
61
60
  const localParticipant = useLocalParticipant();
@@ -91,7 +90,7 @@ export const useScreenShareButton = (
91
90
  const logger = getLogger(['useScreenShareButton']);
92
91
  logger(
93
92
  'info',
94
- 'User does not have permissions to stream the screen share media, calling onMissingScreenShareStreamPermission handler if present'
93
+ 'User does not have permissions to stream the screen share media, calling onMissingScreenShareStreamPermission handler if present',
95
94
  );
96
95
  onMissingScreenShareStreamPermission?.();
97
96
  }
@@ -111,7 +110,7 @@ export const useScreenShareButton = (
111
110
  logger(
112
111
  'info',
113
112
  'User opted to not give permissions to start a screen share stream',
114
- error
113
+ error,
115
114
  );
116
115
  }
117
116
  }
@@ -3,7 +3,7 @@ import {
3
3
  type VideoTrackType,
4
4
  } from '@stream-io/video-client';
5
5
  import { useCall } from '@stream-io/video-react-bindings';
6
- import { useState, useEffect } from 'react';
6
+ import { useEffect, useState } from 'react';
7
7
 
8
8
  /**
9
9
  * This is a utility hook to get the dimensions of the video track of the participant.
@@ -12,7 +12,7 @@ import { useState, useEffect } from 'react';
12
12
  */
13
13
  export function useTrackDimensions(
14
14
  participant: StreamVideoParticipant,
15
- trackType: VideoTrackType
15
+ trackType: VideoTrackType,
16
16
  ) {
17
17
  const [trackDimensions, setTrackDimensions] = useState({
18
18
  width: 0,
@@ -28,7 +28,7 @@ export function useTrackDimensions(
28
28
  const stream =
29
29
  trackType === 'screenShareTrack' ? screenShareStream : videoStream;
30
30
  if (!stream) return;
31
- const [track] = stream?.getVideoTracks();
31
+ const [track] = stream.getVideoTracks();
32
32
  if (!track) return;
33
33
  const { width = 0, height = 0 } = track.getSettings();
34
34
  setTrackDimensions((prev) => {