@100mslive/react-native-room-kit 0.0.3 → 0.0.4

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 (287) hide show
  1. package/lib/commonjs/HMSInstanceSetup.js +1 -14
  2. package/lib/commonjs/HMSInstanceSetup.js.map +1 -1
  3. package/lib/commonjs/HMSPrebuilt.js +13 -4
  4. package/lib/commonjs/HMSPrebuilt.js.map +1 -1
  5. package/lib/commonjs/HMSRoomSetup.js +38 -14
  6. package/lib/commonjs/HMSRoomSetup.js.map +1 -1
  7. package/lib/commonjs/Icons/Check/assets/check.png +0 -0
  8. package/lib/commonjs/Icons/Check/assets/check@2x.png +0 -0
  9. package/lib/commonjs/Icons/Check/assets/check@3x.png +0 -0
  10. package/lib/commonjs/Icons/Check/index.js +30 -0
  11. package/lib/commonjs/Icons/Check/index.js.map +1 -0
  12. package/lib/commonjs/Icons/Radio/assets/radio.png +0 -0
  13. package/lib/commonjs/Icons/Radio/assets/radio@2x.png +0 -0
  14. package/lib/commonjs/Icons/Radio/assets/radio@3x.png +0 -0
  15. package/lib/commonjs/Icons/Radio/index.js +30 -0
  16. package/lib/commonjs/Icons/Radio/index.js.map +1 -0
  17. package/lib/commonjs/Icons/index.js +22 -0
  18. package/lib/commonjs/Icons/index.js.map +1 -1
  19. package/lib/commonjs/components/BackButton.js +2 -2
  20. package/lib/commonjs/components/BackButton.js.map +1 -1
  21. package/lib/commonjs/components/DisplayView.js +0 -6
  22. package/lib/commonjs/components/DisplayView.js.map +1 -1
  23. package/lib/commonjs/components/HMSHLSStreamLoading.js +56 -0
  24. package/lib/commonjs/components/HMSHLSStreamLoading.js.map +1 -0
  25. package/lib/commonjs/components/HMSLocalVideoView.js +41 -0
  26. package/lib/commonjs/components/HMSLocalVideoView.js.map +1 -0
  27. package/lib/commonjs/components/{HMSSpeakerSettings.js → HMSManageAudioOutput.js} +41 -13
  28. package/lib/commonjs/components/HMSManageAudioOutput.js.map +1 -0
  29. package/lib/commonjs/components/HMSManageLeave.js +7 -60
  30. package/lib/commonjs/components/HMSManageLeave.js.map +1 -1
  31. package/lib/commonjs/components/HMSMeetingEnded.js +36 -0
  32. package/lib/commonjs/components/HMSMeetingEnded.js.map +1 -0
  33. package/lib/commonjs/components/HMSPreviewEditName.js +6 -3
  34. package/lib/commonjs/components/HMSPreviewEditName.js.map +1 -1
  35. package/lib/commonjs/components/HMSPreviewHLSLiveIndicator.js +64 -0
  36. package/lib/commonjs/components/HMSPreviewHLSLiveIndicator.js.map +1 -0
  37. package/lib/commonjs/components/HMSPreviewJoinButton.js +21 -9
  38. package/lib/commonjs/components/HMSPreviewJoinButton.js.map +1 -1
  39. package/lib/commonjs/components/HMSPreviewNetworkQuality.js +43 -0
  40. package/lib/commonjs/components/HMSPreviewNetworkQuality.js.map +1 -0
  41. package/lib/commonjs/components/HMSPreviewPeersList.js +2 -25
  42. package/lib/commonjs/components/HMSPreviewPeersList.js.map +1 -1
  43. package/lib/commonjs/components/HMSPreviewSubtitle.js +25 -2
  44. package/lib/commonjs/components/HMSPreviewSubtitle.js.map +1 -1
  45. package/lib/commonjs/components/HMSPreviewTile.js +2 -18
  46. package/lib/commonjs/components/HMSPreviewTile.js.map +1 -1
  47. package/lib/commonjs/components/HMSRoomOptions.js +2 -3
  48. package/lib/commonjs/components/HMSRoomOptions.js.map +1 -1
  49. package/lib/commonjs/components/HMSShowNetworkQuality.js +0 -2
  50. package/lib/commonjs/components/HMSShowNetworkQuality.js.map +1 -1
  51. package/lib/commonjs/components/Meeting.js +7 -0
  52. package/lib/commonjs/components/Meeting.js.map +1 -1
  53. package/lib/commonjs/components/MenuModal/Menu.js +1 -2
  54. package/lib/commonjs/components/MenuModal/Menu.js.map +1 -1
  55. package/lib/commonjs/components/Modals.js +39 -299
  56. package/lib/commonjs/components/Modals.js.map +1 -1
  57. package/lib/commonjs/components/Participants/ParticipantsList.js +1 -20
  58. package/lib/commonjs/components/Participants/ParticipantsList.js.map +1 -1
  59. package/lib/commonjs/components/PeerSettingsModalContent.js +2 -13
  60. package/lib/commonjs/components/PeerSettingsModalContent.js.map +1 -1
  61. package/lib/commonjs/components/Preview.js +79 -71
  62. package/lib/commonjs/components/Preview.js.map +1 -1
  63. package/lib/commonjs/components/RoomSettingsModalContent.js +2 -101
  64. package/lib/commonjs/components/RoomSettingsModalContent.js.map +1 -1
  65. package/lib/commonjs/components/index.js +0 -11
  66. package/lib/commonjs/components/index.js.map +1 -1
  67. package/lib/commonjs/hooks/useHmsInstance.js +0 -1
  68. package/lib/commonjs/hooks/useHmsInstance.js.map +1 -1
  69. package/lib/commonjs/hooks-util-selectors.js +8 -1
  70. package/lib/commonjs/hooks-util-selectors.js.map +1 -1
  71. package/lib/commonjs/hooks-util.js +129 -28
  72. package/lib/commonjs/hooks-util.js.map +1 -1
  73. package/lib/commonjs/redux/actionTypes.js +5 -1
  74. package/lib/commonjs/redux/actionTypes.js.map +1 -1
  75. package/lib/commonjs/redux/actions/index.js +15 -1
  76. package/lib/commonjs/redux/actions/index.js.map +1 -1
  77. package/lib/commonjs/redux/reducers/appState.js +14 -1
  78. package/lib/commonjs/redux/reducers/appState.js.map +1 -1
  79. package/lib/commonjs/utils/theme.js +1 -0
  80. package/lib/commonjs/utils/theme.js.map +1 -1
  81. package/lib/commonjs/utils/types.js +0 -1
  82. package/lib/commonjs/utils/types.js.map +1 -1
  83. package/lib/commonjs/utils.js +2 -2
  84. package/lib/commonjs/utils.js.map +1 -1
  85. package/lib/module/HMSInstanceSetup.js +1 -14
  86. package/lib/module/HMSInstanceSetup.js.map +1 -1
  87. package/lib/module/HMSPrebuilt.js +13 -3
  88. package/lib/module/HMSPrebuilt.js.map +1 -1
  89. package/lib/module/HMSRoomSetup.js +43 -19
  90. package/lib/module/HMSRoomSetup.js.map +1 -1
  91. package/lib/module/Icons/Check/assets/check.png +0 -0
  92. package/lib/module/Icons/Check/assets/check@2x.png +0 -0
  93. package/lib/module/Icons/Check/assets/check@3x.png +0 -0
  94. package/lib/module/Icons/Check/index.js +22 -0
  95. package/lib/module/Icons/Check/index.js.map +1 -0
  96. package/lib/module/Icons/Radio/assets/radio.png +0 -0
  97. package/lib/module/Icons/Radio/assets/radio@2x.png +0 -0
  98. package/lib/module/Icons/Radio/assets/radio@3x.png +0 -0
  99. package/lib/module/Icons/Radio/index.js +22 -0
  100. package/lib/module/Icons/Radio/index.js.map +1 -0
  101. package/lib/module/Icons/index.js +2 -0
  102. package/lib/module/Icons/index.js.map +1 -1
  103. package/lib/module/components/BackButton.js +3 -3
  104. package/lib/module/components/BackButton.js.map +1 -1
  105. package/lib/module/components/DisplayView.js +1 -7
  106. package/lib/module/components/DisplayView.js.map +1 -1
  107. package/lib/module/components/HMSHLSStreamLoading.js +47 -0
  108. package/lib/module/components/HMSHLSStreamLoading.js.map +1 -0
  109. package/lib/module/components/HMSLocalVideoView.js +32 -0
  110. package/lib/module/components/HMSLocalVideoView.js.map +1 -0
  111. package/lib/module/components/{HMSSpeakerSettings.js → HMSManageAudioOutput.js} +40 -12
  112. package/lib/module/components/HMSManageAudioOutput.js.map +1 -0
  113. package/lib/module/components/HMSManageLeave.js +9 -62
  114. package/lib/module/components/HMSManageLeave.js.map +1 -1
  115. package/lib/module/components/HMSMeetingEnded.js +27 -0
  116. package/lib/module/components/HMSMeetingEnded.js.map +1 -0
  117. package/lib/module/components/HMSPreviewEditName.js +7 -4
  118. package/lib/module/components/HMSPreviewEditName.js.map +1 -1
  119. package/lib/module/components/HMSPreviewHLSLiveIndicator.js +55 -0
  120. package/lib/module/components/HMSPreviewHLSLiveIndicator.js.map +1 -0
  121. package/lib/module/components/HMSPreviewJoinButton.js +21 -9
  122. package/lib/module/components/HMSPreviewJoinButton.js.map +1 -1
  123. package/lib/module/components/HMSPreviewNetworkQuality.js +34 -0
  124. package/lib/module/components/HMSPreviewNetworkQuality.js.map +1 -0
  125. package/lib/module/components/HMSPreviewPeersList.js +2 -25
  126. package/lib/module/components/HMSPreviewPeersList.js.map +1 -1
  127. package/lib/module/components/HMSPreviewSubtitle.js +25 -2
  128. package/lib/module/components/HMSPreviewSubtitle.js.map +1 -1
  129. package/lib/module/components/HMSPreviewTile.js +2 -18
  130. package/lib/module/components/HMSPreviewTile.js.map +1 -1
  131. package/lib/module/components/HMSRoomOptions.js +2 -3
  132. package/lib/module/components/HMSRoomOptions.js.map +1 -1
  133. package/lib/module/components/HMSShowNetworkQuality.js +0 -2
  134. package/lib/module/components/HMSShowNetworkQuality.js.map +1 -1
  135. package/lib/module/components/Meeting.js +7 -0
  136. package/lib/module/components/Meeting.js.map +1 -1
  137. package/lib/module/components/MenuModal/Menu.js +1 -2
  138. package/lib/module/components/MenuModal/Menu.js.map +1 -1
  139. package/lib/module/components/Modals.js +40 -298
  140. package/lib/module/components/Modals.js.map +1 -1
  141. package/lib/module/components/Participants/ParticipantsList.js +1 -20
  142. package/lib/module/components/Participants/ParticipantsList.js.map +1 -1
  143. package/lib/module/components/PeerSettingsModalContent.js +2 -13
  144. package/lib/module/components/PeerSettingsModalContent.js.map +1 -1
  145. package/lib/module/components/Preview.js +79 -71
  146. package/lib/module/components/Preview.js.map +1 -1
  147. package/lib/module/components/RoomSettingsModalContent.js +3 -100
  148. package/lib/module/components/RoomSettingsModalContent.js.map +1 -1
  149. package/lib/module/components/index.js +0 -1
  150. package/lib/module/components/index.js.map +1 -1
  151. package/lib/module/hooks/useHmsInstance.js +0 -1
  152. package/lib/module/hooks/useHmsInstance.js.map +1 -1
  153. package/lib/module/hooks-util-selectors.js +6 -0
  154. package/lib/module/hooks-util-selectors.js.map +1 -1
  155. package/lib/module/hooks-util.js +131 -32
  156. package/lib/module/hooks-util.js.map +1 -1
  157. package/lib/module/redux/actionTypes.js +5 -1
  158. package/lib/module/redux/actionTypes.js.map +1 -1
  159. package/lib/module/redux/actions/index.js +12 -0
  160. package/lib/module/redux/actions/index.js.map +1 -1
  161. package/lib/module/redux/reducers/appState.js +14 -1
  162. package/lib/module/redux/reducers/appState.js.map +1 -1
  163. package/lib/module/utils/theme.js +1 -0
  164. package/lib/module/utils/theme.js.map +1 -1
  165. package/lib/module/utils/types.js +0 -1
  166. package/lib/module/utils/types.js.map +1 -1
  167. package/lib/module/utils.js +2 -2
  168. package/lib/module/utils.js.map +1 -1
  169. package/lib/typescript/HMSInstanceSetup.d.ts.map +1 -1
  170. package/lib/typescript/HMSPrebuilt.d.ts +2 -3
  171. package/lib/typescript/HMSPrebuilt.d.ts.map +1 -1
  172. package/lib/typescript/HMSRoomSetup.d.ts.map +1 -1
  173. package/lib/typescript/Icons/Check/index.d.ts +7 -0
  174. package/lib/typescript/Icons/Check/index.d.ts.map +1 -0
  175. package/lib/typescript/Icons/Radio/index.d.ts +7 -0
  176. package/lib/typescript/Icons/Radio/index.d.ts.map +1 -0
  177. package/lib/typescript/Icons/index.d.ts +2 -0
  178. package/lib/typescript/Icons/index.d.ts.map +1 -1
  179. package/lib/typescript/components/CustomInput.d.ts +1 -1
  180. package/lib/typescript/components/DisplayView.d.ts.map +1 -1
  181. package/lib/typescript/components/HMSHLSStreamLoading.d.ts +3 -0
  182. package/lib/typescript/components/HMSHLSStreamLoading.d.ts.map +1 -0
  183. package/lib/typescript/components/HMSLocalVideoView.d.ts +3 -0
  184. package/lib/typescript/components/HMSLocalVideoView.d.ts.map +1 -0
  185. package/lib/typescript/components/HMSManageAudioOutput.d.ts +3 -0
  186. package/lib/typescript/components/HMSManageAudioOutput.d.ts.map +1 -0
  187. package/lib/typescript/components/HMSManageLeave.d.ts.map +1 -1
  188. package/lib/typescript/components/HMSMeetingEnded.d.ts +3 -0
  189. package/lib/typescript/components/HMSMeetingEnded.d.ts.map +1 -0
  190. package/lib/typescript/components/HMSPreviewHLSLiveIndicator.d.ts +3 -0
  191. package/lib/typescript/components/HMSPreviewHLSLiveIndicator.d.ts.map +1 -0
  192. package/lib/typescript/components/HMSPreviewJoinButton.d.ts.map +1 -1
  193. package/lib/typescript/components/HMSPreviewNetworkQuality.d.ts +3 -0
  194. package/lib/typescript/components/HMSPreviewNetworkQuality.d.ts.map +1 -0
  195. package/lib/typescript/components/HMSPreviewPeersList.d.ts.map +1 -1
  196. package/lib/typescript/components/HMSPreviewSubtitle.d.ts.map +1 -1
  197. package/lib/typescript/components/HMSPreviewTile.d.ts.map +1 -1
  198. package/lib/typescript/components/HMSRoomOptions.d.ts.map +1 -1
  199. package/lib/typescript/components/HMSShowNetworkQuality.d.ts.map +1 -1
  200. package/lib/typescript/components/Meeting.d.ts.map +1 -1
  201. package/lib/typescript/components/MenuModal/Menu.d.ts.map +1 -1
  202. package/lib/typescript/components/Modals.d.ts +1 -9
  203. package/lib/typescript/components/Modals.d.ts.map +1 -1
  204. package/lib/typescript/components/Participants/ParticipantsList.d.ts.map +1 -1
  205. package/lib/typescript/components/PeerSettingsModalContent.d.ts.map +1 -1
  206. package/lib/typescript/components/Preview.d.ts.map +1 -1
  207. package/lib/typescript/components/RoomSettingsModalContent.d.ts.map +1 -1
  208. package/lib/typescript/components/index.d.ts +0 -1
  209. package/lib/typescript/components/index.d.ts.map +1 -1
  210. package/lib/typescript/hooks-util-selectors.d.ts +2 -0
  211. package/lib/typescript/hooks-util-selectors.d.ts.map +1 -1
  212. package/lib/typescript/hooks-util.d.ts +9 -2
  213. package/lib/typescript/hooks-util.d.ts.map +1 -1
  214. package/lib/typescript/redux/actionTypes.d.ts +2 -0
  215. package/lib/typescript/redux/actionTypes.d.ts.map +1 -1
  216. package/lib/typescript/redux/actions/index.d.ts +16 -3
  217. package/lib/typescript/redux/actions/index.d.ts.map +1 -1
  218. package/lib/typescript/redux/index.d.ts +3 -1
  219. package/lib/typescript/redux/index.d.ts.map +1 -1
  220. package/lib/typescript/redux/reducers/appState.d.ts +3 -0
  221. package/lib/typescript/redux/reducers/appState.d.ts.map +1 -1
  222. package/lib/typescript/redux/reducers/index.d.ts +3 -1
  223. package/lib/typescript/redux/reducers/index.d.ts.map +1 -1
  224. package/lib/typescript/redux/reducers/userState.d.ts +2 -2
  225. package/lib/typescript/redux/reducers/userState.d.ts.map +1 -1
  226. package/lib/typescript/utils/theme.d.ts +1 -0
  227. package/lib/typescript/utils/theme.d.ts.map +1 -1
  228. package/lib/typescript/utils/types.d.ts +3 -4
  229. package/lib/typescript/utils/types.d.ts.map +1 -1
  230. package/package.json +9 -16
  231. package/src/HMSInstanceSetup.tsx +4 -31
  232. package/src/HMSPrebuilt.tsx +24 -6
  233. package/src/HMSRoomSetup.tsx +55 -17
  234. package/src/Icons/Check/assets/check.png +0 -0
  235. package/src/Icons/Check/assets/check@2x.png +0 -0
  236. package/src/Icons/Check/assets/check@3x.png +0 -0
  237. package/src/Icons/Check/index.tsx +27 -0
  238. package/src/Icons/Radio/assets/radio.png +0 -0
  239. package/src/Icons/Radio/assets/radio@2x.png +0 -0
  240. package/src/Icons/Radio/assets/radio@3x.png +0 -0
  241. package/src/Icons/Radio/index.tsx +27 -0
  242. package/src/Icons/index.ts +2 -0
  243. package/src/components/BackButton.tsx +3 -3
  244. package/src/components/DisplayView.tsx +0 -10
  245. package/src/components/HMSHLSStreamLoading.tsx +57 -0
  246. package/src/components/HMSLocalVideoView.tsx +42 -0
  247. package/src/components/{HMSSpeakerSettings.tsx → HMSManageAudioOutput.tsx} +69 -17
  248. package/src/components/HMSManageLeave.tsx +6 -77
  249. package/src/components/HMSMeetingEnded.tsx +29 -0
  250. package/src/components/HMSPreviewEditName.tsx +5 -4
  251. package/src/components/HMSPreviewHLSLiveIndicator.tsx +58 -0
  252. package/src/components/HMSPreviewJoinButton.tsx +30 -7
  253. package/src/components/HMSPreviewNetworkQuality.tsx +40 -0
  254. package/src/components/HMSPreviewPeersList.tsx +7 -46
  255. package/src/components/HMSPreviewSubtitle.tsx +26 -2
  256. package/src/components/HMSPreviewTile.tsx +2 -24
  257. package/src/components/HMSRoomOptions.tsx +2 -8
  258. package/src/components/HMSShowNetworkQuality.tsx +0 -1
  259. package/src/components/Meeting.tsx +11 -0
  260. package/src/components/MenuModal/Menu.tsx +1 -1
  261. package/src/components/Modals.tsx +4 -299
  262. package/src/components/Participants/ParticipantsList.tsx +0 -24
  263. package/src/components/PeerSettingsModalContent.tsx +9 -23
  264. package/src/components/Preview.tsx +129 -101
  265. package/src/components/RoomSettingsModalContent.tsx +1 -138
  266. package/src/components/index.ts +0 -1
  267. package/src/hooks/useHmsInstance.ts +0 -1
  268. package/src/hooks-util-selectors.tsx +10 -0
  269. package/src/hooks-util.ts +155 -42
  270. package/src/redux/actionTypes.ts +6 -0
  271. package/src/redux/actions/index.ts +13 -2
  272. package/src/redux/reducers/appState.ts +9 -0
  273. package/src/redux/reducers/userState.ts +2 -2
  274. package/src/utils/theme.ts +1 -0
  275. package/src/utils/types.ts +3 -4
  276. package/src/utils.ts +2 -2
  277. package/lib/commonjs/components/HMSSpeakerSettings.js.map +0 -1
  278. package/lib/commonjs/components/ZoomableView.js +0 -84
  279. package/lib/commonjs/components/ZoomableView.js.map +0 -1
  280. package/lib/module/components/HMSSpeakerSettings.js.map +0 -1
  281. package/lib/module/components/ZoomableView.js +0 -76
  282. package/lib/module/components/ZoomableView.js.map +0 -1
  283. package/lib/typescript/components/HMSSpeakerSettings.d.ts +0 -3
  284. package/lib/typescript/components/HMSSpeakerSettings.d.ts.map +0 -1
  285. package/lib/typescript/components/ZoomableView.d.ts +0 -6
  286. package/lib/typescript/components/ZoomableView.d.ts.map +0 -1
  287. package/src/components/ZoomableView.tsx +0 -91
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@100mslive/react-native-room-kit",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
4
4
  "description": "100ms Room Kit provides simple & easy to use UI components to build Live Streaming & Video Conferencing experiences in your apps.",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -51,23 +51,9 @@
51
51
  "registry": "https://registry.npmjs.org/"
52
52
  },
53
53
  "dependencies": {
54
- "@100mslive/react-native-hms": "1.7.0",
55
- "@miblanchard/react-native-slider": "^2.0.2",
56
54
  "@react-navigation/native": "^6.0.8",
57
- "@shopify/flash-list": "^1.4.3",
58
- "react-native-avoid-softinput": "^2.4.8",
59
- "react-native-device-info": "^9.0.2",
60
- "react-native-document-picker": "^8.1.1",
61
- "react-native-fs": "^2.19.0",
62
- "react-native-gesture-handler": "^1.10.3",
63
- "react-native-linear-gradient": "^2.7.3",
64
- "react-native-modal": "^12.1.0",
65
- "react-native-safe-area-context": "^3.3.0",
66
- "react-native-share": "^8.2.2",
67
- "react-native-simple-toast": "^1.1.3",
68
55
  "react-redux": "^7.2.4",
69
- "redux": "^4.1.0",
70
- "rn-fetch-blob": "^0.12.0"
56
+ "redux": "^4.1.0"
71
57
  },
72
58
  "devDependencies": {
73
59
  "@commitlint/config-conventional": "^17.0.2",
@@ -93,10 +79,17 @@
93
79
  "typescript": "^5.0.2"
94
80
  },
95
81
  "peerDependencies": {
82
+ "@100mslive/react-native-hms": "github:100mslive/100ms-react-native#release1.8.0",
83
+ "@shopify/flash-list": "^1.4.3",
96
84
  "react": "*",
97
85
  "react-native": "*",
86
+ "react-native-avoid-softinput": "^2.4.8",
87
+ "react-native-linear-gradient": "^2.7.3",
88
+ "react-native-modal": "^12.1.0",
98
89
  "react-native-permissions": "3.4.0",
99
90
  "react-native-reanimated": "^2.17.0",
91
+ "react-native-safe-area-context": "^3.3.0",
92
+ "react-native-simple-toast": "^1.1.3",
100
93
  "react-native-vector-icons": "^9.1.0"
101
94
  },
102
95
  "resolutions": {
@@ -12,7 +12,6 @@ import {
12
12
  HMSVideoTrackSettings,
13
13
  } from '@100mslive/react-native-hms';
14
14
  import React, { useEffect } from 'react';
15
- import { getModel } from 'react-native-device-info';
16
15
  import { batch, useDispatch } from 'react-redux';
17
16
 
18
17
  import { getJoinConfig } from './utils';
@@ -20,26 +19,11 @@ import { saveUserData, setHMSInstance } from './redux/actions';
20
19
  import { FullScreenIndicator } from './components/FullScreenIndicator';
21
20
  import { clearConfig } from './hooks-util';
22
21
  import { store } from './redux';
22
+ import type { HMSIOSScreenShareConfig } from './utils/types';
23
23
 
24
24
  const getTrackSettings = () => {
25
25
  const joinConfig = getJoinConfig();
26
26
 
27
- const listOfFaultyDevices = [
28
- 'Pixel',
29
- 'Pixel XL',
30
- 'Moto G5',
31
- 'Moto G (5S) Plus',
32
- 'Moto G4',
33
- 'TA-1053',
34
- 'Mi A1',
35
- 'Mi A2',
36
- 'E5823', // Sony z5 compact
37
- 'Redmi Note 5',
38
- 'FP2', // Fairphone FP2
39
- 'MI 5',
40
- ];
41
- const deviceModal = getModel();
42
-
43
27
  /**
44
28
  * Customize local peer's Audio track settings before Joining the Room.
45
29
  *
@@ -49,15 +33,8 @@ const getTrackSettings = () => {
49
33
  initialState: joinConfig.mutedAudio
50
34
  ? HMSTrackSettingsInitState.MUTED
51
35
  : HMSTrackSettingsInitState.UNMUTED,
52
- useHardwareEchoCancellation: listOfFaultyDevices.includes(deviceModal)
53
- ? true
54
- : false,
55
36
  audioSource: joinConfig.audioMixer
56
- ? [
57
- 'mic_node',
58
- 'screen_broadcast_audio_receiver_node',
59
- 'audio_file_player_node',
60
- ]
37
+ ? ['mic_node', 'screen_broadcast_audio_receiver_node']
61
38
  : undefined,
62
39
  /**
63
40
  * `audioMode` param allows you to capture audio in its highest quality
@@ -96,7 +73,8 @@ const getLogSettings = (): HMSLogSettings => {
96
73
  });
97
74
  };
98
75
 
99
- const getIOSBuildConfig = () => store.getState().user.iosBuildConfig || {};
76
+ const getIOSBuildConfig = (): Partial<HMSIOSScreenShareConfig> =>
77
+ store.getState().user.iosBuildConfig || {};
100
78
 
101
79
  /**
102
80
  * Regular Usage:
@@ -160,19 +138,14 @@ export const HMSInstanceSetup = () => {
160
138
  clearConfig();
161
139
  getHmsInstance()
162
140
  .then((hmssdkInstance) => {
163
- console.log('$$$ hmssdkInstance id = ', hmssdkInstance.id);
164
141
  if (!ignore) {
165
142
  // If this component is mounted
166
143
  // save instance in store
167
- console.log('$$$ before batch');
168
144
  batch(() => {
169
- console.log('$$$ setHMSInstance call');
170
145
  dispatch(setHMSInstance(hmssdkInstance));
171
146
  // TODO: remove this from user reducer
172
- console.log('$$$ saveUserData call');
173
147
  dispatch(saveUserData({ hmsInstance: hmssdkInstance }));
174
148
  });
175
- console.log('$$$ after batch');
176
149
  } else {
177
150
  // If this component is not mounted when this response is received
178
151
  // that means Root componnet is unmounted, we can destroy instance safely
@@ -1,10 +1,14 @@
1
1
  import React, { memo } from 'react';
2
2
  import { Provider } from 'react-redux';
3
+ import {
4
+ SafeAreaInsetsContext,
5
+ SafeAreaProvider,
6
+ } from 'react-native-safe-area-context';
3
7
 
4
8
  import { store } from './redux/index';
5
9
  import { HMSContainer } from './HMSContainer';
6
10
  import { setPrebuiltData } from './redux/actions';
7
- import type { IOSBuildConfig } from './utils/types';
11
+ import type { HMSIOSScreenShareConfig } from './utils/types';
8
12
 
9
13
  export interface HMSPrebuiltProps {
10
14
  roomCode: string;
@@ -16,19 +20,33 @@ export interface HMSPrebuiltProps {
16
20
  token: string;
17
21
  };
18
22
  debugMode?: boolean;
19
- ios?: IOSBuildConfig;
23
+ ios?: HMSIOSScreenShareConfig;
20
24
  };
21
25
  }
22
26
 
23
- export const _HMSPrebuilt: React.FC<HMSPrebuiltProps> = (props) => {
27
+ const _HMSPrebuilt: React.FC<HMSPrebuiltProps> = (props) => {
24
28
  const { roomCode, options } = props;
25
29
 
26
30
  store.dispatch(setPrebuiltData({ roomCode, options }));
27
31
 
32
+ // @ts-ignore Not using `useContext` hook because we don't want to subscribe to updates
33
+ // We just want to check if SafeAreaProvider exists or not
34
+ const safeAreaProviderExists = !!SafeAreaInsetsContext.Consumer._currentValue;
35
+
36
+ if (safeAreaProviderExists) {
37
+ return (
38
+ <Provider store={store}>
39
+ <HMSContainer />
40
+ </Provider>
41
+ );
42
+ }
43
+
28
44
  return (
29
- <Provider store={store}>
30
- <HMSContainer />
31
- </Provider>
45
+ <SafeAreaProvider>
46
+ <Provider store={store}>
47
+ <HMSContainer />
48
+ </Provider>
49
+ </SafeAreaProvider>
32
50
  );
33
51
  };
34
52
 
@@ -5,12 +5,21 @@ import {
5
5
  HMSUpdateListenerActions,
6
6
  } from '@100mslive/react-native-hms';
7
7
  import React, { useCallback, useEffect, useRef, useState } from 'react';
8
- import { Alert, Platform, StatusBar, StyleSheet, View } from 'react-native';
8
+ import {
9
+ Alert,
10
+ Keyboard,
11
+ Platform,
12
+ StatusBar,
13
+ StyleSheet,
14
+ View,
15
+ } from 'react-native';
9
16
  import Toast from 'react-native-simple-toast';
10
- import { batch, useDispatch } from 'react-redux';
17
+ import { batch, useDispatch, useSelector, useStore } from 'react-redux';
11
18
 
12
19
  import { Preview } from './components';
13
20
  import {
21
+ changeMeetingState,
22
+ changeStartingHLSStream,
14
23
  clearStore,
15
24
  setHMSLocalPeerState,
16
25
  setHMSRoomState,
@@ -23,6 +32,7 @@ import {
23
32
  useHMSInstance,
24
33
  useHMSListeners,
25
34
  useHMSSessionStore,
35
+ useLeaveMethods,
26
36
  } from './hooks-util';
27
37
  import {
28
38
  peerTrackNodeExistForPeerAndTrack,
@@ -34,7 +44,9 @@ import { MeetingState } from './types';
34
44
  import { getJoinConfig } from './utils';
35
45
  import { COLORS } from './utils/theme';
36
46
  import { FullScreenIndicator } from './components/FullScreenIndicator';
37
- import { selectIsHLSViewer } from './hooks-util-selectors';
47
+ import { HMSMeetingEnded } from './components/HMSMeetingEnded';
48
+ import { selectIsHLSViewer, selectShouldGoLive } from './hooks-util-selectors';
49
+ import type { RootState } from './redux';
38
50
 
39
51
  type PreviewData = {
40
52
  room: HMSRoom;
@@ -42,19 +54,23 @@ type PreviewData = {
42
54
  };
43
55
 
44
56
  export const HMSRoomSetup = () => {
45
- console.log('### Inside HMSRoomSetup');
57
+ const ignoreHLSStreamPromise = useRef(false);
46
58
  const didInitMeetingAction = useRef(false);
47
59
  const hmsInstance = useHMSInstance();
48
60
  const dispatch = useDispatch();
49
- console.log('### after dispatch');
61
+ const reduxStore = useStore();
50
62
 
51
63
  const { getConfig, clearConfig } = useHMSConfig();
52
- const [meetingState, setMeetingState] = useState(MeetingState.NOT_JOINED);
64
+ const meetingState = useSelector(
65
+ (state: RootState) => state.app.meetingState
66
+ );
53
67
  const [peerTrackNodes, setPeerTrackNodes] = useState<PeerTrackNode[]>([]);
54
68
  const [loading, setLoading] = useState(false);
69
+ const { goToPreview } = useLeaveMethods();
55
70
 
56
71
  const joinMeeting = useCallback(async () => {
57
72
  setLoading(true);
73
+ Keyboard.dismiss();
58
74
  const hmsConfig = await getConfig();
59
75
  // TODO: handle case when promise returned from `getConfig()` is resolved when Root component has been unmounted
60
76
  hmsInstance.join(hmsConfig);
@@ -67,8 +83,22 @@ export const HMSRoomSetup = () => {
67
83
  hmsInstance.preview(hmsConfig);
68
84
  }, [getConfig, hmsInstance]);
69
85
 
86
+ const startHLSStreaming = useCallback(async () => {
87
+ dispatch(changeStartingHLSStream(true));
88
+ try {
89
+ const d = await hmsInstance.startHLSStreaming();
90
+ console.log('Start HLS Streaming Success: ', d);
91
+ } catch (e) {
92
+ console.log('Start HLS Streaming Error: ', e);
93
+ if (!ignoreHLSStreamPromise.current) {
94
+ console.log('Unable to go live at the moment: ', e);
95
+ goToPreview();
96
+ }
97
+ }
98
+ }, [goToPreview, hmsInstance]);
99
+
70
100
  // HMS Room, Peers, Track Listeners
71
- useHMSListeners(meetingState, setPeerTrackNodes, setMeetingState);
101
+ useHMSListeners(setPeerTrackNodes);
72
102
 
73
103
  /**
74
104
  * Session store is a shared realtime key-value store that is accessible by everyone in the room.
@@ -126,24 +156,20 @@ export const HMSRoomSetup = () => {
126
156
  // HMS Preview Listener
127
157
  useEffect(() => {
128
158
  const onPreviewHandler = (data: PreviewData) => {
129
- console.log('ON_PREVIEW called');
159
+ setLoading(false);
130
160
  batch(() => {
131
161
  dispatch(setHMSRoomState(data.room));
132
162
  dispatch(setHMSLocalPeerState(data.room.localPeer));
163
+ dispatch(changeMeetingState(MeetingState.IN_PREVIEW));
133
164
  });
134
-
135
- setLoading(false);
136
- setMeetingState(MeetingState.IN_PREVIEW);
137
165
  };
138
166
 
139
- console.log('HMSUpdateListenerActions.ON_PREVIEW registered');
140
167
  hmsInstance.addEventListener(
141
168
  HMSUpdateListenerActions.ON_PREVIEW,
142
169
  onPreviewHandler
143
170
  );
144
171
 
145
172
  return () => {
146
- console.log('HMSUpdateListenerActions.ON_PREVIEW removed');
147
173
  hmsInstance.removeEventListener(HMSUpdateListenerActions.ON_PREVIEW);
148
174
  };
149
175
  }, [hmsInstance]);
@@ -186,7 +212,12 @@ export const HMSRoomSetup = () => {
186
212
  return [hmsLocalPeer, ...prevPeerTrackNodes];
187
213
  });
188
214
 
189
- setMeetingState(MeetingState.IN_MEETING);
215
+ const shouldGoLive = selectShouldGoLive(reduxStore.getState());
216
+
217
+ if (shouldGoLive) {
218
+ startHLSStreaming();
219
+ }
220
+ dispatch(changeMeetingState(MeetingState.IN_MEETING));
190
221
  };
191
222
 
192
223
  hmsInstance.addEventListener(
@@ -197,10 +228,13 @@ export const HMSRoomSetup = () => {
197
228
  return () => {
198
229
  hmsInstance.removeEventListener(HMSUpdateListenerActions.ON_JOIN);
199
230
  };
200
- }, [hmsInstance]);
231
+ }, [startHLSStreaming, hmsInstance]);
232
+
233
+ const meetingEnded = meetingState === MeetingState.MEETING_ENDED;
201
234
 
235
+ // Handling Automatically calling Preview or Join API
202
236
  useEffect(() => {
203
- if (!didInitMeetingAction.current) {
237
+ if (!meetingEnded && !didInitMeetingAction.current) {
204
238
  didInitMeetingAction.current = true;
205
239
 
206
240
  // let ignore = false;
@@ -227,10 +261,12 @@ export const HMSRoomSetup = () => {
227
261
  // ignore = true;
228
262
  };
229
263
  }
230
- }, []);
264
+ }, [meetingEnded]);
231
265
 
232
266
  useEffect(() => {
233
267
  return () => {
268
+ ignoreHLSStreamPromise.current = true;
269
+
234
270
  // TODOS:
235
271
  // - Check If we have already left meeting, or destroyed native HMSSDK
236
272
  // - No need to reset redux state?
@@ -264,6 +300,8 @@ export const HMSRoomSetup = () => {
264
300
  <Preview join={joinMeeting} loadingButtonState={loading} />
265
301
  ) : meetingState === MeetingState.IN_MEETING ? (
266
302
  <Meeting peerTrackNodes={peerTrackNodes} />
303
+ ) : meetingState === MeetingState.MEETING_ENDED ? (
304
+ <HMSMeetingEnded />
267
305
  ) : loading ? (
268
306
  <FullScreenIndicator />
269
307
  ) : (
Binary file
@@ -0,0 +1,27 @@
1
+ import React from 'react';
2
+ import { Image, StyleSheet } from 'react-native';
3
+ import type { ImageProps } from 'react-native';
4
+
5
+ interface CheckIconProps extends Omit<ImageProps, 'source'> {}
6
+
7
+ export const CheckIcon: React.FC<CheckIconProps> = ({
8
+ style,
9
+ ...restProps
10
+ }) => {
11
+ return (
12
+ <Image
13
+ source={require('./assets/check.png')}
14
+ style={[styles.icon, style]}
15
+ {...restProps}
16
+ />
17
+ );
18
+ };
19
+
20
+ const styles = StyleSheet.create({
21
+ icon: {
22
+ width: 24,
23
+ height: 24,
24
+ alignItems: 'center',
25
+ justifyContent: 'center',
26
+ },
27
+ });
Binary file
@@ -0,0 +1,27 @@
1
+ import React from 'react';
2
+ import { Image, StyleSheet } from 'react-native';
3
+ import type { ImageProps } from 'react-native';
4
+
5
+ interface RadioIconProps extends Omit<ImageProps, 'source'> {}
6
+
7
+ export const RadioIcon: React.FC<RadioIconProps> = ({
8
+ style,
9
+ ...restProps
10
+ }) => {
11
+ return (
12
+ <Image
13
+ source={require('./assets/radio.png')}
14
+ style={[styles.icon, style]}
15
+ {...restProps}
16
+ />
17
+ );
18
+ };
19
+
20
+ const styles = StyleSheet.create({
21
+ icon: {
22
+ width: 24,
23
+ height: 24,
24
+ alignItems: 'center',
25
+ justifyContent: 'center',
26
+ },
27
+ });
@@ -23,3 +23,5 @@ export * from './Bluetooth';
23
23
  export * from './Headphones';
24
24
  export * from './Wave';
25
25
  export * from './GenericLogo';
26
+ export * from './Radio';
27
+ export * from './Check';
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { StyleSheet } from 'react-native';
3
- import { useNavigation } from '@react-navigation/native';
3
+ import { NavigationContext } from '@react-navigation/native';
4
4
 
5
5
  import { COLORS } from '../utils/theme';
6
6
  import { PressableIcon } from './PressableIcon';
@@ -9,9 +9,9 @@ import { ChevronIcon } from '../Icons';
9
9
  export interface BackButtonProps {}
10
10
 
11
11
  export const BackButton: React.FC<BackButtonProps> = () => {
12
- const navigation = useNavigation();
12
+ const navigation = React.useContext(NavigationContext);
13
13
 
14
- if (!navigation.canGoBack()) {
14
+ if (!navigation || !navigation.canGoBack()) {
15
15
  return null;
16
16
  }
17
17
 
@@ -19,7 +19,6 @@ import {
19
19
  ChangeRoleAccepteModal,
20
20
  ChangeRoleModal,
21
21
  ChangeTrackStateModal,
22
- ChangeVolumeModal,
23
22
  SaveScreenshot,
24
23
  } from './Modals';
25
24
  import type { RootState } from '../redux';
@@ -289,15 +288,6 @@ export const DisplayView: React.FC<DisplayViewProps> = ({
289
288
  cancelModal={() => setModalVisible(ModalTypes.DEFAULT)}
290
289
  />
291
290
  </DefaultModal>
292
- <DefaultModal
293
- modalPosiion="center"
294
- modalVisible={modalVisible === ModalTypes.VOLUME}
295
- setModalVisible={() => setModalVisible(ModalTypes.DEFAULT)}
296
- >
297
- <ChangeVolumeModal
298
- cancelModal={() => setModalVisible(ModalTypes.DEFAULT)}
299
- />
300
- </DefaultModal>
301
291
  <DefaultModal
302
292
  modalPosiion="center"
303
293
  modalVisible={modalVisible === ModalTypes.CHANGE_NAME}
@@ -0,0 +1,57 @@
1
+ import * as React from 'react';
2
+ import { View, ActivityIndicator, Text, StyleSheet } from 'react-native';
3
+ import { useSelector } from 'react-redux';
4
+
5
+ import { COLORS } from '../utils/theme';
6
+ import type { RootState } from '../redux';
7
+ import { HMSLocalVideoView } from './HMSLocalVideoView';
8
+
9
+ export const HMSHLSStreamLoading = () => {
10
+ const isLocalVideoMuted = useSelector(
11
+ (state: RootState) => state.hmsStates.isLocalVideoMuted
12
+ );
13
+
14
+ return (
15
+ <View style={styles.container}>
16
+ {isLocalVideoMuted ? null : <HMSLocalVideoView />}
17
+
18
+ <View style={styles.hlsLoaderContainer}>
19
+ <ActivityIndicator
20
+ style={styles.hlsLoader}
21
+ size={'large'}
22
+ color={COLORS.PRIMARY.DEFAULT}
23
+ />
24
+
25
+ <Text style={styles.hlsLoaderText}>Starting live stream...</Text>
26
+ </View>
27
+ </View>
28
+ );
29
+ };
30
+
31
+ const styles = StyleSheet.create({
32
+ container: {
33
+ flex: 1,
34
+ position: 'relative',
35
+ backgroundColor: COLORS.BACKGROUND.DIM,
36
+ },
37
+ hlsLoaderContainer: {
38
+ position: 'absolute',
39
+ width: '100%',
40
+ height: '100%',
41
+ backgroundColor: COLORS.LOADING_BACKDROP,
42
+ zIndex: 5,
43
+ alignItems: 'center',
44
+ justifyContent: 'center',
45
+ },
46
+ hlsLoader: {
47
+ marginBottom: 30,
48
+ },
49
+ hlsLoaderText: {
50
+ color: COLORS.SURFACE.ON_SURFACE.HIGH,
51
+ fontSize: 16,
52
+ fontFamily: 'Inter',
53
+ fontWeight: '400',
54
+ lineHeight: 24,
55
+ letterSpacing: 0.5,
56
+ },
57
+ });
@@ -0,0 +1,42 @@
1
+ import * as React from 'react';
2
+ import { StyleSheet } from 'react-native';
3
+ import { useSelector } from 'react-redux';
4
+ import { HMSVideoViewMode } from '@100mslive/react-native-hms';
5
+
6
+ import type { RootState } from '../redux';
7
+ import { useHMSInstance } from '../hooks-util';
8
+
9
+ export const HMSLocalVideoView = () => {
10
+ const hmsInstance = useHMSInstance();
11
+ const HmsView = hmsInstance.HmsView;
12
+ const mirrorCamera = useSelector(
13
+ (state: RootState) => state.app.joinConfig.mirrorCamera
14
+ );
15
+ const autoSimulcast = useSelector(
16
+ (state: RootState) => state.app.joinConfig.autoSimulcast
17
+ );
18
+ const localVideoTrackId = useSelector(
19
+ (state: RootState) => state.hmsStates.localPeer?.videoTrack?.trackId
20
+ );
21
+
22
+ if (!localVideoTrackId) {
23
+ return null;
24
+ }
25
+
26
+ return (
27
+ <HmsView
28
+ trackId={localVideoTrackId}
29
+ key={localVideoTrackId}
30
+ mirror={mirrorCamera}
31
+ autoSimulcast={autoSimulcast}
32
+ scaleType={HMSVideoViewMode.ASPECT_FILL}
33
+ style={styles.hmsView}
34
+ />
35
+ );
36
+ };
37
+
38
+ const styles = StyleSheet.create({
39
+ hmsView: {
40
+ flex: 1,
41
+ },
42
+ });