@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
@@ -44,20 +44,20 @@ export const AppStateListener = () => {
44
44
  logger(
45
45
  'debug',
46
46
  'Initial PiP mode on mount (after asking native module) set to ',
47
- !!isInPiP
47
+ !!isInPiP,
48
48
  );
49
- }
49
+ },
50
50
  );
51
51
 
52
52
  const eventEmitter = new NativeEventEmitter(
53
- NativeModules.StreamVideoReactNative
53
+ NativeModules.StreamVideoReactNative,
54
54
  );
55
55
 
56
56
  const subscriptionPiPChange = eventEmitter.addListener(
57
57
  PIP_CHANGE_EVENT,
58
58
  (isInPiPMode: boolean) => {
59
59
  isInPiPModeAndroid$.next(isInPiPMode);
60
- }
60
+ },
61
61
  );
62
62
 
63
63
  return () => {
@@ -83,7 +83,7 @@ export const AppStateListener = () => {
83
83
  });
84
84
  logger(
85
85
  'debug',
86
- 'Disable and reenable camera as app came to foreground'
86
+ 'Disable and reenable camera as app came to foreground',
87
87
  );
88
88
  } else {
89
89
  if (cameraDisabledByAppState.current) {
@@ -124,7 +124,7 @@ export const AppStateListener = () => {
124
124
  }
125
125
  disableCameraIfNeeded();
126
126
  }
127
- }
127
+ },
128
128
  );
129
129
  } else {
130
130
  disableCameraIfNeeded();
@@ -2,10 +2,10 @@ import { useCallStateHooks } from '@stream-io/video-react-bindings';
2
2
  import { useEffect } from 'react';
3
3
  import {
4
4
  CallingState,
5
- setThermalState,
6
5
  setPowerState,
6
+ setThermalState,
7
7
  } from '@stream-io/video-client';
8
- import { NativeModules, Platform, NativeEventEmitter } from 'react-native';
8
+ import { NativeEventEmitter, NativeModules, Platform } from 'react-native';
9
9
 
10
10
  const eventEmitter = NativeModules?.StreamVideoReactNative
11
11
  ? new NativeEventEmitter(NativeModules?.StreamVideoReactNative)
@@ -24,21 +24,21 @@ export const DeviceStats = () => {
24
24
  }
25
25
 
26
26
  NativeModules?.StreamVideoReactNative.isLowPowerModeEnabled().then(
27
- (initialPowerMode: boolean) => setPowerState(initialPowerMode)
27
+ (initialPowerMode: boolean) => setPowerState(initialPowerMode),
28
28
  );
29
29
 
30
- let powerModeSubscription = eventEmitter?.addListener(
30
+ const powerModeSubscription = eventEmitter?.addListener(
31
31
  'isLowPowerModeEnabled',
32
- (isLowPowerMode: boolean) => setPowerState(isLowPowerMode)
32
+ (isLowPowerMode: boolean) => setPowerState(isLowPowerMode),
33
33
  );
34
34
 
35
35
  NativeModules?.StreamVideoReactNative.currentThermalState().then(
36
- (initialState: string) => setThermalState(initialState)
36
+ (initialState: string) => setThermalState(initialState),
37
37
  );
38
38
 
39
- let thermalStateSubscription = eventEmitter?.addListener(
39
+ const thermalStateSubscription = eventEmitter?.addListener(
40
40
  'thermalStateDidChange',
41
- (thermalState: string) => setThermalState(thermalState)
41
+ (thermalState: string) => setThermalState(thermalState),
42
42
  );
43
43
 
44
44
  // on android we need to explicitly start and stop the thermal status updates
@@ -24,7 +24,7 @@ export const StreamVideo = (
24
24
  StreamI18nProviderProps & {
25
25
  style?: DeepPartial<Theme>;
26
26
  }
27
- >
27
+ >,
28
28
  ) => {
29
29
  const {
30
30
  client,
@@ -42,7 +42,7 @@ export class StreamVideoRN {
42
42
  static updateAndroidIncomingCallChannel(
43
43
  updateChannel: Partial<
44
44
  NonNullable<StreamVideoConfig['push']>['android']['incomingCallChannel']
45
- >
45
+ >,
46
46
  ) {
47
47
  const prevChannel = this.config.push?.android?.incomingCallChannel;
48
48
  if (prevChannel) {
@@ -80,7 +80,7 @@ export class StreamVideoRN {
80
80
  throw new Error(
81
81
  `Support for navigateAcceptCall or navigateToIncomingCall in pushConfig has been removed.
82
82
  Please watch for incoming and outgoing calls in the root component of your app.
83
- Please see https://getstream.io/video/docs/react-native/advanced/ringing-calls/#watch-for-incoming-and-outgoing-calls for more information.`
83
+ Please see https://getstream.io/video/docs/react-native/advanced/ringing-calls/#watch-for-incoming-and-outgoing-calls for more information.`,
84
84
  );
85
85
  }
86
86
 
@@ -101,7 +101,7 @@ export class StreamVideoRN {
101
101
  static onPushLogout() {
102
102
  if (pushLogoutCallbacks.current) {
103
103
  return Promise.all(
104
- pushLogoutCallbacks.current.map((callback) => callback())
104
+ pushLogoutCallbacks.current.map((callback) => callback()),
105
105
  ).then(() => {});
106
106
  }
107
107
  return Promise.resolve();
@@ -117,7 +117,7 @@ export class StreamVideoRN {
117
117
  * @returns Unsubscribe function
118
118
  */
119
119
  static addOnNewCallNotificationListener(
120
- callback: NewCallNotificationCallback
120
+ callback: NewCallNotificationCallback,
121
121
  ) {
122
122
  if (!newNotificationCallbacks.current) {
123
123
  newNotificationCallbacks.current = [callback];
@@ -101,7 +101,7 @@ export type StreamVideoConfig = {
101
101
  callNotificationTextGetters?: {
102
102
  getTitle: (
103
103
  type: NonRingingPushEvent,
104
- createdUserName: string
104
+ createdUserName: string,
105
105
  ) => string;
106
106
  getBody: (type: NonRingingPushEvent, createdUserName: string) => string;
107
107
  };
@@ -134,7 +134,7 @@ export type StreamVideoConfig = {
134
134
  /** Callback that is called when a non ringing push notification was tapped */
135
135
  onTapNonRingingCallNotification?: (
136
136
  call_cid: string,
137
- type: NonRingingPushEvent
137
+ type: NonRingingPushEvent,
138
138
  ) => void;
139
139
  };
140
140
  foregroundService: {
@@ -6,6 +6,6 @@ export function enterPiPAndroid(width?: number, height?: number) {
6
6
  }
7
7
  return NativeModules?.StreamVideoReactNative?.enterPipMode(
8
8
  width ? Math.floor(width) : 0,
9
- height ? Math.floor(height) : 0
9
+ height ? Math.floor(height) : 0,
10
10
  );
11
11
  }
@@ -1,11 +1,11 @@
1
1
  // Utility to join strings with commas and 'and'
2
2
  export const generateCallTitle = (
3
3
  memberUserIds: string[],
4
- totalMembersToShow?: number
4
+ totalMembersToShow?: number,
5
5
  ) => {
6
6
  const supportedAmountOfMemberUserIds = memberUserIds.slice(
7
7
  0,
8
- totalMembersToShow
8
+ totalMembersToShow,
9
9
  );
10
10
  if (
11
11
  totalMembersToShow &&
@@ -3,7 +3,7 @@ import { type NonRingingPushEvent } from '../StreamVideoRN/types';
3
3
 
4
4
  export type NewCallNotificationCallback = (
5
5
  call: Call,
6
- notificationType: NonRingingPushEvent
6
+ notificationType: NonRingingPushEvent,
7
7
  ) => void;
8
8
 
9
9
  type NewNotificationCallbacks = {
@@ -16,11 +16,11 @@ const newNotificationCallbacks: NewNotificationCallbacks = {};
16
16
 
17
17
  export const onNewCallNotification: NewCallNotificationCallback = (
18
18
  call,
19
- notificationType
19
+ notificationType,
20
20
  ) => {
21
21
  if (newNotificationCallbacks.current && lastCid !== call.cid) {
22
22
  newNotificationCallbacks.current.forEach((callback) =>
23
- callback(call, notificationType)
23
+ callback(call, notificationType),
24
24
  );
25
25
  lastCid = call.cid;
26
26
  }
@@ -4,7 +4,7 @@ let gestureHandler: GestureHandlerType | undefined;
4
4
 
5
5
  try {
6
6
  gestureHandler = require('react-native-gesture-handler');
7
- } catch (e) {}
7
+ } catch {}
8
8
 
9
9
  export const getGestureHandlerLib = (onPackageNotFound = () => {}) => {
10
10
  if (!gestureHandler) {
@@ -4,7 +4,7 @@ let reanimated: ReanimatedType | undefined;
4
4
 
5
5
  try {
6
6
  reanimated = require('react-native-reanimated');
7
- } catch (e) {}
7
+ } catch {}
8
8
 
9
9
  export const getReanimatedLib = (onPackageNotFound = () => {}) => {
10
10
  if (!reanimated) {
@@ -4,7 +4,7 @@ type PushLogoutCallbacks = {
4
4
  current?: Callback[];
5
5
  };
6
6
 
7
- let pushLogoutCallbacks: PushLogoutCallbacks = {};
7
+ const pushLogoutCallbacks: PushLogoutCallbacks = {};
8
8
 
9
9
  export const setPushLogoutCallback = (callback: Callback) => {
10
10
  if (!pushLogoutCallbacks.current) {
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  Call,
3
3
  CallingState,
4
+ getLogger,
4
5
  RxUtils,
5
6
  StreamVideoClient,
6
- getLogger,
7
7
  } from '@stream-io/video-client';
8
8
  import { AppState, Platform } from 'react-native';
9
9
  import type {
@@ -11,22 +11,22 @@ import type {
11
11
  StreamVideoConfig,
12
12
  } from '../StreamVideoRN/types';
13
13
  import {
14
- getFirebaseMessagingLib,
15
- getFirebaseMessagingLibNoThrow,
14
+ type FirebaseMessagingTypes,
16
15
  getExpoNotificationsLib,
17
16
  getExpoNotificationsLibNoThrow,
17
+ getFirebaseMessagingLib,
18
+ getFirebaseMessagingLibNoThrow,
19
+ getIncomingCallForegroundServiceTypes,
18
20
  getNotifeeLibThrowIfNotInstalledForPush,
19
21
  type NotifeeLib,
20
- type FirebaseMessagingTypes,
21
- getIncomingCallForegroundServiceTypes,
22
22
  } from './libs';
23
23
  import {
24
24
  pushAcceptedIncomingCallCId$,
25
+ pushAndroidBackgroundDeliveredIncomingCallCId$,
26
+ pushNonRingingCallData$,
25
27
  pushRejectedIncomingCallCId$,
26
28
  pushTappedIncomingCallCId$,
27
- pushNonRingingCallData$,
28
29
  pushUnsubscriptionCallbacks$,
29
- pushAndroidBackgroundDeliveredIncomingCallCId$,
30
30
  } from './internal/rxSubjects';
31
31
  import {
32
32
  canAddPushWSSubscriptionsRef,
@@ -55,7 +55,7 @@ let lastFirebaseToken = { token: '', userId: '' };
55
55
  export async function initAndroidPushToken(
56
56
  client: StreamVideoClient,
57
57
  pushConfig: PushConfig,
58
- setUnsubscribeListener: (unsubscribe: () => void) => void
58
+ setUnsubscribeListener: (unsubscribe: () => void) => void,
59
59
  ) {
60
60
  if (Platform.OS !== 'android' || !pushConfig.android.pushProviderName) {
61
61
  return;
@@ -69,7 +69,7 @@ export async function initAndroidPushToken(
69
69
  ) {
70
70
  logger(
71
71
  'debug',
72
- `Skipping setting the same token again for userId: ${userId} and token: ${token}`
72
+ `Skipping setting the same token again for userId: ${userId} and token: ${token}`,
73
73
  );
74
74
  return;
75
75
  }
@@ -96,7 +96,7 @@ export async function initAndroidPushToken(
96
96
  const subscription = expoNotificationsLib.addPushTokenListener(
97
97
  (devicePushToken) => {
98
98
  setDeviceToken(devicePushToken.data);
99
- }
99
+ },
100
100
  );
101
101
  setUnsubscribeListener(() => subscription.remove());
102
102
  const devicePushToken =
@@ -113,7 +113,7 @@ export async function initAndroidPushToken(
113
113
  if (messaging) {
114
114
  logger('debug', `setting firebase token listeners`);
115
115
  const unsubscribe = messaging().onTokenRefresh((refreshedToken) =>
116
- setDeviceToken(refreshedToken)
116
+ setDeviceToken(refreshedToken),
117
117
  );
118
118
  setUnsubscribeListener(unsubscribe);
119
119
  const token = await messaging().getToken();
@@ -126,7 +126,7 @@ export async function initAndroidPushToken(
126
126
  * For Ringing and Non-Ringing calls.
127
127
  */
128
128
  export const firebaseDataHandler = async (
129
- data: FirebaseMessagingTypes.RemoteMessage['data']
129
+ data: FirebaseMessagingTypes.RemoteMessage['data'],
130
130
  ) => {
131
131
  if (Platform.OS !== 'android') return;
132
132
  /* Example data from firebase
@@ -155,7 +155,7 @@ export const firebaseDataHandler = async (
155
155
  const logger = getLogger(['firebaseDataHandler']);
156
156
  logger(
157
157
  'debug',
158
- `Notification permission not granted, unable to post ${data.type} notifications`
158
+ `Notification permission not granted, unable to post ${data.type} notifications`,
159
159
  );
160
160
  return;
161
161
  }
@@ -169,7 +169,7 @@ export const firebaseDataHandler = async (
169
169
  const { mustEndCall } = shouldCallBeEnded(
170
170
  callToCheck,
171
171
  created_by_id,
172
- receiver_id
172
+ receiver_id,
173
173
  );
174
174
  return mustEndCall;
175
175
  };
@@ -188,7 +188,7 @@ export const firebaseDataHandler = async (
188
188
  if (!client) {
189
189
  getLogger(['firebaseMessagingOnMessageHandler'])(
190
190
  'debug',
191
- `Closing fg service as there is no client to create from push config`
191
+ `Closing fg service as there is no client to create from push config`,
192
192
  );
193
193
  notifee.stopForegroundService();
194
194
  return;
@@ -198,7 +198,7 @@ export const firebaseDataHandler = async (
198
198
  if (_shouldCallBeClosed) {
199
199
  getLogger(['firebaseMessagingOnMessageHandler'])(
200
200
  'debug',
201
- `Closing fg service callCid: ${call_cid} shouldCallBeClosed: ${_shouldCallBeClosed}`
201
+ `Closing fg service callCid: ${call_cid} shouldCallBeClosed: ${_shouldCallBeClosed}`,
202
202
  );
203
203
  notifee.stopForegroundService();
204
204
  return;
@@ -211,7 +211,7 @@ export const firebaseDataHandler = async (
211
211
  getLogger(['firebaseMessagingOnMessageHandler'])(
212
212
  'debug',
213
213
  `Closing fg service from event callCid: ${call_cid} canListenToWS: ${_canListenToWS}`,
214
- { event }
214
+ { event },
215
215
  );
216
216
  unsubscribeFunctions.forEach((fn) => fn());
217
217
  notifee.stopForegroundService();
@@ -222,7 +222,7 @@ export const firebaseDataHandler = async (
222
222
  getLogger(['firebaseMessagingOnMessageHandler'])(
223
223
  'debug',
224
224
  `Closing fg service from event callCid: ${call_cid} canListenToWS: ${_canListenToWS} shouldCallBeClosed: ${_shouldCallBeClosed}`,
225
- { event }
225
+ { event },
226
226
  );
227
227
  unsubscribeFunctions.forEach((fn) => fn());
228
228
  notifee.stopForegroundService();
@@ -238,7 +238,7 @@ export const firebaseDataHandler = async (
238
238
  unsubscribeFunctions.forEach((fn) => fn());
239
239
  notifee.stopForegroundService();
240
240
  }
241
- }
241
+ },
242
242
  );
243
243
  unsubscribeFunctions.push(unsubscribe);
244
244
  unsubscribeFunctions.push(() => subscription.unsubscribe());
@@ -258,7 +258,7 @@ export const firebaseDataHandler = async (
258
258
  const logger = getLogger(['firebaseMessagingOnMessageHandler']);
259
259
  logger(
260
260
  'error',
261
- "Can't show incoming call notification as either or both incomingCallChannel and incomingCallNotificationTextGetters were not provided"
261
+ "Can't show incoming call notification as either or both incomingCallChannel and incomingCallNotificationTextGetters were not provided",
262
262
  );
263
263
  return;
264
264
  }
@@ -279,7 +279,7 @@ export const firebaseDataHandler = async (
279
279
 
280
280
  getLogger(['firebaseMessagingOnMessageHandler'])(
281
281
  'debug',
282
- `Displaying incoming call notification with callCid: ${call_cid} title: ${title} body: ${body} asForegroundService: ${asForegroundService}`
282
+ `Displaying incoming call notification with callCid: ${call_cid} title: ${title} body: ${body} asForegroundService: ${asForegroundService}`,
283
283
  );
284
284
 
285
285
  const channelId = incomingCallChannel.id;
@@ -340,7 +340,7 @@ export const firebaseDataHandler = async (
340
340
  if (shouldCallBeClosed(callFromPush)) {
341
341
  getLogger(['firebaseMessagingOnMessageHandler'])(
342
342
  'debug',
343
- `Removing incoming call notification immediately with callCid: ${call_cid} as it should be closed`
343
+ `Removing incoming call notification immediately with callCid: ${call_cid} as it should be closed`,
344
344
  );
345
345
  notifee.cancelDisplayedNotification(call_cid);
346
346
  }
@@ -353,7 +353,7 @@ export const firebaseDataHandler = async (
353
353
  const logger = getLogger(['firebaseMessagingOnMessageHandler']);
354
354
  logger(
355
355
  'debug',
356
- "Can't show call notification as either or both callChannel and callNotificationTextGetters is not provided"
356
+ "Can't show call notification as either or both callChannel and callNotificationTextGetters is not provided",
357
357
  );
358
358
  return;
359
359
  }
@@ -369,7 +369,7 @@ export const firebaseDataHandler = async (
369
369
 
370
370
  getLogger(['firebaseMessagingOnMessageHandler'])(
371
371
  'debug',
372
- `Displaying NonRingingPushEvent ${type} notification with title: ${title} body: ${body}`
372
+ `Displaying NonRingingPushEvent ${type} notification with title: ${title} body: ${body}`,
373
373
  );
374
374
  await notifee.displayNotification({
375
375
  title: getTitle(type, createdUserName),
@@ -444,7 +444,7 @@ export const onAndroidNotifeeEvent = async ({
444
444
  ) {
445
445
  getLogger(['onAndroidNotifeeEvent'])(
446
446
  'debug',
447
- `clearPushWSEventSubscriptions for callCId: ${call_cid} mustAccept: ${mustAccept} mustDecline: ${mustDecline}`
447
+ `clearPushWSEventSubscriptions for callCId: ${call_cid} mustAccept: ${mustAccept} mustDecline: ${mustDecline}`,
448
448
  );
449
449
  clearPushWSEventSubscriptions();
450
450
  notifee.stopForegroundService();
@@ -453,41 +453,41 @@ export const onAndroidNotifeeEvent = async ({
453
453
  if (mustAccept) {
454
454
  getLogger(['onAndroidNotifeeEvent'])(
455
455
  'debug',
456
- `pushAcceptedIncomingCallCId$ added with callCId: ${call_cid}`
456
+ `pushAcceptedIncomingCallCId$ added with callCId: ${call_cid}`,
457
457
  );
458
458
  pushAcceptedIncomingCallCId$.next(call_cid);
459
459
  // NOTE: accept will be handled by the app with rxjs observers as the app will go to foreground always
460
460
  } else if (mustDecline) {
461
461
  getLogger(['onAndroidNotifeeEvent'])(
462
462
  'debug',
463
- `pushRejectedIncomingCallCId$ added with callCId: ${call_cid}`
463
+ `pushRejectedIncomingCallCId$ added with callCId: ${call_cid}`,
464
464
  );
465
465
  pushRejectedIncomingCallCId$.next(call_cid);
466
466
  if (hasObservers) {
467
467
  // if we had observers we can return here as the observers will handle the call as the app is in the foreground state
468
468
  getLogger(['onAndroidNotifeeEvent'])(
469
469
  'debug',
470
- `Skipped processCallFromPushInBackground for Declining call with callCId: ${call_cid} as the app is in the foreground state`
470
+ `Skipped processCallFromPushInBackground for Declining call with callCId: ${call_cid} as the app is in the foreground state`,
471
471
  );
472
472
  return;
473
473
  }
474
474
  getLogger(['onAndroidNotifeeEvent'])(
475
475
  'debug',
476
- `start processCallFromPushInBackground - Declining call with callCId: ${call_cid}`
476
+ `start processCallFromPushInBackground - Declining call with callCId: ${call_cid}`,
477
477
  );
478
478
  await processCallFromPushInBackground(pushConfig, call_cid, 'decline');
479
479
  } else {
480
480
  if (type === notifeeLib.EventType.PRESS) {
481
481
  getLogger(['onAndroidNotifeeEvent'])(
482
482
  'debug',
483
- `pushTappedIncomingCallCId$ added with callCId: ${call_cid}`
483
+ `pushTappedIncomingCallCId$ added with callCId: ${call_cid}`,
484
484
  );
485
485
  pushTappedIncomingCallCId$.next(call_cid);
486
486
  // pressed state will be handled by the app with rxjs observers as the app will go to foreground always
487
487
  } else if (isBackground && type === notifeeLib.EventType.DELIVERED) {
488
488
  getLogger(['onAndroidNotifeeEvent'])(
489
489
  'debug',
490
- `pushAndroidBackgroundDeliveredIncomingCallCId$ added with callCId: ${call_cid}`
490
+ `pushAndroidBackgroundDeliveredIncomingCallCId$ added with callCId: ${call_cid}`,
491
491
  );
492
492
  pushAndroidBackgroundDeliveredIncomingCallCId$.next(call_cid);
493
493
  // background delivered state will be handled by the app with rxjs observers as processing needs to happen only when app is opened
@@ -498,11 +498,11 @@ export const onAndroidNotifeeEvent = async ({
498
498
  if (type === notifeeLib.EventType.PRESS) {
499
499
  getLogger(['onAndroidNotifeeEvent'])(
500
500
  'debug',
501
- `onTapNonRingingCallNotification with callCId: ${call_cid}`
501
+ `onTapNonRingingCallNotification with callCId: ${call_cid}`,
502
502
  );
503
503
  pushConfig.onTapNonRingingCallNotification?.(
504
504
  call_cid,
505
- data.type as NonRingingPushEvent
505
+ data.type as NonRingingPushEvent,
506
506
  );
507
507
  }
508
508
  }
@@ -0,0 +1,133 @@
1
+ import { getLogger, RxUtils } from '@stream-io/video-client';
2
+ import { AppState, NativeModules, Platform } from 'react-native';
3
+ import { getCallKeepLib, getVoipPushNotificationLib } from '../libs';
4
+ import {
5
+ pushUnsubscriptionCallbacks$,
6
+ voipPushNotificationCallCId$,
7
+ } from './rxSubjects';
8
+ import { canAddPushWSSubscriptionsRef, shouldCallBeEnded } from './utils';
9
+ import { StreamVideoConfig } from '../../StreamVideoRN/types';
10
+
11
+ export const onVoipNotificationReceived = async (
12
+ notification: any,
13
+ pushConfig: NonNullable<StreamVideoConfig['push']>,
14
+ ) => {
15
+ /* --- Example payload ---
16
+ {
17
+ "aps": {
18
+ "alert": {
19
+ "body": "",
20
+ "title": "Vishal Narkhede is calling you"
21
+ },
22
+ "badge": 0,
23
+ "category": "stream.video",
24
+ "mutable-content": 1
25
+ },
26
+ "stream": {
27
+ "call_cid": "default:ixbm7y0k74pbjnq",
28
+ "call_display_name": "",
29
+ "created_by_display_name": "Vishal Narkhede",
30
+ "created_by_id": "vishalexpo",
31
+ "receiver_id": "santhoshexpo",
32
+ "sender": "stream.video",
33
+ "type": "call.ring",
34
+ "version": "v2"
35
+ }
36
+ } */
37
+ const sender = notification?.stream?.sender;
38
+ const type = notification?.stream?.type;
39
+ // do not process any other notifications other than stream.video or ringing
40
+ if (sender !== 'stream.video' && type !== 'call.ring') {
41
+ return;
42
+ }
43
+ const call_cid = notification?.stream?.call_cid;
44
+ if (!call_cid || Platform.OS !== 'ios' || !pushConfig.ios.pushProviderName) {
45
+ return;
46
+ }
47
+ const logger = getLogger(['setupIosVoipPushEvents']);
48
+ const client = await pushConfig.createStreamVideoClient();
49
+ if (!client) {
50
+ logger(
51
+ 'debug',
52
+ 'client not found, not processing call.ring voip push notification',
53
+ );
54
+ return;
55
+ }
56
+ const callFromPush = await client.onRingingCall(call_cid);
57
+ let uuid = '';
58
+ try {
59
+ uuid =
60
+ await NativeModules?.StreamVideoReactNative?.getIncomingCallUUid(
61
+ call_cid,
62
+ );
63
+ } catch (error) {
64
+ logger('error', 'Error in getting call uuid from native module', error);
65
+ }
66
+ if (!uuid) {
67
+ logger(
68
+ 'error',
69
+ `Not processing call.ring push notification, as no uuid found for call_cid: ${call_cid}`,
70
+ );
71
+ return;
72
+ }
73
+ const created_by_id = notification?.stream?.created_by_id;
74
+ const receiver_id = notification?.stream?.receiver_id;
75
+ function closeCallIfNecessary() {
76
+ const { mustEndCall, callkeepReason } = shouldCallBeEnded(
77
+ callFromPush,
78
+ created_by_id,
79
+ receiver_id,
80
+ );
81
+ if (mustEndCall) {
82
+ const callkeep = getCallKeepLib();
83
+ logger(
84
+ 'debug',
85
+ `callkeep.reportEndCallWithUUID for uuid: ${uuid}, call_cid: ${call_cid}, reason: ${callkeepReason}`,
86
+ );
87
+ callkeep.reportEndCallWithUUID(uuid, callkeepReason);
88
+ const voipPushNotification = getVoipPushNotificationLib();
89
+ voipPushNotification.onVoipNotificationCompleted(uuid);
90
+ return true;
91
+ }
92
+ return false;
93
+ }
94
+ const closed = closeCallIfNecessary();
95
+ const canListenToWS = () =>
96
+ canAddPushWSSubscriptionsRef.current && AppState.currentState !== 'active';
97
+ if (!closed && canListenToWS()) {
98
+ const unsubscribe = callFromPush.on('all', (event) => {
99
+ const _canListenToWS = canListenToWS();
100
+ if (!_canListenToWS) {
101
+ logger(
102
+ 'debug',
103
+ `unsubscribe due to event callCid: ${call_cid} canListenToWS: ${_canListenToWS}`,
104
+ event,
105
+ );
106
+ unsubscribe();
107
+ return;
108
+ }
109
+ const _closed = closeCallIfNecessary();
110
+ if (_closed) {
111
+ logger(
112
+ 'debug',
113
+ `unsubscribe due to event callCid: ${call_cid} canListenToWS: ${_canListenToWS} shouldCallBeClosed: ${_closed}`,
114
+ event,
115
+ );
116
+ unsubscribe();
117
+ }
118
+ });
119
+ const unsubscriptionCallbacks =
120
+ RxUtils.getCurrentValue(pushUnsubscriptionCallbacks$) ?? [];
121
+ pushUnsubscriptionCallbacks$.next([
122
+ ...unsubscriptionCallbacks,
123
+ unsubscribe,
124
+ ]);
125
+ }
126
+ // send the info to this subject, it is listened by callkeep events
127
+ // callkeep events will then accept/reject the call
128
+ logger(
129
+ 'debug',
130
+ `call_cid:${call_cid} uuid:${uuid} received and processed from call.ring push notification`,
131
+ );
132
+ voipPushNotificationCallCId$.next(call_cid);
133
+ };