@stream-io/video-react-native-sdk 0.0.1-alpha.141

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 (360) hide show
  1. package/CHANGELOG.md +739 -0
  2. package/LICENSE +219 -0
  3. package/README.md +19 -0
  4. package/dist/__tests__/components/ActiveCall.test.d.ts +1 -0
  5. package/dist/__tests__/components/ActiveCall.test.js +89 -0
  6. package/dist/__tests__/components/ActiveCall.test.js.map +1 -0
  7. package/dist/__tests__/components/Avatar.test.d.ts +1 -0
  8. package/dist/__tests__/components/Avatar.test.js +34 -0
  9. package/dist/__tests__/components/Avatar.test.js.map +1 -0
  10. package/dist/__tests__/components/ParticipantView.test.d.ts +1 -0
  11. package/dist/__tests__/components/ParticipantView.test.js +66 -0
  12. package/dist/__tests__/components/ParticipantView.test.js.map +1 -0
  13. package/dist/__tests__/mocks/call.d.ts +2 -0
  14. package/dist/__tests__/mocks/call.js +21 -0
  15. package/dist/__tests__/mocks/call.js.map +1 -0
  16. package/dist/__tests__/mocks/client.d.ts +2 -0
  17. package/dist/__tests__/mocks/client.js +31 -0
  18. package/dist/__tests__/mocks/client.js.map +1 -0
  19. package/dist/__tests__/mocks/participant.d.ts +3 -0
  20. package/dist/__tests__/mocks/participant.js +25 -0
  21. package/dist/__tests__/mocks/participant.js.map +1 -0
  22. package/dist/__tests__/utils/RNTLTools.d.ts +15 -0
  23. package/dist/__tests__/utils/RNTLTools.js +54 -0
  24. package/dist/__tests__/utils/RNTLTools.js.map +1 -0
  25. package/dist/index.d.ts +9 -0
  26. package/dist/index.js +39 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/jest-setup.d.ts +1 -0
  29. package/dist/jest-setup.js +34 -0
  30. package/dist/jest-setup.js.map +1 -0
  31. package/dist/src/components/ActiveCall.d.ts +18 -0
  32. package/dist/src/components/ActiveCall.js +117 -0
  33. package/dist/src/components/ActiveCall.js.map +1 -0
  34. package/dist/src/components/Avatar.d.ts +25 -0
  35. package/dist/src/components/Avatar.js +55 -0
  36. package/dist/src/components/Avatar.js.map +1 -0
  37. package/dist/src/components/CallControlsButton.d.ts +22 -0
  38. package/dist/src/components/CallControlsButton.js +43 -0
  39. package/dist/src/components/CallControlsButton.js.map +1 -0
  40. package/dist/src/components/CallControlsView.d.ts +9 -0
  41. package/dist/src/components/CallControlsView.js +95 -0
  42. package/dist/src/components/CallControlsView.js.map +1 -0
  43. package/dist/src/components/CallParticipantsBadge.d.ts +1 -0
  44. package/dist/src/components/CallParticipantsBadge.js +48 -0
  45. package/dist/src/components/CallParticipantsBadge.js.map +1 -0
  46. package/dist/src/components/CallParticipantsInfoView.d.ts +21 -0
  47. package/dist/src/components/CallParticipantsInfoView.js +213 -0
  48. package/dist/src/components/CallParticipantsInfoView.js.map +1 -0
  49. package/dist/src/components/CallParticipantsList.d.ts +25 -0
  50. package/dist/src/components/CallParticipantsList.js +124 -0
  51. package/dist/src/components/CallParticipantsList.js.map +1 -0
  52. package/dist/src/components/CallParticipantsOptions.d.ts +8 -0
  53. package/dist/src/components/CallParticipantsOptions.js +189 -0
  54. package/dist/src/components/CallParticipantsOptions.js.map +1 -0
  55. package/dist/src/components/CallParticipantsSpotlightView.d.ts +1 -0
  56. package/dist/src/components/CallParticipantsSpotlightView.js +40 -0
  57. package/dist/src/components/CallParticipantsSpotlightView.js.map +1 -0
  58. package/dist/src/components/CallParticipantsView.d.ts +1 -0
  59. package/dist/src/components/CallParticipantsView.js +31 -0
  60. package/dist/src/components/CallParticipantsView.js.map +1 -0
  61. package/dist/src/components/IncomingCallView.d.ts +1 -0
  62. package/dist/src/components/IncomingCallView.js +98 -0
  63. package/dist/src/components/IncomingCallView.js.map +1 -0
  64. package/dist/src/components/LobbyView.d.ts +1 -0
  65. package/dist/src/components/LobbyView.js +215 -0
  66. package/dist/src/components/LobbyView.js.map +1 -0
  67. package/dist/src/components/LocalVideoView.d.ts +34 -0
  68. package/dist/src/components/LocalVideoView.js +100 -0
  69. package/dist/src/components/LocalVideoView.js.map +1 -0
  70. package/dist/src/components/NetworkQualityIndicator.d.ts +8 -0
  71. package/dist/src/components/NetworkQualityIndicator.js +36 -0
  72. package/dist/src/components/NetworkQualityIndicator.js.map +1 -0
  73. package/dist/src/components/OutgoingCallView.d.ts +1 -0
  74. package/dist/src/components/OutgoingCallView.js +103 -0
  75. package/dist/src/components/OutgoingCallView.js.map +1 -0
  76. package/dist/src/components/ParticipantReaction.d.ts +7 -0
  77. package/dist/src/components/ParticipantReaction.js +45 -0
  78. package/dist/src/components/ParticipantReaction.js.map +1 -0
  79. package/dist/src/components/ParticipantView.d.ts +42 -0
  80. package/dist/src/components/ParticipantView.js +256 -0
  81. package/dist/src/components/ParticipantView.js.map +1 -0
  82. package/dist/src/components/ReactionsModal.d.ts +7 -0
  83. package/dist/src/components/ReactionsModal.js +65 -0
  84. package/dist/src/components/ReactionsModal.js.map +1 -0
  85. package/dist/src/components/ToggleAudioButton.d.ts +1 -0
  86. package/dist/src/components/ToggleAudioButton.js +78 -0
  87. package/dist/src/components/ToggleAudioButton.js.map +1 -0
  88. package/dist/src/components/ToggleVideoButton.d.ts +1 -0
  89. package/dist/src/components/ToggleVideoButton.js +78 -0
  90. package/dist/src/components/ToggleVideoButton.js.map +1 -0
  91. package/dist/src/components/UserInfoView.d.ts +13 -0
  92. package/dist/src/components/UserInfoView.js +82 -0
  93. package/dist/src/components/UserInfoView.js.map +1 -0
  94. package/dist/src/components/VideoRenderer.d.ts +65 -0
  95. package/dist/src/components/VideoRenderer.js +18 -0
  96. package/dist/src/components/VideoRenderer.js.map +1 -0
  97. package/dist/src/components/index.d.ts +12 -0
  98. package/dist/src/components/index.js +29 -0
  99. package/dist/src/components/index.js.map +1 -0
  100. package/dist/src/constants/A11yLabels.d.ts +20 -0
  101. package/dist/src/constants/A11yLabels.js +29 -0
  102. package/dist/src/constants/A11yLabels.js.map +1 -0
  103. package/dist/src/constants/index.d.ts +11 -0
  104. package/dist/src/constants/index.js +30 -0
  105. package/dist/src/constants/index.js.map +1 -0
  106. package/dist/src/contexts/StreamVideoContext/createStoreContext.d.ts +14 -0
  107. package/dist/src/contexts/StreamVideoContext/createStoreContext.js +100 -0
  108. package/dist/src/contexts/StreamVideoContext/createStoreContext.js.map +1 -0
  109. package/dist/src/contexts/StreamVideoContext/index.d.ts +30 -0
  110. package/dist/src/contexts/StreamVideoContext/index.js +18 -0
  111. package/dist/src/contexts/StreamVideoContext/index.js.map +1 -0
  112. package/dist/src/contexts/index.d.ts +1 -0
  113. package/dist/src/contexts/index.js +18 -0
  114. package/dist/src/contexts/index.js.map +1 -0
  115. package/dist/src/hooks/index.d.ts +10 -0
  116. package/dist/src/hooks/index.js +27 -0
  117. package/dist/src/hooks/index.js.map +1 -0
  118. package/dist/src/hooks/useCallControls.d.ts +14 -0
  119. package/dist/src/hooks/useCallControls.js +148 -0
  120. package/dist/src/hooks/useCallControls.js.map +1 -0
  121. package/dist/src/hooks/useCallCycleEffect.d.ts +8 -0
  122. package/dist/src/hooks/useCallCycleEffect.js +62 -0
  123. package/dist/src/hooks/useCallCycleEffect.js.map +1 -0
  124. package/dist/src/hooks/useCallKeep.d.ts +11 -0
  125. package/dist/src/hooks/useCallKeep.js +41 -0
  126. package/dist/src/hooks/useCallKeep.js.map +1 -0
  127. package/dist/src/hooks/useCreateStreamVideoClient.d.ts +33 -0
  128. package/dist/src/hooks/useCreateStreamVideoClient.js +40 -0
  129. package/dist/src/hooks/useCreateStreamVideoClient.js.map +1 -0
  130. package/dist/src/hooks/useIncallManager.d.ts +13 -0
  131. package/dist/src/hooks/useIncallManager.js +24 -0
  132. package/dist/src/hooks/useIncallManager.js.map +1 -0
  133. package/dist/src/hooks/useLocalVideoStream.d.ts +7 -0
  134. package/dist/src/hooks/useLocalVideoStream.js +34 -0
  135. package/dist/src/hooks/useLocalVideoStream.js.map +1 -0
  136. package/dist/src/hooks/useMutingState.d.ts +12 -0
  137. package/dist/src/hooks/useMutingState.js +25 -0
  138. package/dist/src/hooks/useMutingState.js.map +1 -0
  139. package/dist/src/hooks/usePermissionNotification.d.ts +18 -0
  140. package/dist/src/hooks/usePermissionNotification.js +33 -0
  141. package/dist/src/hooks/usePermissionNotification.js.map +1 -0
  142. package/dist/src/hooks/usePermissionRequest.d.ts +1 -0
  143. package/dist/src/hooks/usePermissionRequest.js +62 -0
  144. package/dist/src/hooks/usePermissionRequest.js.map +1 -0
  145. package/dist/src/hooks/usePublishMediaStreams.d.ts +6 -0
  146. package/dist/src/hooks/usePublishMediaStreams.js +49 -0
  147. package/dist/src/hooks/usePublishMediaStreams.js.map +1 -0
  148. package/dist/src/icons/ArrowRight.d.ts +5 -0
  149. package/dist/src/icons/ArrowRight.js +9 -0
  150. package/dist/src/icons/ArrowRight.js.map +1 -0
  151. package/dist/src/icons/CameraSwitch.d.ts +5 -0
  152. package/dist/src/icons/CameraSwitch.js +9 -0
  153. package/dist/src/icons/CameraSwitch.js.map +1 -0
  154. package/dist/src/icons/Chat.d.ts +5 -0
  155. package/dist/src/icons/Chat.js +9 -0
  156. package/dist/src/icons/Chat.js.map +1 -0
  157. package/dist/src/icons/Cross.d.ts +5 -0
  158. package/dist/src/icons/Cross.js +9 -0
  159. package/dist/src/icons/Cross.js.map +1 -0
  160. package/dist/src/icons/Mic.d.ts +5 -0
  161. package/dist/src/icons/Mic.js +10 -0
  162. package/dist/src/icons/Mic.js.map +1 -0
  163. package/dist/src/icons/MicOff.d.ts +5 -0
  164. package/dist/src/icons/MicOff.js +9 -0
  165. package/dist/src/icons/MicOff.js.map +1 -0
  166. package/dist/src/icons/Participants.d.ts +5 -0
  167. package/dist/src/icons/Participants.js +9 -0
  168. package/dist/src/icons/Participants.js.map +1 -0
  169. package/dist/src/icons/Phone.d.ts +5 -0
  170. package/dist/src/icons/Phone.js +9 -0
  171. package/dist/src/icons/Phone.js.map +1 -0
  172. package/dist/src/icons/PhoneDown.d.ts +5 -0
  173. package/dist/src/icons/PhoneDown.js +10 -0
  174. package/dist/src/icons/PhoneDown.js.map +1 -0
  175. package/dist/src/icons/Pin.d.ts +5 -0
  176. package/dist/src/icons/Pin.js +9 -0
  177. package/dist/src/icons/Pin.js.map +1 -0
  178. package/dist/src/icons/Reaction.d.ts +5 -0
  179. package/dist/src/icons/Reaction.js +9 -0
  180. package/dist/src/icons/Reaction.js.map +1 -0
  181. package/dist/src/icons/ScreenShare.d.ts +5 -0
  182. package/dist/src/icons/ScreenShare.js +40 -0
  183. package/dist/src/icons/ScreenShare.js.map +1 -0
  184. package/dist/src/icons/Settings.d.ts +5 -0
  185. package/dist/src/icons/Settings.js +34 -0
  186. package/dist/src/icons/Settings.js.map +1 -0
  187. package/dist/src/icons/Spotlight.d.ts +5 -0
  188. package/dist/src/icons/Spotlight.js +9 -0
  189. package/dist/src/icons/Spotlight.js.map +1 -0
  190. package/dist/src/icons/ThreeDots.d.ts +5 -0
  191. package/dist/src/icons/ThreeDots.js +11 -0
  192. package/dist/src/icons/ThreeDots.js.map +1 -0
  193. package/dist/src/icons/Video.d.ts +5 -0
  194. package/dist/src/icons/Video.js +9 -0
  195. package/dist/src/icons/Video.js.map +1 -0
  196. package/dist/src/icons/VideoDisabled.d.ts +5 -0
  197. package/dist/src/icons/VideoDisabled.js +10 -0
  198. package/dist/src/icons/VideoDisabled.js.map +1 -0
  199. package/dist/src/icons/VideoOff.d.ts +5 -0
  200. package/dist/src/icons/VideoOff.js +10 -0
  201. package/dist/src/icons/VideoOff.js.map +1 -0
  202. package/dist/src/icons/VideoSlash.d.ts +5 -0
  203. package/dist/src/icons/VideoSlash.js +10 -0
  204. package/dist/src/icons/VideoSlash.js.map +1 -0
  205. package/dist/src/icons/index.d.ts +19 -0
  206. package/dist/src/icons/index.js +36 -0
  207. package/dist/src/icons/index.js.map +1 -0
  208. package/dist/src/providers/MediaDevices.d.ts +9 -0
  209. package/dist/src/providers/MediaDevices.js +43 -0
  210. package/dist/src/providers/MediaDevices.js.map +1 -0
  211. package/dist/src/providers/StreamCall.d.ts +81 -0
  212. package/dist/src/providers/StreamCall.js +74 -0
  213. package/dist/src/providers/StreamCall.js.map +1 -0
  214. package/dist/src/providers/StreamVideo.d.ts +10 -0
  215. package/dist/src/providers/StreamVideo.js +66 -0
  216. package/dist/src/providers/StreamVideo.js.map +1 -0
  217. package/dist/src/providers/index.d.ts +2 -0
  218. package/dist/src/providers/index.js +19 -0
  219. package/dist/src/providers/index.js.map +1 -0
  220. package/dist/src/theme/avatar.d.ts +2 -0
  221. package/dist/src/theme/avatar.js +11 -0
  222. package/dist/src/theme/avatar.js.map +1 -0
  223. package/dist/src/theme/button.d.ts +2 -0
  224. package/dist/src/theme/button.js +11 -0
  225. package/dist/src/theme/button.js.map +1 -0
  226. package/dist/src/theme/colors.d.ts +3 -0
  227. package/dist/src/theme/colors.js +49 -0
  228. package/dist/src/theme/colors.js.map +1 -0
  229. package/dist/src/theme/constants.d.ts +47 -0
  230. package/dist/src/theme/constants.js +54 -0
  231. package/dist/src/theme/constants.js.map +1 -0
  232. package/dist/src/theme/fonts.d.ts +2 -0
  233. package/dist/src/theme/fonts.js +67 -0
  234. package/dist/src/theme/fonts.js.map +1 -0
  235. package/dist/src/theme/icon.d.ts +2 -0
  236. package/dist/src/theme/icon.js +11 -0
  237. package/dist/src/theme/icon.js.map +1 -0
  238. package/dist/src/theme/index.d.ts +2 -0
  239. package/dist/src/theme/index.js +26 -0
  240. package/dist/src/theme/index.js.map +1 -0
  241. package/dist/src/theme/margin.d.ts +2 -0
  242. package/dist/src/theme/margin.js +11 -0
  243. package/dist/src/theme/margin.js.map +1 -0
  244. package/dist/src/theme/padding.d.ts +2 -0
  245. package/dist/src/theme/padding.js +11 -0
  246. package/dist/src/theme/padding.js.map +1 -0
  247. package/dist/src/theme/rounded.d.ts +2 -0
  248. package/dist/src/theme/rounded.js +11 -0
  249. package/dist/src/theme/rounded.js.map +1 -0
  250. package/dist/src/theme/spacing.d.ts +2 -0
  251. package/dist/src/theme/spacing.js +11 -0
  252. package/dist/src/theme/spacing.js.map +1 -0
  253. package/dist/src/theme/types.d.ts +45 -0
  254. package/dist/src/theme/types.js +3 -0
  255. package/dist/src/theme/types.js.map +1 -0
  256. package/dist/src/utils/StreamVideoRN.d.ts +25 -0
  257. package/dist/src/utils/StreamVideoRN.js +23 -0
  258. package/dist/src/utils/StreamVideoRN.js.map +1 -0
  259. package/dist/src/utils/hooks/index.d.ts +3 -0
  260. package/dist/src/utils/hooks/index.js +20 -0
  261. package/dist/src/utils/hooks/index.js.map +1 -0
  262. package/dist/src/utils/hooks/useAppStateListener.d.ts +1 -0
  263. package/dist/src/utils/hooks/useAppStateListener.js +41 -0
  264. package/dist/src/utils/hooks/useAppStateListener.js.map +1 -0
  265. package/dist/src/utils/hooks/useDebouncedValue.d.ts +7 -0
  266. package/dist/src/utils/hooks/useDebouncedValue.js +22 -0
  267. package/dist/src/utils/hooks/useDebouncedValue.js.map +1 -0
  268. package/dist/src/utils/hooks/usePrevious.d.ts +1 -0
  269. package/dist/src/utils/hooks/usePrevious.js +13 -0
  270. package/dist/src/utils/hooks/usePrevious.js.map +1 -0
  271. package/dist/src/utils/index.d.ts +5 -0
  272. package/dist/src/utils/index.js +53 -0
  273. package/dist/src/utils/index.js.map +1 -0
  274. package/dist/src/utils/verifyAndroidBluetoothPermissions.d.ts +1 -0
  275. package/dist/src/utils/verifyAndroidBluetoothPermissions.js +30 -0
  276. package/dist/src/utils/verifyAndroidBluetoothPermissions.js.map +1 -0
  277. package/index.ts +22 -0
  278. package/package.json +70 -0
  279. package/src/components/ActiveCall.tsx +122 -0
  280. package/src/components/Avatar.tsx +88 -0
  281. package/src/components/CallControlsButton.tsx +72 -0
  282. package/src/components/CallControlsView.tsx +128 -0
  283. package/src/components/CallParticipantsBadge.tsx +57 -0
  284. package/src/components/CallParticipantsInfoView.tsx +287 -0
  285. package/src/components/CallParticipantsList.tsx +172 -0
  286. package/src/components/CallParticipantsOptions.tsx +248 -0
  287. package/src/components/CallParticipantsSpotlightView.tsx +53 -0
  288. package/src/components/CallParticipantsView.tsx +30 -0
  289. package/src/components/IncomingCallView.tsx +133 -0
  290. package/src/components/LobbyView.tsx +236 -0
  291. package/src/components/LocalVideoView.tsx +141 -0
  292. package/src/components/NetworkQualityIndicator.tsx +72 -0
  293. package/src/components/OutgoingCallView.tsx +133 -0
  294. package/src/components/ParticipantReaction.tsx +59 -0
  295. package/src/components/ParticipantView.tsx +315 -0
  296. package/src/components/ReactionsModal.tsx +90 -0
  297. package/src/components/ToggleAudioButton.tsx +103 -0
  298. package/src/components/ToggleVideoButton.tsx +103 -0
  299. package/src/components/UserInfoView.tsx +118 -0
  300. package/src/components/VideoRenderer.tsx +85 -0
  301. package/src/components/index.ts +12 -0
  302. package/src/constants/A11yLabels.ts +24 -0
  303. package/src/constants/index.ts +28 -0
  304. package/src/contexts/StreamVideoContext/createStoreContext.tsx +117 -0
  305. package/src/contexts/StreamVideoContext/index.tsx +37 -0
  306. package/src/contexts/index.ts +1 -0
  307. package/src/hooks/index.ts +10 -0
  308. package/src/hooks/useCallControls.tsx +186 -0
  309. package/src/hooks/useCallCycleEffect.tsx +68 -0
  310. package/src/hooks/useCallKeep.tsx +51 -0
  311. package/src/hooks/useCreateStreamVideoClient.tsx +77 -0
  312. package/src/hooks/useIncallManager.tsx +23 -0
  313. package/src/hooks/useLocalVideoStream.ts +36 -0
  314. package/src/hooks/useMutingState.ts +24 -0
  315. package/src/hooks/usePermissionNotification.tsx +53 -0
  316. package/src/hooks/usePermissionRequest.tsx +67 -0
  317. package/src/hooks/usePublishMediaStreams.ts +59 -0
  318. package/src/icons/ArrowRight.tsx +16 -0
  319. package/src/icons/CameraSwitch.tsx +14 -0
  320. package/src/icons/Chat.tsx +14 -0
  321. package/src/icons/Cross.tsx +14 -0
  322. package/src/icons/Mic.tsx +18 -0
  323. package/src/icons/MicOff.tsx +14 -0
  324. package/src/icons/Participants.tsx +16 -0
  325. package/src/icons/Phone.tsx +14 -0
  326. package/src/icons/PhoneDown.tsx +15 -0
  327. package/src/icons/Pin.tsx +16 -0
  328. package/src/icons/Reaction.tsx +14 -0
  329. package/src/icons/ScreenShare.tsx +32 -0
  330. package/src/icons/Settings.tsx +13 -0
  331. package/src/icons/Spotlight.tsx +16 -0
  332. package/src/icons/ThreeDots.tsx +13 -0
  333. package/src/icons/Video.tsx +14 -0
  334. package/src/icons/VideoDisabled.tsx +22 -0
  335. package/src/icons/VideoOff.tsx +20 -0
  336. package/src/icons/VideoSlash.tsx +15 -0
  337. package/src/icons/index.tsx +19 -0
  338. package/src/providers/MediaDevices.tsx +45 -0
  339. package/src/providers/StreamCall.tsx +136 -0
  340. package/src/providers/StreamVideo.tsx +50 -0
  341. package/src/providers/index.ts +2 -0
  342. package/src/theme/avatar.ts +9 -0
  343. package/src/theme/button.ts +9 -0
  344. package/src/theme/colors.ts +49 -0
  345. package/src/theme/constants.ts +51 -0
  346. package/src/theme/fonts.ts +65 -0
  347. package/src/theme/icon.ts +9 -0
  348. package/src/theme/index.ts +25 -0
  349. package/src/theme/margin.ts +9 -0
  350. package/src/theme/padding.ts +9 -0
  351. package/src/theme/rounded.ts +9 -0
  352. package/src/theme/spacing.ts +9 -0
  353. package/src/theme/types.ts +64 -0
  354. package/src/utils/StreamVideoRN.ts +35 -0
  355. package/src/utils/hooks/index.ts +3 -0
  356. package/src/utils/hooks/useAppStateListener.ts +48 -0
  357. package/src/utils/hooks/useDebouncedValue.ts +21 -0
  358. package/src/utils/hooks/usePrevious.ts +11 -0
  359. package/src/utils/index.ts +45 -0
  360. package/src/utils/verifyAndroidBluetoothPermissions.ts +31 -0
@@ -0,0 +1,10 @@
1
+ export * from './useCallControls';
2
+ export * from './useCallCycleEffect';
3
+ export * from './useMutingState';
4
+ export * from './useLocalVideoStream';
5
+ export * from './useCallKeep';
6
+ export * from './useIncallManager';
7
+ export * from './usePublishMediaStreams';
8
+ export * from './usePermissionRequest';
9
+ export * from './usePermissionNotification';
10
+ export * from './useCreateStreamVideoClient';
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./useCallControls"), exports);
18
+ __exportStar(require("./useCallCycleEffect"), exports);
19
+ __exportStar(require("./useMutingState"), exports);
20
+ __exportStar(require("./useLocalVideoStream"), exports);
21
+ __exportStar(require("./useCallKeep"), exports);
22
+ __exportStar(require("./useIncallManager"), exports);
23
+ __exportStar(require("./usePublishMediaStreams"), exports);
24
+ __exportStar(require("./usePermissionRequest"), exports);
25
+ __exportStar(require("./usePermissionNotification"), exports);
26
+ __exportStar(require("./useCreateStreamVideoClient"), exports);
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,uDAAqC;AACrC,mDAAiC;AACjC,wDAAsC;AACtC,gDAA8B;AAC9B,qDAAmC;AACnC,2DAAyC;AACzC,yDAAuC;AACvC,8DAA4C;AAC5C,+DAA6C"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * A helper hook which exposes audio, video mute and camera facing mode and
3
+ * their respective functions to toggle state
4
+ *
5
+ * @category Device Management
6
+ */
7
+ export declare const useCallControls: () => {
8
+ isAudioPublished: boolean | undefined;
9
+ isVideoPublished: boolean | undefined;
10
+ isCameraOnFrontFacingMode: boolean;
11
+ toggleAudioMuted: () => Promise<void>;
12
+ toggleVideoMuted: () => Promise<void>;
13
+ toggleCameraFacingMode: () => void;
14
+ };
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.useCallControls = void 0;
7
+ const video_client_1 = require("@stream-io/video-client");
8
+ const video_react_bindings_1 = require("@stream-io/video-react-bindings");
9
+ const react_1 = require("react");
10
+ const contexts_1 = require("../contexts");
11
+ const useAppStateListener_1 = require("../utils/hooks/useAppStateListener");
12
+ const netinfo_1 = __importDefault(require("@react-native-community/netinfo"));
13
+ /**
14
+ * A helper hook which exposes audio, video mute and camera facing mode and
15
+ * their respective functions to toggle state
16
+ *
17
+ * @category Device Management
18
+ */
19
+ const useCallControls = () => {
20
+ const localParticipant = (0, video_react_bindings_1.useLocalParticipant)();
21
+ const call = (0, video_react_bindings_1.useCall)();
22
+ /** Refs to keep track of the current call and whether the user is online or not */
23
+ const callRef = (0, react_1.useRef)(call);
24
+ callRef.current = call;
25
+ const isOnlineRef = (0, react_1.useRef)(true);
26
+ const setState = (0, contexts_1.useStreamVideoStoreSetState)();
27
+ const isCameraOnFrontFacingMode = (0, contexts_1.useStreamVideoStoreValue)((store) => store.isCameraOnFrontFacingMode);
28
+ const currentAudioDevice = (0, contexts_1.useStreamVideoStoreValue)((store) => store.currentAudioDevice);
29
+ const videoDevices = (0, contexts_1.useStreamVideoStoreValue)((store) => store.videoDevices);
30
+ const currentVideoDevice = (0, contexts_1.useStreamVideoStoreValue)((store) => store.currentVideoDevice);
31
+ const publishAudioStream = (0, react_1.useCallback)(async () => {
32
+ try {
33
+ // Client picks up the default audio stream.
34
+ // For mobile devices there will always be one audio input
35
+ if (currentAudioDevice && isOnlineRef.current) {
36
+ const audioStream = await (0, video_client_1.getAudioStream)(currentAudioDevice.deviceId);
37
+ if (call) {
38
+ await call.publishAudioStream(audioStream);
39
+ }
40
+ }
41
+ }
42
+ catch (e) {
43
+ console.log('Failed to publish audio stream', e);
44
+ }
45
+ }, [currentAudioDevice, call]);
46
+ const publishVideoStream = (0, react_1.useCallback)(async () => {
47
+ try {
48
+ if (currentVideoDevice && isOnlineRef.current) {
49
+ const videoStream = await (0, video_client_1.getVideoStream)(currentVideoDevice.deviceId);
50
+ if (call) {
51
+ await call.publishVideoStream(videoStream);
52
+ }
53
+ }
54
+ }
55
+ catch (e) {
56
+ console.log('Failed to publish video stream', e);
57
+ }
58
+ }, [call, currentVideoDevice]);
59
+ const isAudioPublished = localParticipant?.publishedTracks.includes(video_client_1.SfuModels.TrackType.AUDIO);
60
+ const isVideoPublished = localParticipant?.publishedTracks.includes(video_client_1.SfuModels.TrackType.VIDEO);
61
+ /** Refs to keep track of whether the user has published the track before going offline */
62
+ const isAudioPublishedRef = (0, react_1.useRef)(false);
63
+ const isVideoPublishedRef = (0, react_1.useRef)(false);
64
+ isAudioPublishedRef.current = !isAudioPublished;
65
+ isVideoPublishedRef.current = !isVideoPublished;
66
+ /** Refs to be used for useEffect that does the rejoining flow when coming back offline */
67
+ const publishAudioStreamRef = (0, react_1.useRef)(publishAudioStream);
68
+ const publishVideoStreamRef = (0, react_1.useRef)(publishVideoStream);
69
+ publishAudioStreamRef.current = publishAudioStream;
70
+ publishVideoStreamRef.current = publishVideoStream;
71
+ /** Attempt to republish video stream when app comes back to foreground */
72
+ (0, useAppStateListener_1.useAppStateListener)(isVideoPublishedRef.current ? publishVideoStream : undefined);
73
+ /**
74
+ * Effect to re-join to an existing call happens in case the user comes back online
75
+ */
76
+ (0, react_1.useEffect)(() => {
77
+ const unsubscribe = netinfo_1.default.addEventListener(async (state) => {
78
+ const { isConnected, isInternetReachable } = state;
79
+ const isOnline = isConnected !== false && isInternetReachable !== false;
80
+ isOnlineRef.current = isOnline;
81
+ if (!callRef.current)
82
+ return;
83
+ const callToJoin = callRef.current;
84
+ await rejoinCall(callToJoin, isOnline, isAudioPublishedRef.current, isVideoPublishedRef.current, publishAudioStreamRef.current, publishVideoStreamRef.current);
85
+ });
86
+ return unsubscribe;
87
+ }, []);
88
+ const toggleVideoMuted = (0, react_1.useCallback)(async () => {
89
+ if (!isVideoPublished) {
90
+ publishVideoStream();
91
+ }
92
+ else {
93
+ await call?.stopPublish(video_client_1.SfuModels.TrackType.VIDEO);
94
+ }
95
+ }, [call, isVideoPublished, publishVideoStream]);
96
+ const toggleAudioMuted = (0, react_1.useCallback)(async () => {
97
+ if (!isAudioPublished) {
98
+ publishAudioStream();
99
+ }
100
+ else {
101
+ await call?.stopPublish(video_client_1.SfuModels.TrackType.AUDIO);
102
+ }
103
+ }, [call, isAudioPublished, publishAudioStream]);
104
+ const toggleCameraFacingMode = (0, react_1.useCallback)(() => {
105
+ const videoDevice = videoDevices.find((device) => device.kind === 'videoinput' &&
106
+ (!isCameraOnFrontFacingMode
107
+ ? device.facing === 'front'
108
+ : device.facing === 'environment'));
109
+ setState((prevState) => ({
110
+ currentVideoDevice: videoDevice,
111
+ isCameraOnFrontFacingMode: !prevState.isCameraOnFrontFacingMode,
112
+ }));
113
+ }, [isCameraOnFrontFacingMode, videoDevices, setState]);
114
+ return {
115
+ isAudioPublished,
116
+ isVideoPublished,
117
+ isCameraOnFrontFacingMode,
118
+ toggleAudioMuted,
119
+ toggleVideoMuted,
120
+ toggleCameraFacingMode,
121
+ };
122
+ };
123
+ exports.useCallControls = useCallControls;
124
+ /**
125
+ * Helper function to rejoin a call and then publish the streams
126
+ */
127
+ async function rejoinCall(callToJoin, isOnline, isAudioPublished, isVideoPublished, publishAudioStream, publishVideoStream) {
128
+ const isCurrentStateOffline = callToJoin.state.callingState === video_client_1.CallingState.OFFLINE;
129
+ if (!isOnline && !isCurrentStateOffline) {
130
+ callToJoin.state.setCallingState(video_client_1.CallingState.OFFLINE);
131
+ }
132
+ else if (isOnline && isCurrentStateOffline && callToJoin.rejoin) {
133
+ try {
134
+ await callToJoin.rejoin();
135
+ if (isAudioPublished) {
136
+ await publishAudioStream();
137
+ }
138
+ if (isVideoPublished) {
139
+ await publishVideoStream();
140
+ }
141
+ }
142
+ catch (e) {
143
+ console.error('Failed to rejoin', e);
144
+ callToJoin.state.setCallingState(video_client_1.CallingState.RECONNECTING_FAILED);
145
+ }
146
+ }
147
+ }
148
+ //# sourceMappingURL=useCallControls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCallControls.js","sourceRoot":"","sources":["../../../src/hooks/useCallControls.tsx"],"names":[],"mappings":";;;;;;AAAA,0DAMiC;AACjC,0EAA+E;AAC/E,iCAAuD;AACvD,0CAGqB;AACrB,4EAAyE;AACzE,8EAAsD;AAEtD;;;;;GAKG;AACI,MAAM,eAAe,GAAG,GAAG,EAAE;IAClC,MAAM,gBAAgB,GAAG,IAAA,0CAAmB,GAAE,CAAC;IAC/C,MAAM,IAAI,GAAG,IAAA,8BAAO,GAAE,CAAC;IACvB,mFAAmF;IACnF,MAAM,OAAO,GAAG,IAAA,cAAM,EAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IACvB,MAAM,WAAW,GAAG,IAAA,cAAM,EAAC,IAAI,CAAC,CAAC;IAEjC,MAAM,QAAQ,GAAG,IAAA,sCAA2B,GAAE,CAAC;IAC/C,MAAM,yBAAyB,GAAG,IAAA,mCAAwB,EACxD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,yBAAyB,CAC3C,CAAC;IACF,MAAM,kBAAkB,GAAG,IAAA,mCAAwB,EACjD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,kBAAkB,CACpC,CAAC;IACF,MAAM,YAAY,GAAG,IAAA,mCAAwB,EAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC7E,MAAM,kBAAkB,GAAG,IAAA,mCAAwB,EACjD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,kBAAkB,CACpC,CAAC;IAEF,MAAM,kBAAkB,GAAG,IAAA,mBAAW,EAAC,KAAK,IAAI,EAAE;QAChD,IAAI;YACF,4CAA4C;YAC5C,0DAA0D;YAC1D,IAAI,kBAAkB,IAAI,WAAW,CAAC,OAAO,EAAE;gBAC7C,MAAM,WAAW,GAAG,MAAM,IAAA,6BAAc,EAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;gBACtE,IAAI,IAAI,EAAE;oBACR,MAAM,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;iBAC5C;aACF;SACF;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,CAAC,CAAC,CAAC;SAClD;IACH,CAAC,EAAE,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,CAAC;IAE/B,MAAM,kBAAkB,GAAG,IAAA,mBAAW,EAAC,KAAK,IAAI,EAAE;QAChD,IAAI;YACF,IAAI,kBAAkB,IAAI,WAAW,CAAC,OAAO,EAAE;gBAC7C,MAAM,WAAW,GAAG,MAAM,IAAA,6BAAc,EAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;gBACtE,IAAI,IAAI,EAAE;oBACR,MAAM,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;iBAC5C;aACF;SACF;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,CAAC,CAAC,CAAC;SAClD;IACH,CAAC,EAAE,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAE/B,MAAM,gBAAgB,GAAG,gBAAgB,EAAE,eAAe,CAAC,QAAQ,CACjE,wBAAS,CAAC,SAAS,CAAC,KAAK,CAC1B,CAAC;IACF,MAAM,gBAAgB,GAAG,gBAAgB,EAAE,eAAe,CAAC,QAAQ,CACjE,wBAAS,CAAC,SAAS,CAAC,KAAK,CAC1B,CAAC;IACF,2FAA2F;IAC3F,MAAM,mBAAmB,GAAG,IAAA,cAAM,EAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,mBAAmB,GAAG,IAAA,cAAM,EAAC,KAAK,CAAC,CAAC;IAC1C,mBAAmB,CAAC,OAAO,GAAG,CAAC,gBAAgB,CAAC;IAChD,mBAAmB,CAAC,OAAO,GAAG,CAAC,gBAAgB,CAAC;IAEhD,0FAA0F;IAC1F,MAAM,qBAAqB,GAAG,IAAA,cAAM,EAAC,kBAAkB,CAAC,CAAC;IACzD,MAAM,qBAAqB,GAAG,IAAA,cAAM,EAAC,kBAAkB,CAAC,CAAC;IACzD,qBAAqB,CAAC,OAAO,GAAG,kBAAkB,CAAC;IACnD,qBAAqB,CAAC,OAAO,GAAG,kBAAkB,CAAC;IAEnD,0EAA0E;IAC1E,IAAA,yCAAmB,EACjB,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAC7D,CAAC;IAEF;;OAEG;IACH,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,WAAW,GAAG,iBAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC3D,MAAM,EAAE,WAAW,EAAE,mBAAmB,EAAE,GAAG,KAAK,CAAC;YACnD,MAAM,QAAQ,GAAG,WAAW,KAAK,KAAK,IAAI,mBAAmB,KAAK,KAAK,CAAC;YACxE,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;YAC/B,IAAI,CAAC,OAAO,CAAC,OAAO;gBAAE,OAAO;YAC7B,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;YACnC,MAAM,UAAU,CACd,UAAU,EACV,QAAQ,EACR,mBAAmB,CAAC,OAAO,EAC3B,mBAAmB,CAAC,OAAO,EAC3B,qBAAqB,CAAC,OAAO,EAC7B,qBAAqB,CAAC,OAAO,CAC9B,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,WAAW,CAAC;IACrB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,gBAAgB,GAAG,IAAA,mBAAW,EAAC,KAAK,IAAI,EAAE;QAC9C,IAAI,CAAC,gBAAgB,EAAE;YACrB,kBAAkB,EAAE,CAAC;SACtB;aAAM;YACL,MAAM,IAAI,EAAE,WAAW,CAAC,wBAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SACpD;IACH,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAEjD,MAAM,gBAAgB,GAAG,IAAA,mBAAW,EAAC,KAAK,IAAI,EAAE;QAC9C,IAAI,CAAC,gBAAgB,EAAE;YACrB,kBAAkB,EAAE,CAAC;SACtB;aAAM;YACL,MAAM,IAAI,EAAE,WAAW,CAAC,wBAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SACpD;IACH,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAEjD,MAAM,sBAAsB,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QAC9C,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CACnC,CAAC,MAAM,EAAE,EAAE,CACT,MAAM,CAAC,IAAI,KAAK,YAAY;YAC5B,CAAC,CAAC,yBAAyB;gBACzB,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,OAAO;gBAC3B,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,aAAa,CAAC,CACvC,CAAC;QACF,QAAQ,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YACvB,kBAAkB,EAAE,WAAW;YAC/B,yBAAyB,EAAE,CAAC,SAAS,CAAC,yBAAyB;SAChE,CAAC,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,yBAAyB,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC;IAExD,OAAO;QACL,gBAAgB;QAChB,gBAAgB;QAChB,yBAAyB;QACzB,gBAAgB;QAChB,gBAAgB;QAChB,sBAAsB;KACvB,CAAC;AACJ,CAAC,CAAC;AApIW,QAAA,eAAe,mBAoI1B;AAEF;;GAEG;AACH,KAAK,UAAU,UAAU,CACvB,UAAgB,EAChB,QAAiB,EACjB,gBAAyB,EACzB,gBAAyB,EACzB,kBAAuC,EACvC,kBAAuC;IAEvC,MAAM,qBAAqB,GACzB,UAAU,CAAC,KAAK,CAAC,YAAY,KAAK,2BAAY,CAAC,OAAO,CAAC;IACzD,IAAI,CAAC,QAAQ,IAAI,CAAC,qBAAqB,EAAE;QACvC,UAAU,CAAC,KAAK,CAAC,eAAe,CAAC,2BAAY,CAAC,OAAO,CAAC,CAAC;KACxD;SAAM,IAAI,QAAQ,IAAI,qBAAqB,IAAI,UAAU,CAAC,MAAM,EAAE;QACjE,IAAI;YACF,MAAM,UAAU,CAAC,MAAM,EAAE,CAAC;YAC1B,IAAI,gBAAgB,EAAE;gBACpB,MAAM,kBAAkB,EAAE,CAAC;aAC5B;YACD,IAAI,gBAAgB,EAAE;gBACpB,MAAM,kBAAkB,EAAE,CAAC;aAC5B;SACF;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;YACrC,UAAU,CAAC,KAAK,CAAC,eAAe,CAAC,2BAAY,CAAC,mBAAmB,CAAC,CAAC;SACpE;KACF;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { CallCycleHandlersType } from '../providers';
2
+ /**
3
+ *
4
+ * @param callCycleHandlers
5
+ *
6
+ * @category Client State
7
+ */
8
+ export declare const useCallCycleEffect: (callCycleHandlers: CallCycleHandlersType) => void;
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useCallCycleEffect = void 0;
4
+ const video_react_bindings_1 = require("@stream-io/video-react-bindings");
5
+ const react_1 = require("react");
6
+ const video_client_1 = require("@stream-io/video-client");
7
+ const usePrevious_1 = require("../utils/hooks/usePrevious");
8
+ const NON_ACTIVE_CALLING_STATES = [video_client_1.CallingState.UNKNOWN, video_client_1.CallingState.IDLE];
9
+ /**
10
+ *
11
+ * @param callCycleHandlers
12
+ *
13
+ * @category Client State
14
+ */
15
+ const useCallCycleEffect = (callCycleHandlers) => {
16
+ const call = (0, video_react_bindings_1.useCall)();
17
+ const callingState = (0, video_react_bindings_1.useCallCallingState)();
18
+ const prevCallingState = (0, usePrevious_1.usePrevious)(callingState);
19
+ const { onCallJoined, onCallIncoming, onCallOutgoing, onCallHungUp, onCallRejected, onCallJoining, } = callCycleHandlers;
20
+ (0, react_1.useEffect)(() => {
21
+ if (!call || NON_ACTIVE_CALLING_STATES.includes(callingState))
22
+ return;
23
+ const isCallCreatedByMe = call.data?.created_by.id === call?.currentUserId;
24
+ const isCallCreatedByOther = !!call.data?.created_by.id && !isCallCreatedByMe;
25
+ const isIncomingCall = callingState === video_client_1.CallingState.RINGING &&
26
+ !isCallCreatedByMe &&
27
+ onCallIncoming;
28
+ const isOutgoingCall = callingState === video_client_1.CallingState.RINGING &&
29
+ isCallCreatedByMe &&
30
+ onCallOutgoing;
31
+ const isActiveCall = callingState === video_client_1.CallingState.JOINED && onCallJoined;
32
+ const isCallHungUp = callingState === video_client_1.CallingState.LEFT && onCallHungUp;
33
+ const isCallRejected = callingState === video_client_1.CallingState.LEFT &&
34
+ isCallCreatedByOther &&
35
+ onCallRejected;
36
+ const isCallJoining = callingState === video_client_1.CallingState.JOINING && onCallJoining;
37
+ if (isIncomingCall)
38
+ return onCallIncoming();
39
+ if (isOutgoingCall)
40
+ return onCallOutgoing();
41
+ if (isActiveCall)
42
+ return onCallJoined();
43
+ if (isCallHungUp)
44
+ return onCallHungUp();
45
+ if (isCallRejected)
46
+ return onCallRejected();
47
+ if (isCallJoining)
48
+ return onCallJoining();
49
+ }, [
50
+ callingState,
51
+ prevCallingState,
52
+ call,
53
+ onCallIncoming,
54
+ onCallOutgoing,
55
+ onCallJoined,
56
+ onCallHungUp,
57
+ onCallRejected,
58
+ onCallJoining,
59
+ ]);
60
+ };
61
+ exports.useCallCycleEffect = useCallCycleEffect;
62
+ //# sourceMappingURL=useCallCycleEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCallCycleEffect.js","sourceRoot":"","sources":["../../../src/hooks/useCallCycleEffect.tsx"],"names":[],"mappings":";;;AAAA,0EAA+E;AAC/E,iCAAkC;AAClC,0DAAuD;AAEvD,4DAAyD;AAEzD,MAAM,yBAAyB,GAAG,CAAC,2BAAY,CAAC,OAAO,EAAE,2BAAY,CAAC,IAAI,CAAC,CAAC;AAC5E;;;;;GAKG;AACI,MAAM,kBAAkB,GAAG,CAChC,iBAAwC,EACxC,EAAE;IACF,MAAM,IAAI,GAAG,IAAA,8BAAO,GAAE,CAAC;IACvB,MAAM,YAAY,GAAG,IAAA,0CAAmB,GAAE,CAAC;IAC3C,MAAM,gBAAgB,GAAG,IAAA,yBAAW,EAAC,YAAY,CAAC,CAAC;IACnD,MAAM,EACJ,YAAY,EACZ,cAAc,EACd,cAAc,EACd,YAAY,EACZ,cAAc,EACd,aAAa,GACd,GAAG,iBAAiB,CAAC;IAEtB,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,CAAC,IAAI,IAAI,yBAAyB,CAAC,QAAQ,CAAC,YAAY,CAAC;YAAE,OAAO;QACtE,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,KAAK,IAAI,EAAE,aAAa,CAAC;QAC3E,MAAM,oBAAoB,GACxB,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC;QACnD,MAAM,cAAc,GAClB,YAAY,KAAK,2BAAY,CAAC,OAAO;YACrC,CAAC,iBAAiB;YAClB,cAAc,CAAC;QACjB,MAAM,cAAc,GAClB,YAAY,KAAK,2BAAY,CAAC,OAAO;YACrC,iBAAiB;YACjB,cAAc,CAAC;QACjB,MAAM,YAAY,GAAG,YAAY,KAAK,2BAAY,CAAC,MAAM,IAAI,YAAY,CAAC;QAC1E,MAAM,YAAY,GAAG,YAAY,KAAK,2BAAY,CAAC,IAAI,IAAI,YAAY,CAAC;QACxE,MAAM,cAAc,GAClB,YAAY,KAAK,2BAAY,CAAC,IAAI;YAClC,oBAAoB;YACpB,cAAc,CAAC;QACjB,MAAM,aAAa,GACjB,YAAY,KAAK,2BAAY,CAAC,OAAO,IAAI,aAAa,CAAC;QAEzD,IAAI,cAAc;YAAE,OAAO,cAAc,EAAE,CAAC;QAC5C,IAAI,cAAc;YAAE,OAAO,cAAc,EAAE,CAAC;QAC5C,IAAI,YAAY;YAAE,OAAO,YAAY,EAAE,CAAC;QACxC,IAAI,YAAY;YAAE,OAAO,YAAY,EAAE,CAAC;QACxC,IAAI,cAAc;YAAE,OAAO,cAAc,EAAE,CAAC;QAC5C,IAAI,aAAa;YAAE,OAAO,aAAa,EAAE,CAAC;IAC5C,CAAC,EAAE;QACD,YAAY;QACZ,gBAAgB;QAChB,IAAI;QACJ,cAAc;QACd,cAAc;QACd,YAAY;QACZ,YAAY;QACZ,cAAc;QACd,aAAa;KACd,CAAC,CAAC;AACL,CAAC,CAAC;AAtDW,QAAA,kBAAkB,sBAsD7B"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ *
3
+ * @returns
4
+ *
5
+ * @category Call Operations
6
+ *
7
+ */
8
+ export declare const useCallKeep: () => {
9
+ startCall: () => Promise<void>;
10
+ endCall: () => Promise<void>;
11
+ };
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useCallKeep = void 0;
4
+ const react_1 = require("react");
5
+ const react_native_1 = require("react-native");
6
+ const utils_1 = require("../utils");
7
+ const video_react_bindings_1 = require("@stream-io/video-react-bindings");
8
+ let RNCallKeep;
9
+ try {
10
+ RNCallKeep = require('react-native-callkeep').default;
11
+ }
12
+ catch (e) { }
13
+ /**
14
+ *
15
+ * @returns
16
+ *
17
+ * @category Call Operations
18
+ *
19
+ */
20
+ const useCallKeep = () => {
21
+ const activeCall = (0, video_react_bindings_1.useCall)();
22
+ if (!RNCallKeep) {
23
+ throw Error("react-native-callkeep library is not installed. Please install it using 'yarn add react-native-callkeep' or 'npm install react-native-callkeep'");
24
+ }
25
+ const users = activeCall?.state.getCurrentValue(activeCall.state.members$);
26
+ const userIds = (0, react_1.useMemo)(() => Object.keys(users || {}), [users]);
27
+ const callTitle = (0, utils_1.generateCallTitle)(userIds);
28
+ const startCall = (0, react_1.useCallback)(async () => {
29
+ if (react_native_1.Platform.OS === 'ios' && activeCall) {
30
+ await RNCallKeep?.startCall(activeCall.id, callTitle, userIds.join(','), 'generic');
31
+ }
32
+ }, [activeCall, callTitle, userIds]);
33
+ const endCall = (0, react_1.useCallback)(async () => {
34
+ if (react_native_1.Platform.OS === 'ios' && activeCall) {
35
+ await RNCallKeep?.endCall(activeCall.id);
36
+ }
37
+ }, [activeCall]);
38
+ return { startCall, endCall };
39
+ };
40
+ exports.useCallKeep = useCallKeep;
41
+ //# sourceMappingURL=useCallKeep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCallKeep.js","sourceRoot":"","sources":["../../../src/hooks/useCallKeep.tsx"],"names":[],"mappings":";;;AAAA,iCAA6C;AAC7C,+CAAwC;AACxC,oCAA6C;AAC7C,0EAA0D;AAI1D,IAAI,UAAsC,CAAC;AAE3C,IAAI;IACF,UAAU,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC,OAAO,CAAC;CACvD;AAAC,OAAO,CAAC,EAAE,GAAE;AAEd;;;;;;GAMG;AACI,MAAM,WAAW,GAAG,GAAG,EAAE;IAC9B,MAAM,UAAU,GAAG,IAAA,8BAAO,GAAE,CAAC;IAC7B,IAAI,CAAC,UAAU,EAAE;QACf,MAAM,KAAK,CACT,iJAAiJ,CAClJ,CAAC;KACH;IAED,MAAM,KAAK,GAAG,UAAU,EAAE,KAAK,CAAC,eAAe,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC3E,MAAM,OAAO,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACjE,MAAM,SAAS,GAAG,IAAA,yBAAiB,EAAC,OAAO,CAAC,CAAC;IAE7C,MAAM,SAAS,GAAG,IAAA,mBAAW,EAAC,KAAK,IAAI,EAAE;QACvC,IAAI,uBAAQ,CAAC,EAAE,KAAK,KAAK,IAAI,UAAU,EAAE;YACvC,MAAM,UAAU,EAAE,SAAS,CACzB,UAAU,CAAC,EAAE,EACb,SAAS,EACT,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EACjB,SAAS,CACV,CAAC;SACH;IACH,CAAC,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAErC,MAAM,OAAO,GAAG,IAAA,mBAAW,EAAC,KAAK,IAAI,EAAE;QACrC,IAAI,uBAAQ,CAAC,EAAE,KAAK,KAAK,IAAI,UAAU,EAAE;YACvC,MAAM,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;SAC1C;IACH,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AAChC,CAAC,CAAC;AA9BW,QAAA,WAAW,eA8BtB"}
@@ -0,0 +1,33 @@
1
+ import { StreamClientOptions, StreamVideoClient, TokenOrProvider, User } from '@stream-io/video-client';
2
+ /**
3
+ * Exclude types from documentation site, but we should still add doc comments
4
+ * @internal
5
+ */
6
+ export type StreamVideoClientInit = {
7
+ /**
8
+ * The Stream API key.
9
+ */
10
+ apiKey: string;
11
+ /**
12
+ * The token or token provider.
13
+ */
14
+ tokenOrProvider: TokenOrProvider;
15
+ /**
16
+ * The client options.
17
+ */
18
+ options?: StreamClientOptions;
19
+ /**
20
+ * The user to connect.
21
+ */
22
+ user: User;
23
+ /**
24
+ * Whether the user is anonymous. Defaults to `false`.
25
+ */
26
+ isAnonymous?: boolean;
27
+ };
28
+ /**
29
+ * Creates a new `StreamVideoClient` instance and connects the given user.
30
+ *
31
+ * @category Client State
32
+ */
33
+ export declare const useCreateStreamVideoClient: ({ apiKey, tokenOrProvider, user, options, isAnonymous, }: StreamVideoClientInit) => StreamVideoClient;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useCreateStreamVideoClient = void 0;
4
+ const video_client_1 = require("@stream-io/video-client");
5
+ const react_1 = require("react");
6
+ /**
7
+ * Creates a new `StreamVideoClient` instance and connects the given user.
8
+ *
9
+ * @category Client State
10
+ */
11
+ const useCreateStreamVideoClient = ({ apiKey, tokenOrProvider, user, options, isAnonymous = false, }) => {
12
+ const [client] = (0, react_1.useState)(() => new video_client_1.StreamVideoClient(apiKey, options));
13
+ const disconnectRef = (0, react_1.useRef)(Promise.resolve());
14
+ (0, react_1.useEffect)(() => {
15
+ const connectionPromise = disconnectRef.current.then(() => {
16
+ if (isAnonymous) {
17
+ return client
18
+ .connectAnonymousUser(user, tokenOrProvider)
19
+ .catch((err) => {
20
+ console.error(`Failed to establish connection`, err);
21
+ });
22
+ }
23
+ return client.connectUser(user, tokenOrProvider).catch((err) => {
24
+ console.error(`Failed to establish connection`, err);
25
+ });
26
+ });
27
+ return () => {
28
+ disconnectRef.current = connectionPromise
29
+ .then(() => client.disconnectUser())
30
+ .catch((err) => {
31
+ console.error(`Failed to disconnect`, err);
32
+ });
33
+ };
34
+ // we want to re-run this effect only in some special cases
35
+ // eslint-disable-next-line react-hooks/exhaustive-deps
36
+ }, [apiKey, tokenOrProvider, client, isAnonymous, user?.id]);
37
+ return client;
38
+ };
39
+ exports.useCreateStreamVideoClient = useCreateStreamVideoClient;
40
+ //# sourceMappingURL=useCreateStreamVideoClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCreateStreamVideoClient.js","sourceRoot":"","sources":["../../../src/hooks/useCreateStreamVideoClient.tsx"],"names":[],"mappings":";;;AAAA,0DAKiC;AACjC,iCAAoD;AA6BpD;;;;GAIG;AACI,MAAM,0BAA0B,GAAG,CAAC,EACzC,MAAM,EACN,eAAe,EACf,IAAI,EACJ,OAAO,EACP,WAAW,GAAG,KAAK,GACG,EAAE,EAAE;IAC1B,MAAM,CAAC,MAAM,CAAC,GAAG,IAAA,gBAAQ,EAAC,GAAG,EAAE,CAAC,IAAI,gCAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAExE,MAAM,aAAa,GAAG,IAAA,cAAM,EAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAChD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,iBAAiB,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE;YACxD,IAAI,WAAW,EAAE;gBACf,OAAO,MAAM;qBACV,oBAAoB,CAAC,IAAI,EAAE,eAAe,CAAC;qBAC3C,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;oBACb,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAC;gBACvD,CAAC,CAAC,CAAC;aACN;YACD,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC7D,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAC;YACvD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,EAAE;YACV,aAAa,CAAC,OAAO,GAAG,iBAAiB;iBACtC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;iBACnC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACb,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;QACF,2DAA2D;QAC3D,uDAAuD;IACzD,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IAE7D,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AApCW,QAAA,0BAA0B,8BAoCrC"}
@@ -0,0 +1,13 @@
1
+ export type IncallManagerProps = {
2
+ media: 'audio' | 'video';
3
+ auto: boolean;
4
+ };
5
+ /**
6
+ * A hook to handle IncallManager specs in the application.
7
+ *
8
+ * @param media
9
+ * @param auto
10
+ *
11
+ * @category Device Management
12
+ * */
13
+ export declare const useIncallManager: ({ auto, media }: IncallManagerProps) => void;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.useIncallManager = void 0;
7
+ const react_1 = require("react");
8
+ const react_native_incall_manager_1 = __importDefault(require("react-native-incall-manager"));
9
+ /**
10
+ * A hook to handle IncallManager specs in the application.
11
+ *
12
+ * @param media
13
+ * @param auto
14
+ *
15
+ * @category Device Management
16
+ * */
17
+ const useIncallManager = ({ auto, media }) => {
18
+ (0, react_1.useEffect)(() => {
19
+ react_native_incall_manager_1.default.start({ media, auto });
20
+ return () => react_native_incall_manager_1.default.stop();
21
+ }, [auto, media]);
22
+ };
23
+ exports.useIncallManager = useIncallManager;
24
+ //# sourceMappingURL=useIncallManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIncallManager.js","sourceRoot":"","sources":["../../../src/hooks/useIncallManager.tsx"],"names":[],"mappings":";;;;;;AAAA,iCAAkC;AAClC,8FAAwD;AAOxD;;;;;;;MAOM;AACC,MAAM,gBAAgB,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,EAAsB,EAAE,EAAE;IACtE,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,qCAAa,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAErC,OAAO,GAAG,EAAE,CAAC,qCAAa,CAAC,IAAI,EAAE,CAAC;IACpC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AACpB,CAAC,CAAC;AANW,QAAA,gBAAgB,oBAM3B"}
@@ -0,0 +1,7 @@
1
+ import { MediaStream } from 'react-native-webrtc';
2
+ /**
3
+ * A hook which provides the device's local video stream.
4
+ *
5
+ * @category Device Management
6
+ */
7
+ export declare const useLocalVideoStream: () => MediaStream | undefined;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useLocalVideoStream = void 0;
4
+ const react_1 = require("react");
5
+ const video_client_1 = require("@stream-io/video-client");
6
+ const contexts_1 = require("../contexts");
7
+ /**
8
+ * A hook which provides the device's local video stream.
9
+ *
10
+ * @category Device Management
11
+ */
12
+ const useLocalVideoStream = () => {
13
+ const [videoStream, setVideoStream] = (0, react_1.useState)(undefined);
14
+ const currentVideoDevice = (0, contexts_1.useStreamVideoStoreValue)((store) => store.currentVideoDevice);
15
+ (0, react_1.useEffect)(() => {
16
+ const loadVideoStream = async () => {
17
+ // If there is no video device, we don't need to load a video stream.
18
+ if (!currentVideoDevice?.deviceId)
19
+ return null;
20
+ const stream = await (0, video_client_1.getVideoStream)({
21
+ deviceId: currentVideoDevice.deviceId,
22
+ });
23
+ setVideoStream((previousStream) => {
24
+ if (previousStream)
25
+ (0, video_client_1.disposeOfMediaStream)(previousStream);
26
+ return stream;
27
+ });
28
+ };
29
+ loadVideoStream();
30
+ }, [currentVideoDevice?.deviceId]);
31
+ return videoStream;
32
+ };
33
+ exports.useLocalVideoStream = useLocalVideoStream;
34
+ //# sourceMappingURL=useLocalVideoStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLocalVideoStream.js","sourceRoot":"","sources":["../../../src/hooks/useLocalVideoStream.ts"],"names":[],"mappings":";;;AAAA,iCAA4C;AAC5C,0DAA+E;AAE/E,0CAAuD;AAEvD;;;;GAIG;AACI,MAAM,mBAAmB,GAAG,GAAG,EAAE;IACtC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,IAAA,gBAAQ,EAC5C,SAAS,CACV,CAAC;IACF,MAAM,kBAAkB,GAAG,IAAA,mCAAwB,EACjD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,kBAAkB,CACpC,CAAC;IAEF,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,eAAe,GAAG,KAAK,IAAI,EAAE;YACjC,qEAAqE;YACrE,IAAI,CAAC,kBAAkB,EAAE,QAAQ;gBAAE,OAAO,IAAI,CAAC;YAE/C,MAAM,MAAM,GAAG,MAAM,IAAA,6BAAc,EAAC;gBAClC,QAAQ,EAAE,kBAAkB,CAAC,QAAQ;aACtC,CAAC,CAAC;YACH,cAAc,CAAC,CAAC,cAAc,EAAE,EAAE;gBAChC,IAAI,cAAc;oBAAE,IAAA,mCAAoB,EAAC,cAAc,CAAC,CAAC;gBACzD,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QACF,eAAe,EAAE,CAAC;IACpB,CAAC,EAAE,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEnC,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAzBW,QAAA,mBAAmB,uBAyB9B"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * A helper hook which exposes audio, video mute and camera facing mode and
3
+ * their respective functions to toggle state
4
+ *
5
+ * @category Device Management
6
+ */
7
+ export declare const useMutingState: () => {
8
+ isAudioMuted: boolean;
9
+ isVideoMuted: boolean;
10
+ toggleAudioState: () => void;
11
+ toggleVideoState: () => void;
12
+ };
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useMutingState = void 0;
4
+ const StreamVideoContext_1 = require("../contexts/StreamVideoContext");
5
+ /**
6
+ * A helper hook which exposes audio, video mute and camera facing mode and
7
+ * their respective functions to toggle state
8
+ *
9
+ * @category Device Management
10
+ */
11
+ const useMutingState = () => {
12
+ const isAudioMuted = (0, StreamVideoContext_1.useStreamVideoStoreValue)((store) => store.isAudioMuted);
13
+ const isVideoMuted = (0, StreamVideoContext_1.useStreamVideoStoreValue)((store) => store.isVideoMuted);
14
+ const setState = (0, StreamVideoContext_1.useStreamVideoStoreSetState)();
15
+ const toggleAudioState = () => setState({ isAudioMuted: !isAudioMuted });
16
+ const toggleVideoState = () => setState({ isVideoMuted: !isVideoMuted });
17
+ return {
18
+ isAudioMuted,
19
+ isVideoMuted,
20
+ toggleAudioState,
21
+ toggleVideoState,
22
+ };
23
+ };
24
+ exports.useMutingState = useMutingState;
25
+ //# sourceMappingURL=useMutingState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMutingState.js","sourceRoot":"","sources":["../../../src/hooks/useMutingState.ts"],"names":[],"mappings":";;;AAAA,uEAGwC;AACxC;;;;;GAKG;AACI,MAAM,cAAc,GAAG,GAAG,EAAE;IACjC,MAAM,YAAY,GAAG,IAAA,6CAAwB,EAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC7E,MAAM,YAAY,GAAG,IAAA,6CAAwB,EAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,IAAA,gDAA2B,GAAE,CAAC;IAC/C,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC;IACzE,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC;IAEzE,OAAO;QACL,YAAY;QACZ,YAAY;QACZ,gBAAgB;QAChB,gBAAgB;KACjB,CAAC;AACJ,CAAC,CAAC;AAbW,QAAA,cAAc,kBAazB"}
@@ -0,0 +1,18 @@
1
+ import { OwnCapability } from '@stream-io/video-client';
2
+ export type PermissionNotificationProps = {
3
+ /**
4
+ * The permission to check for.
5
+ */
6
+ permission: OwnCapability;
7
+ /**
8
+ * The message to display in the notification once
9
+ * the requested permission is granted.
10
+ */
11
+ messageApproved: string;
12
+ /**
13
+ * The message to display in the notification once a permission
14
+ * is revoked.
15
+ */
16
+ messageRevoked: string;
17
+ };
18
+ export declare const usePermissionNotification: (props: PermissionNotificationProps) => void;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.usePermissionNotification = void 0;
4
+ const video_react_bindings_1 = require("@stream-io/video-react-bindings");
5
+ const react_1 = require("react");
6
+ const react_native_1 = require("react-native");
7
+ const usePrevious_1 = require("../utils/hooks/usePrevious");
8
+ const usePermissionNotification = (props) => {
9
+ const { permission, messageApproved, messageRevoked } = props;
10
+ const hasPermission = (0, video_react_bindings_1.useHasPermissions)(permission);
11
+ const previousHasPermission = (0, usePrevious_1.usePrevious)(hasPermission);
12
+ const showGrantedNotification = (0, react_1.useCallback)(() => {
13
+ react_native_1.Alert.alert(messageApproved);
14
+ }, [messageApproved]);
15
+ const showRevokedNotification = (0, react_1.useCallback)(() => {
16
+ react_native_1.Alert.alert(messageRevoked);
17
+ }, [messageRevoked]);
18
+ (0, react_1.useEffect)(() => {
19
+ if (hasPermission && !previousHasPermission) {
20
+ showGrantedNotification();
21
+ }
22
+ else if (!hasPermission && previousHasPermission) {
23
+ showRevokedNotification();
24
+ }
25
+ }, [
26
+ hasPermission,
27
+ previousHasPermission,
28
+ showGrantedNotification,
29
+ showRevokedNotification,
30
+ ]);
31
+ };
32
+ exports.usePermissionNotification = usePermissionNotification;
33
+ //# sourceMappingURL=usePermissionNotification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePermissionNotification.js","sourceRoot":"","sources":["../../../src/hooks/usePermissionNotification.tsx"],"names":[],"mappings":";;;AACA,0EAAoE;AACpE,iCAA+C;AAC/C,+CAAqC;AACrC,4DAAyD;AAqBlD,MAAM,yBAAyB,GAAG,CACvC,KAAkC,EAClC,EAAE;IACF,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAC9D,MAAM,aAAa,GAAG,IAAA,wCAAiB,EAAC,UAAU,CAAC,CAAC;IACpD,MAAM,qBAAqB,GAAG,IAAA,yBAAW,EAAC,aAAa,CAAC,CAAC;IAEzD,MAAM,uBAAuB,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QAC/C,oBAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAC/B,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IAEtB,MAAM,uBAAuB,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QAC/C,oBAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC9B,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IAErB,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,aAAa,IAAI,CAAC,qBAAqB,EAAE;YAC3C,uBAAuB,EAAE,CAAC;SAC3B;aAAM,IAAI,CAAC,aAAa,IAAI,qBAAqB,EAAE;YAClD,uBAAuB,EAAE,CAAC;SAC3B;IACH,CAAC,EAAE;QACD,aAAa;QACb,qBAAqB;QACrB,uBAAuB;QACvB,uBAAuB;KACxB,CAAC,CAAC;AACL,CAAC,CAAC;AA3BW,QAAA,yBAAyB,6BA2BpC"}
@@ -0,0 +1 @@
1
+ export declare const usePermissionRequest: () => void;