@100mslive/react-native-room-kit 1.0.9 → 1.1.1

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 (410) hide show
  1. package/README.md +5 -6
  2. package/lib/commonjs/HMSRoomSetup.js +49 -0
  3. package/lib/commonjs/HMSRoomSetup.js.map +1 -1
  4. package/lib/commonjs/Icons/Add/assets/add-circle.png +0 -0
  5. package/lib/commonjs/Icons/Add/assets/add-circle@2x.png +0 -0
  6. package/lib/commonjs/Icons/Add/assets/add-circle@3x.png +0 -0
  7. package/lib/commonjs/Icons/Add/index.js +35 -0
  8. package/lib/commonjs/Icons/Add/index.js.map +1 -0
  9. package/lib/commonjs/Icons/CheckBox/assets/checkbox-checked.png +0 -0
  10. package/lib/commonjs/Icons/CheckBox/assets/checkbox-checked@2x.png +0 -0
  11. package/lib/commonjs/Icons/CheckBox/assets/checkbox-checked@3x.png +0 -0
  12. package/lib/commonjs/Icons/CheckBox/assets/checkbox.png +0 -0
  13. package/lib/commonjs/Icons/CheckBox/assets/checkbox@2x.png +0 -0
  14. package/lib/commonjs/Icons/CheckBox/assets/checkbox@3x.png +0 -0
  15. package/lib/commonjs/Icons/CheckBox/index.js +34 -0
  16. package/lib/commonjs/Icons/CheckBox/index.js.map +1 -0
  17. package/lib/commonjs/Icons/Poll/assets/poll.png +0 -0
  18. package/lib/commonjs/Icons/Poll/assets/poll@2x.png +0 -0
  19. package/lib/commonjs/Icons/Poll/assets/poll@3x.png +0 -0
  20. package/lib/commonjs/Icons/Poll/index.js +33 -0
  21. package/lib/commonjs/Icons/Poll/index.js.map +1 -0
  22. package/lib/commonjs/Icons/PollVote/assets/poll-vote.png +0 -0
  23. package/lib/commonjs/Icons/PollVote/assets/poll-vote@2x.png +0 -0
  24. package/lib/commonjs/Icons/PollVote/assets/poll-vote@3x.png +0 -0
  25. package/lib/commonjs/Icons/PollVote/index.js +33 -0
  26. package/lib/commonjs/Icons/PollVote/index.js.map +1 -0
  27. package/lib/commonjs/Icons/Quiz/assets/quiz.png +0 -0
  28. package/lib/commonjs/Icons/Quiz/assets/quiz@2x.png +0 -0
  29. package/lib/commonjs/Icons/Quiz/assets/quiz@3x.png +0 -0
  30. package/lib/commonjs/Icons/Quiz/index.js +33 -0
  31. package/lib/commonjs/Icons/Quiz/index.js.map +1 -0
  32. package/lib/commonjs/Icons/TrashBin/assets/trash-bin.png +0 -0
  33. package/lib/commonjs/Icons/TrashBin/assets/trash-bin@2x.png +0 -0
  34. package/lib/commonjs/Icons/TrashBin/assets/trash-bin@3x.png +0 -0
  35. package/lib/commonjs/Icons/TrashBin/index.js +34 -0
  36. package/lib/commonjs/Icons/TrashBin/index.js.map +1 -0
  37. package/lib/commonjs/Icons/index.js +66 -0
  38. package/lib/commonjs/Icons/index.js.map +1 -1
  39. package/lib/commonjs/components/CheckboxInputRow.js +53 -0
  40. package/lib/commonjs/components/CheckboxInputRow.js.map +1 -0
  41. package/lib/commonjs/components/CreatePoll.js +163 -0
  42. package/lib/commonjs/components/CreatePoll.js.map +1 -0
  43. package/lib/commonjs/components/Footer.js +6 -1
  44. package/lib/commonjs/components/Footer.js.map +1 -1
  45. package/lib/commonjs/components/GridView.js +9 -4
  46. package/lib/commonjs/components/GridView.js.map +1 -1
  47. package/lib/commonjs/components/HLSPlayerEmoticons.js +2 -3
  48. package/lib/commonjs/components/HLSPlayerEmoticons.js.map +1 -1
  49. package/lib/commonjs/components/HMSBaseButton.js +4 -2
  50. package/lib/commonjs/components/HMSBaseButton.js.map +1 -1
  51. package/lib/commonjs/components/HMSNotification.js +5 -1
  52. package/lib/commonjs/components/HMSNotification.js.map +1 -1
  53. package/lib/commonjs/components/HMSNotifications.js +4 -0
  54. package/lib/commonjs/components/HMSNotifications.js.map +1 -1
  55. package/lib/commonjs/components/HMSPollsQuizzesNotification.js +95 -0
  56. package/lib/commonjs/components/HMSPollsQuizzesNotification.js.map +1 -0
  57. package/lib/commonjs/components/HMSRoomOptions.js +2 -1
  58. package/lib/commonjs/components/HMSRoomOptions.js.map +1 -1
  59. package/lib/commonjs/components/HMSSecondaryButton.js +56 -0
  60. package/lib/commonjs/components/HMSSecondaryButton.js.map +1 -0
  61. package/lib/commonjs/components/Meeting.js +1 -0
  62. package/lib/commonjs/components/Meeting.js.map +1 -1
  63. package/lib/commonjs/components/OverlayContainer.js +6 -3
  64. package/lib/commonjs/components/OverlayContainer.js.map +1 -1
  65. package/lib/commonjs/components/OverlayedViews.js +5 -2
  66. package/lib/commonjs/components/OverlayedViews.js.map +1 -1
  67. package/lib/commonjs/components/PeerVideoTile/HMSPinchGesture.js +18 -87
  68. package/lib/commonjs/components/PeerVideoTile/HMSPinchGesture.js.map +1 -1
  69. package/lib/commonjs/components/PeerVideoTile/PeerVideoTileView.js +3 -1
  70. package/lib/commonjs/components/PeerVideoTile/PeerVideoTileView.js.map +1 -1
  71. package/lib/commonjs/components/PollAndQuizQuestionResponseCard.js +185 -0
  72. package/lib/commonjs/components/PollAndQuizQuestionResponseCard.js.map +1 -0
  73. package/lib/commonjs/components/PollAndQuizVoting.js +136 -0
  74. package/lib/commonjs/components/PollAndQuizVoting.js.map +1 -0
  75. package/lib/commonjs/components/PollAndQuizzStateLabel.js +72 -0
  76. package/lib/commonjs/components/PollAndQuizzStateLabel.js.map +1 -0
  77. package/lib/commonjs/components/PollQDeleteConfirmationSheetView.js +68 -0
  78. package/lib/commonjs/components/PollQDeleteConfirmationSheetView.js.map +1 -0
  79. package/lib/commonjs/components/PollQuestion.js +368 -0
  80. package/lib/commonjs/components/PollQuestion.js.map +1 -0
  81. package/lib/commonjs/components/PollQuestionDeleteConfirmation.js +97 -0
  82. package/lib/commonjs/components/PollQuestionDeleteConfirmation.js.map +1 -0
  83. package/lib/commonjs/components/PollQuestions.js +189 -0
  84. package/lib/commonjs/components/PollQuestions.js.map +1 -0
  85. package/lib/commonjs/components/PollResponseProgressView.js +68 -0
  86. package/lib/commonjs/components/PollResponseProgressView.js.map +1 -0
  87. package/lib/commonjs/components/PollsAndQuizBottomSheet.js +59 -0
  88. package/lib/commonjs/components/PollsAndQuizBottomSheet.js.map +1 -0
  89. package/lib/commonjs/components/PollsAndQuizzesCard.js +97 -0
  90. package/lib/commonjs/components/PollsAndQuizzesCard.js.map +1 -0
  91. package/lib/commonjs/components/PollsAndQuizzesModalContent.js +159 -0
  92. package/lib/commonjs/components/PollsAndQuizzesModalContent.js.map +1 -0
  93. package/lib/commonjs/components/PollsConfigAndList.js +32 -0
  94. package/lib/commonjs/components/PollsConfigAndList.js.map +1 -0
  95. package/lib/commonjs/components/PreviousPollsAndQuizzesList.js +76 -0
  96. package/lib/commonjs/components/PreviousPollsAndQuizzesList.js.map +1 -0
  97. package/lib/commonjs/components/RadioInput.js +42 -0
  98. package/lib/commonjs/components/RadioInput.js.map +1 -0
  99. package/lib/commonjs/components/RadioInputRow.js +57 -0
  100. package/lib/commonjs/components/RadioInputRow.js.map +1 -0
  101. package/lib/commonjs/components/RoomSettingsModalContent.js +31 -6
  102. package/lib/commonjs/components/RoomSettingsModalContent.js.map +1 -1
  103. package/lib/commonjs/components/SwitchRow.js +2 -1
  104. package/lib/commonjs/components/SwitchRow.js.map +1 -1
  105. package/lib/commonjs/components/TilesContainer.js +1 -1
  106. package/lib/commonjs/components/WebrtcView.js +14 -6
  107. package/lib/commonjs/components/WebrtcView.js.map +1 -1
  108. package/lib/commonjs/hooks-util.js +36 -1
  109. package/lib/commonjs/hooks-util.js.map +1 -1
  110. package/lib/commonjs/redux/actionTypes.js +38 -1
  111. package/lib/commonjs/redux/actionTypes.js.map +1 -1
  112. package/lib/commonjs/redux/actions/index.js +140 -1
  113. package/lib/commonjs/redux/actions/index.js.map +1 -1
  114. package/lib/commonjs/redux/reducers/index.js +3 -1
  115. package/lib/commonjs/redux/reducers/index.js.map +1 -1
  116. package/lib/commonjs/redux/reducers/polls.js +251 -0
  117. package/lib/commonjs/redux/reducers/polls.js.map +1 -0
  118. package/lib/commonjs/types.js +1 -0
  119. package/lib/commonjs/types.js.map +1 -1
  120. package/lib/commonjs/utils/functions.js +6 -1
  121. package/lib/commonjs/utils/functions.js.map +1 -1
  122. package/lib/commonjs/utils/types.js +1 -0
  123. package/lib/commonjs/utils/types.js.map +1 -1
  124. package/lib/module/HMSRoomSetup.js +52 -3
  125. package/lib/module/HMSRoomSetup.js.map +1 -1
  126. package/lib/module/Icons/Add/assets/add-circle.png +0 -0
  127. package/lib/module/Icons/Add/assets/add-circle@2x.png +0 -0
  128. package/lib/module/Icons/Add/assets/add-circle@3x.png +0 -0
  129. package/lib/module/Icons/Add/index.js +27 -0
  130. package/lib/module/Icons/Add/index.js.map +1 -0
  131. package/lib/module/Icons/CheckBox/assets/checkbox-checked.png +0 -0
  132. package/lib/module/Icons/CheckBox/assets/checkbox-checked@2x.png +0 -0
  133. package/lib/module/Icons/CheckBox/assets/checkbox-checked@3x.png +0 -0
  134. package/lib/module/Icons/CheckBox/assets/checkbox.png +0 -0
  135. package/lib/module/Icons/CheckBox/assets/checkbox@2x.png +0 -0
  136. package/lib/module/Icons/CheckBox/assets/checkbox@3x.png +0 -0
  137. package/lib/module/Icons/CheckBox/index.js +26 -0
  138. package/lib/module/Icons/CheckBox/index.js.map +1 -0
  139. package/lib/module/Icons/Poll/assets/poll.png +0 -0
  140. package/lib/module/Icons/Poll/assets/poll@2x.png +0 -0
  141. package/lib/module/Icons/Poll/assets/poll@3x.png +0 -0
  142. package/lib/module/Icons/Poll/index.js +25 -0
  143. package/lib/module/Icons/Poll/index.js.map +1 -0
  144. package/lib/module/Icons/PollVote/assets/poll-vote.png +0 -0
  145. package/lib/module/Icons/PollVote/assets/poll-vote@2x.png +0 -0
  146. package/lib/module/Icons/PollVote/assets/poll-vote@3x.png +0 -0
  147. package/lib/module/Icons/PollVote/index.js +25 -0
  148. package/lib/module/Icons/PollVote/index.js.map +1 -0
  149. package/lib/module/Icons/Quiz/assets/quiz.png +0 -0
  150. package/lib/module/Icons/Quiz/assets/quiz@2x.png +0 -0
  151. package/lib/module/Icons/Quiz/assets/quiz@3x.png +0 -0
  152. package/lib/module/Icons/Quiz/index.js +25 -0
  153. package/lib/module/Icons/Quiz/index.js.map +1 -0
  154. package/lib/module/Icons/TrashBin/assets/trash-bin.png +0 -0
  155. package/lib/module/Icons/TrashBin/assets/trash-bin@2x.png +0 -0
  156. package/lib/module/Icons/TrashBin/assets/trash-bin@3x.png +0 -0
  157. package/lib/module/Icons/TrashBin/index.js +26 -0
  158. package/lib/module/Icons/TrashBin/index.js.map +1 -0
  159. package/lib/module/Icons/index.js +6 -0
  160. package/lib/module/Icons/index.js.map +1 -1
  161. package/lib/module/components/CheckboxInputRow.js +45 -0
  162. package/lib/module/components/CheckboxInputRow.js.map +1 -0
  163. package/lib/module/components/CreatePoll.js +155 -0
  164. package/lib/module/components/CreatePoll.js.map +1 -0
  165. package/lib/module/components/Footer.js +6 -1
  166. package/lib/module/components/Footer.js.map +1 -1
  167. package/lib/module/components/GridView.js +10 -5
  168. package/lib/module/components/GridView.js.map +1 -1
  169. package/lib/module/components/HLSPlayerEmoticons.js +2 -3
  170. package/lib/module/components/HLSPlayerEmoticons.js.map +1 -1
  171. package/lib/module/components/HMSBaseButton.js +5 -3
  172. package/lib/module/components/HMSBaseButton.js.map +1 -1
  173. package/lib/module/components/HMSNotification.js +5 -1
  174. package/lib/module/components/HMSNotification.js.map +1 -1
  175. package/lib/module/components/HMSNotifications.js +4 -0
  176. package/lib/module/components/HMSNotifications.js.map +1 -1
  177. package/lib/module/components/HMSPollsQuizzesNotification.js +86 -0
  178. package/lib/module/components/HMSPollsQuizzesNotification.js.map +1 -0
  179. package/lib/module/components/HMSRoomOptions.js +2 -1
  180. package/lib/module/components/HMSRoomOptions.js.map +1 -1
  181. package/lib/module/components/HMSSecondaryButton.js +47 -0
  182. package/lib/module/components/HMSSecondaryButton.js.map +1 -0
  183. package/lib/module/components/Meeting.js +2 -1
  184. package/lib/module/components/Meeting.js.map +1 -1
  185. package/lib/module/components/OverlayContainer.js +5 -3
  186. package/lib/module/components/OverlayContainer.js.map +1 -1
  187. package/lib/module/components/OverlayedViews.js +5 -2
  188. package/lib/module/components/OverlayedViews.js.map +1 -1
  189. package/lib/module/components/PeerVideoTile/HMSPinchGesture.js +18 -87
  190. package/lib/module/components/PeerVideoTile/HMSPinchGesture.js.map +1 -1
  191. package/lib/module/components/PeerVideoTile/PeerVideoTileView.js +3 -1
  192. package/lib/module/components/PeerVideoTile/PeerVideoTileView.js.map +1 -1
  193. package/lib/module/components/PollAndQuizQuestionResponseCard.js +176 -0
  194. package/lib/module/components/PollAndQuizQuestionResponseCard.js.map +1 -0
  195. package/lib/module/components/PollAndQuizVoting.js +127 -0
  196. package/lib/module/components/PollAndQuizVoting.js.map +1 -0
  197. package/lib/module/components/PollAndQuizzStateLabel.js +63 -0
  198. package/lib/module/components/PollAndQuizzStateLabel.js.map +1 -0
  199. package/lib/module/components/PollQDeleteConfirmationSheetView.js +60 -0
  200. package/lib/module/components/PollQDeleteConfirmationSheetView.js.map +1 -0
  201. package/lib/module/components/PollQuestion.js +359 -0
  202. package/lib/module/components/PollQuestion.js.map +1 -0
  203. package/lib/module/components/PollQuestionDeleteConfirmation.js +88 -0
  204. package/lib/module/components/PollQuestionDeleteConfirmation.js.map +1 -0
  205. package/lib/module/components/PollQuestions.js +180 -0
  206. package/lib/module/components/PollQuestions.js.map +1 -0
  207. package/lib/module/components/PollResponseProgressView.js +59 -0
  208. package/lib/module/components/PollResponseProgressView.js.map +1 -0
  209. package/lib/module/components/PollsAndQuizBottomSheet.js +50 -0
  210. package/lib/module/components/PollsAndQuizBottomSheet.js.map +1 -0
  211. package/lib/module/components/PollsAndQuizzesCard.js +88 -0
  212. package/lib/module/components/PollsAndQuizzesCard.js.map +1 -0
  213. package/lib/module/components/PollsAndQuizzesModalContent.js +150 -0
  214. package/lib/module/components/PollsAndQuizzesModalContent.js.map +1 -0
  215. package/lib/module/components/PollsConfigAndList.js +23 -0
  216. package/lib/module/components/PollsConfigAndList.js.map +1 -0
  217. package/lib/module/components/PreviousPollsAndQuizzesList.js +67 -0
  218. package/lib/module/components/PreviousPollsAndQuizzesList.js.map +1 -0
  219. package/lib/module/components/RadioInput.js +34 -0
  220. package/lib/module/components/RadioInput.js.map +1 -0
  221. package/lib/module/components/RadioInputRow.js +49 -0
  222. package/lib/module/components/RadioInputRow.js.map +1 -0
  223. package/lib/module/components/RoomSettingsModalContent.js +32 -7
  224. package/lib/module/components/RoomSettingsModalContent.js.map +1 -1
  225. package/lib/module/components/SwitchRow.js +2 -1
  226. package/lib/module/components/SwitchRow.js.map +1 -1
  227. package/lib/module/components/TilesContainer.js +1 -1
  228. package/lib/module/components/WebrtcView.js +15 -7
  229. package/lib/module/components/WebrtcView.js.map +1 -1
  230. package/lib/module/hooks-util.js +35 -2
  231. package/lib/module/hooks-util.js.map +1 -1
  232. package/lib/module/redux/actionTypes.js +39 -0
  233. package/lib/module/redux/actionTypes.js.map +1 -1
  234. package/lib/module/redux/actions/index.js +116 -1
  235. package/lib/module/redux/actions/index.js.map +1 -1
  236. package/lib/module/redux/reducers/index.js +3 -1
  237. package/lib/module/redux/reducers/index.js.map +1 -1
  238. package/lib/module/redux/reducers/polls.js +245 -0
  239. package/lib/module/redux/reducers/polls.js.map +1 -0
  240. package/lib/module/types.js +1 -0
  241. package/lib/module/types.js.map +1 -1
  242. package/lib/module/utils/functions.js +5 -1
  243. package/lib/module/utils/functions.js.map +1 -1
  244. package/lib/module/utils/types.js +1 -0
  245. package/lib/module/utils/types.js.map +1 -1
  246. package/lib/typescript/HMSRoomSetup.d.ts.map +1 -1
  247. package/lib/typescript/Icons/Add/index.d.ts +8 -0
  248. package/lib/typescript/Icons/Add/index.d.ts.map +1 -0
  249. package/lib/typescript/Icons/CheckBox/index.d.ts +8 -0
  250. package/lib/typescript/Icons/CheckBox/index.d.ts.map +1 -0
  251. package/lib/typescript/Icons/Poll/index.d.ts +7 -0
  252. package/lib/typescript/Icons/Poll/index.d.ts.map +1 -0
  253. package/lib/typescript/Icons/PollVote/index.d.ts +7 -0
  254. package/lib/typescript/Icons/PollVote/index.d.ts.map +1 -0
  255. package/lib/typescript/Icons/Quiz/index.d.ts +7 -0
  256. package/lib/typescript/Icons/Quiz/index.d.ts.map +1 -0
  257. package/lib/typescript/Icons/TrashBin/index.d.ts +7 -0
  258. package/lib/typescript/Icons/TrashBin/index.d.ts.map +1 -0
  259. package/lib/typescript/Icons/index.d.ts +6 -0
  260. package/lib/typescript/Icons/index.d.ts.map +1 -1
  261. package/lib/typescript/components/CheckboxInputRow.d.ts +13 -0
  262. package/lib/typescript/components/CheckboxInputRow.d.ts.map +1 -0
  263. package/lib/typescript/components/CreatePoll.d.ts +5 -0
  264. package/lib/typescript/components/CreatePoll.d.ts.map +1 -0
  265. package/lib/typescript/components/Footer.d.ts.map +1 -1
  266. package/lib/typescript/components/GridView.d.ts.map +1 -1
  267. package/lib/typescript/components/HLSPlayerEmoticons.d.ts.map +1 -1
  268. package/lib/typescript/components/HMSBaseButton.d.ts +2 -1
  269. package/lib/typescript/components/HMSBaseButton.d.ts.map +1 -1
  270. package/lib/typescript/components/HMSNotifications.d.ts.map +1 -1
  271. package/lib/typescript/components/HMSPollsQuizzesNotification.d.ts +7 -0
  272. package/lib/typescript/components/HMSPollsQuizzesNotification.d.ts.map +1 -0
  273. package/lib/typescript/components/HMSPrimaryButton.d.ts +1 -1
  274. package/lib/typescript/components/HMSPrimaryButton.d.ts.map +1 -1
  275. package/lib/typescript/components/HMSRoomOptions.d.ts.map +1 -1
  276. package/lib/typescript/components/HMSSecondaryButton.d.ts +15 -0
  277. package/lib/typescript/components/HMSSecondaryButton.d.ts.map +1 -0
  278. package/lib/typescript/components/Meeting.d.ts.map +1 -1
  279. package/lib/typescript/components/OverlayContainer.d.ts +5 -1
  280. package/lib/typescript/components/OverlayContainer.d.ts.map +1 -1
  281. package/lib/typescript/components/OverlayedViews.d.ts +2 -1
  282. package/lib/typescript/components/OverlayedViews.d.ts.map +1 -1
  283. package/lib/typescript/components/PeerVideoTile/HMSPinchGesture.d.ts.map +1 -1
  284. package/lib/typescript/components/PeerVideoTile/PeerVideoTileView.d.ts.map +1 -1
  285. package/lib/typescript/components/PollAndQuizQuestionResponseCard.d.ts +13 -0
  286. package/lib/typescript/components/PollAndQuizQuestionResponseCard.d.ts.map +1 -0
  287. package/lib/typescript/components/PollAndQuizVoting.d.ts +6 -0
  288. package/lib/typescript/components/PollAndQuizVoting.d.ts.map +1 -0
  289. package/lib/typescript/components/PollAndQuizzStateLabel.d.ts +7 -0
  290. package/lib/typescript/components/PollAndQuizzStateLabel.d.ts.map +1 -0
  291. package/lib/typescript/components/PollQDeleteConfirmationSheetView.d.ts +6 -0
  292. package/lib/typescript/components/PollQDeleteConfirmationSheetView.d.ts.map +1 -0
  293. package/lib/typescript/components/PollQuestion.d.ts +14 -0
  294. package/lib/typescript/components/PollQuestion.d.ts.map +1 -0
  295. package/lib/typescript/components/PollQuestionDeleteConfirmation.d.ts +6 -0
  296. package/lib/typescript/components/PollQuestionDeleteConfirmation.d.ts.map +1 -0
  297. package/lib/typescript/components/PollQuestions.d.ts +6 -0
  298. package/lib/typescript/components/PollQuestions.d.ts.map +1 -0
  299. package/lib/typescript/components/PollResponseProgressView.d.ts +9 -0
  300. package/lib/typescript/components/PollResponseProgressView.d.ts.map +1 -0
  301. package/lib/typescript/components/PollsAndQuizBottomSheet.d.ts +3 -0
  302. package/lib/typescript/components/PollsAndQuizBottomSheet.d.ts.map +1 -0
  303. package/lib/typescript/components/PollsAndQuizzesCard.d.ts +7 -0
  304. package/lib/typescript/components/PollsAndQuizzesCard.d.ts.map +1 -0
  305. package/lib/typescript/components/PollsAndQuizzesModalContent.d.ts +7 -0
  306. package/lib/typescript/components/PollsAndQuizzesModalContent.d.ts.map +1 -0
  307. package/lib/typescript/components/PollsConfigAndList.d.ts +5 -0
  308. package/lib/typescript/components/PollsConfigAndList.d.ts.map +1 -0
  309. package/lib/typescript/components/PreviousPollsAndQuizzesList.d.ts +5 -0
  310. package/lib/typescript/components/PreviousPollsAndQuizzesList.d.ts.map +1 -0
  311. package/lib/typescript/components/RadioInput.d.ts +9 -0
  312. package/lib/typescript/components/RadioInput.d.ts.map +1 -0
  313. package/lib/typescript/components/RadioInputRow.d.ts +16 -0
  314. package/lib/typescript/components/RadioInputRow.d.ts.map +1 -0
  315. package/lib/typescript/components/RoomSettingsModalContent.d.ts.map +1 -1
  316. package/lib/typescript/components/SwitchRow.d.ts +2 -1
  317. package/lib/typescript/components/SwitchRow.d.ts.map +1 -1
  318. package/lib/typescript/components/WebrtcView.d.ts.map +1 -1
  319. package/lib/typescript/hooks-util.d.ts +2 -0
  320. package/lib/typescript/hooks-util.d.ts.map +1 -1
  321. package/lib/typescript/redux/actionTypes.d.ts +161 -0
  322. package/lib/typescript/redux/actionTypes.d.ts.map +1 -1
  323. package/lib/typescript/redux/actions/index.d.ts +36 -2
  324. package/lib/typescript/redux/actions/index.d.ts.map +1 -1
  325. package/lib/typescript/redux/index.d.ts +13 -0
  326. package/lib/typescript/redux/index.d.ts.map +1 -1
  327. package/lib/typescript/redux/reducers/index.d.ts +13 -0
  328. package/lib/typescript/redux/reducers/index.d.ts.map +1 -1
  329. package/lib/typescript/redux/reducers/polls.d.ts +19 -0
  330. package/lib/typescript/redux/reducers/polls.d.ts.map +1 -0
  331. package/lib/typescript/types.d.ts +3 -1
  332. package/lib/typescript/types.d.ts.map +1 -1
  333. package/lib/typescript/utils/functions.d.ts +2 -0
  334. package/lib/typescript/utils/functions.d.ts.map +1 -1
  335. package/lib/typescript/utils/types.d.ts +1 -0
  336. package/lib/typescript/utils/types.d.ts.map +1 -1
  337. package/package.json +2 -2
  338. package/src/HMSRoomSetup.tsx +61 -0
  339. package/src/Icons/Add/assets/add-circle.png +0 -0
  340. package/src/Icons/Add/assets/add-circle@2x.png +0 -0
  341. package/src/Icons/Add/assets/add-circle@3x.png +0 -0
  342. package/src/Icons/Add/index.tsx +37 -0
  343. package/src/Icons/CheckBox/assets/checkbox-checked.png +0 -0
  344. package/src/Icons/CheckBox/assets/checkbox-checked@2x.png +0 -0
  345. package/src/Icons/CheckBox/assets/checkbox-checked@3x.png +0 -0
  346. package/src/Icons/CheckBox/assets/checkbox.png +0 -0
  347. package/src/Icons/CheckBox/assets/checkbox@2x.png +0 -0
  348. package/src/Icons/CheckBox/assets/checkbox@3x.png +0 -0
  349. package/src/Icons/CheckBox/index.tsx +40 -0
  350. package/src/Icons/Poll/assets/poll.png +0 -0
  351. package/src/Icons/Poll/assets/poll@2x.png +0 -0
  352. package/src/Icons/Poll/assets/poll@3x.png +0 -0
  353. package/src/Icons/Poll/index.tsx +30 -0
  354. package/src/Icons/PollVote/assets/poll-vote.png +0 -0
  355. package/src/Icons/PollVote/assets/poll-vote@2x.png +0 -0
  356. package/src/Icons/PollVote/assets/poll-vote@3x.png +0 -0
  357. package/src/Icons/PollVote/index.tsx +33 -0
  358. package/src/Icons/Quiz/assets/quiz.png +0 -0
  359. package/src/Icons/Quiz/assets/quiz@2x.png +0 -0
  360. package/src/Icons/Quiz/assets/quiz@3x.png +0 -0
  361. package/src/Icons/Quiz/index.tsx +30 -0
  362. package/src/Icons/TrashBin/assets/trash-bin.png +0 -0
  363. package/src/Icons/TrashBin/assets/trash-bin@2x.png +0 -0
  364. package/src/Icons/TrashBin/assets/trash-bin@3x.png +0 -0
  365. package/src/Icons/TrashBin/index.tsx +34 -0
  366. package/src/Icons/index.ts +6 -0
  367. package/src/components/CheckboxInputRow.tsx +68 -0
  368. package/src/components/CreatePoll.tsx +176 -0
  369. package/src/components/Footer.tsx +7 -1
  370. package/src/components/GridView.tsx +14 -5
  371. package/src/components/HLSPlayerEmoticons.tsx +2 -3
  372. package/src/components/HMSBaseButton.tsx +8 -3
  373. package/src/components/HMSNotification.tsx +1 -1
  374. package/src/components/HMSNotifications.tsx +7 -0
  375. package/src/components/HMSPollsQuizzesNotification.tsx +110 -0
  376. package/src/components/HMSPrimaryButton.tsx +1 -1
  377. package/src/components/HMSRoomOptions.tsx +3 -0
  378. package/src/components/HMSSecondaryButton.tsx +72 -0
  379. package/src/components/Meeting.tsx +3 -0
  380. package/src/components/OverlayContainer.tsx +12 -3
  381. package/src/components/OverlayedViews.tsx +7 -3
  382. package/src/components/PeerVideoTile/HMSPinchGesture.tsx +28 -71
  383. package/src/components/PeerVideoTile/PeerVideoTileView.tsx +4 -1
  384. package/src/components/PollAndQuizQuestionResponseCard.tsx +311 -0
  385. package/src/components/PollAndQuizVoting.tsx +157 -0
  386. package/src/components/PollAndQuizzStateLabel.tsx +83 -0
  387. package/src/components/PollQDeleteConfirmationSheetView.tsx +82 -0
  388. package/src/components/PollQuestion.tsx +553 -0
  389. package/src/components/PollQuestionDeleteConfirmation.tsx +110 -0
  390. package/src/components/PollQuestions.tsx +259 -0
  391. package/src/components/PollResponseProgressView.tsx +77 -0
  392. package/src/components/PollsAndQuizBottomSheet.tsx +83 -0
  393. package/src/components/PollsAndQuizzesCard.tsx +111 -0
  394. package/src/components/PollsAndQuizzesModalContent.tsx +198 -0
  395. package/src/components/PollsConfigAndList.tsx +29 -0
  396. package/src/components/PreviousPollsAndQuizzesList.tsx +103 -0
  397. package/src/components/RadioInput.tsx +44 -0
  398. package/src/components/RadioInputRow.tsx +73 -0
  399. package/src/components/RoomSettingsModalContent.tsx +23 -0
  400. package/src/components/SwitchRow.tsx +4 -2
  401. package/src/components/TilesContainer.tsx +1 -1
  402. package/src/components/WebrtcView.tsx +27 -9
  403. package/src/hooks-util.ts +54 -0
  404. package/src/redux/actionTypes.ts +221 -0
  405. package/src/redux/actions/index.ts +218 -1
  406. package/src/redux/reducers/index.ts +2 -0
  407. package/src/redux/reducers/polls.ts +328 -0
  408. package/src/types.ts +2 -0
  409. package/src/utils/functions.ts +14 -0
  410. package/src/utils/types.ts +1 -0
@@ -0,0 +1,198 @@
1
+ import * as React from 'react';
2
+ import {
3
+ View,
4
+ Text,
5
+ StyleSheet,
6
+ TouchableOpacity,
7
+ Keyboard,
8
+ } from 'react-native';
9
+ import { useDispatch, useSelector } from 'react-redux';
10
+
11
+ import type { RootState } from '../redux';
12
+ import { useHMSRoomStyleSheet } from '../hooks-util';
13
+ import { BottomSheet } from './BottomSheet';
14
+ import { ChevronIcon, CloseIcon } from '../Icons';
15
+ import { TestIds } from '../utils/constants';
16
+ import { PollQuestions } from './PollQuestions';
17
+ import { CreatePollStages } from '../redux/actionTypes';
18
+ import { setPollStage } from '../redux/actions';
19
+ import { PollQDeleteConfirmationSheetView } from './PollQDeleteConfirmationSheetView';
20
+ import { PollsConfigAndList } from './PollsConfigAndList';
21
+ import { PollAndQuizVoting } from './PollAndQuizVoting';
22
+ import { PollAndQuizzStateLabel } from './PollAndQuizzStateLabel';
23
+
24
+ export interface PollsAndQuizzesModalContentProps {
25
+ fullHeight: boolean;
26
+ dismissModal(): void;
27
+ }
28
+
29
+ export const PollsAndQuizzesModalContent: React.FC<
30
+ PollsAndQuizzesModalContentProps
31
+ > = ({ fullHeight, dismissModal }) => {
32
+ const dispatch = useDispatch();
33
+ const headerTitle = useSelector((state: RootState) => {
34
+ const pollsData = state.polls;
35
+ if (pollsData.stage === CreatePollStages.POLL_QUESTION_CONFIG) {
36
+ return pollsData.pollName;
37
+ }
38
+ if (
39
+ pollsData.stage === CreatePollStages.POLL_VOTING &&
40
+ pollsData.selectedPollId !== null
41
+ ) {
42
+ return pollsData.polls[pollsData.selectedPollId]?.title || null;
43
+ }
44
+ return null;
45
+ });
46
+ const selectedPoll = useSelector((state: RootState) => {
47
+ const pollsData = state.polls;
48
+ if (
49
+ pollsData.stage === CreatePollStages.POLL_VOTING &&
50
+ pollsData.selectedPollId !== null
51
+ ) {
52
+ return pollsData.polls[pollsData.selectedPollId] || null;
53
+ }
54
+ return null;
55
+ });
56
+ const pollsStage = useSelector((state: RootState) => state.polls.stage);
57
+ const launchingPoll = useSelector(
58
+ (state: RootState) => state.polls.launchingPoll
59
+ );
60
+ const canCreateOrEndPoll = useSelector((state: RootState) => {
61
+ const permissions = state.hmsStates.localPeer?.role?.permissions;
62
+ return permissions?.pollWrite;
63
+ });
64
+ const canVoteOnPoll = useSelector((state: RootState) => {
65
+ const permissions = state.hmsStates.localPeer?.role?.permissions;
66
+ return permissions?.pollRead;
67
+ });
68
+
69
+ const hmsRoomStyles = useHMSRoomStyleSheet((theme, typography) => ({
70
+ headerText: {
71
+ color: theme.palette.on_surface_high,
72
+ fontFamily: `${typography.font_family}-SemiBold`,
73
+ },
74
+ }));
75
+
76
+ const handleBackPress = () => {
77
+ Keyboard.dismiss();
78
+ dispatch(setPollStage(CreatePollStages.POLL_CONFIG));
79
+ };
80
+
81
+ const handleClosePress = () => {
82
+ Keyboard.dismiss();
83
+ dismissModal();
84
+ };
85
+
86
+ return (
87
+ <View style={fullHeight ? styles.fullView : null}>
88
+ {/* Header */}
89
+ <View style={styles.header}>
90
+ <View style={styles.headerControls}>
91
+ {headerTitle ? (
92
+ <TouchableOpacity
93
+ onPress={handleBackPress}
94
+ disabled={launchingPoll}
95
+ hitSlop={styles.closeIconHitSlop}
96
+ style={[styles.backIcon, launchingPoll ? { opacity: 0.4 } : null]}
97
+ >
98
+ <ChevronIcon direction="left" />
99
+ </TouchableOpacity>
100
+ ) : null}
101
+
102
+ <Text
103
+ testID={TestIds.change_name_modal_heading}
104
+ numberOfLines={2}
105
+ style={[
106
+ styles.headerText,
107
+ { flexShrink: 1 },
108
+ hmsRoomStyles.headerText,
109
+ ]}
110
+ >
111
+ {headerTitle ?? ('Polls' || 'Polls and Quizzes')}
112
+ </Text>
113
+
114
+ {selectedPoll?.state ? (
115
+ <PollAndQuizzStateLabel state={selectedPoll?.state} />
116
+ ) : null}
117
+ </View>
118
+
119
+ <TouchableOpacity
120
+ testID={TestIds.change_name_modal_close_btn}
121
+ onPress={handleClosePress}
122
+ hitSlop={styles.closeIconHitSlop}
123
+ style={{ marginLeft: 16 }}
124
+ >
125
+ <CloseIcon />
126
+ </TouchableOpacity>
127
+ </View>
128
+
129
+ {/* Divider */}
130
+ <BottomSheet.Divider
131
+ style={fullHeight ? styles.halfDivider : styles.divider}
132
+ />
133
+
134
+ {/* Content */}
135
+ <View style={fullHeight ? styles.fullView : null}>
136
+ {pollsStage === CreatePollStages.POLL_CONFIG ? (
137
+ <PollsConfigAndList />
138
+ ) : pollsStage === CreatePollStages.POLL_QUESTION_CONFIG &&
139
+ canCreateOrEndPoll ? (
140
+ <PollQuestions dismissModal={dismissModal} />
141
+ ) : pollsStage === CreatePollStages.POLL_VOTING &&
142
+ (canVoteOnPoll || canCreateOrEndPoll) ? (
143
+ <PollAndQuizVoting dismissModal={dismissModal} />
144
+ ) : null}
145
+ </View>
146
+
147
+ {/* Modal */}
148
+ <PollQDeleteConfirmationSheetView />
149
+ </View>
150
+ );
151
+ };
152
+
153
+ const styles = StyleSheet.create({
154
+ // Utilities
155
+ fullView: {
156
+ flex: 1,
157
+ },
158
+ // Header
159
+ header: {
160
+ flexDirection: 'row',
161
+ alignItems: 'center',
162
+ justifyContent: 'space-between',
163
+ marginTop: 24,
164
+ marginHorizontal: 24,
165
+ },
166
+ headerControls: {
167
+ flexDirection: 'row',
168
+ alignItems: 'center',
169
+ flexShrink: 1,
170
+ },
171
+ headerText: {
172
+ fontSize: 20,
173
+ lineHeight: 24,
174
+ letterSpacing: 0.15,
175
+ marginRight: 12,
176
+ },
177
+ closeIconHitSlop: {
178
+ bottom: 16,
179
+ left: 16,
180
+ right: 16,
181
+ top: 16,
182
+ },
183
+ backIcon: {
184
+ marginRight: 8,
185
+ },
186
+ // Divider
187
+ halfDivider: {
188
+ marginHorizontal: 24,
189
+ marginVertical: 0,
190
+ marginTop: 24,
191
+ width: undefined,
192
+ },
193
+ divider: {
194
+ marginHorizontal: 24,
195
+ marginVertical: 24,
196
+ width: undefined,
197
+ },
198
+ });
@@ -0,0 +1,29 @@
1
+ import * as React from 'react';
2
+ import { ScrollView } from 'react-native';
3
+
4
+ import { CreatePoll } from './CreatePoll';
5
+ import { PreviousPollsAndQuizzesList } from './PreviousPollsAndQuizzesList';
6
+ import { useSelector } from 'react-redux';
7
+ import type { RootState } from 'src/redux';
8
+
9
+ export interface PollsConfigAndListProps {}
10
+
11
+ export const PollsConfigAndList: React.FC<PollsConfigAndListProps> = ({}) => {
12
+ const canCreateOrEndPoll = useSelector((state: RootState) => {
13
+ const permissions = state.hmsStates.localPeer?.role?.permissions;
14
+ return permissions?.pollWrite;
15
+ });
16
+ const canVoteOnPoll = useSelector((state: RootState) => {
17
+ const permissions = state.hmsStates.localPeer?.role?.permissions;
18
+ return permissions?.pollRead;
19
+ });
20
+
21
+ return (
22
+ <ScrollView contentContainerStyle={{ paddingBottom: 24 }}>
23
+ {canCreateOrEndPoll ? <CreatePoll /> : null}
24
+ {canVoteOnPoll || canCreateOrEndPoll ? (
25
+ <PreviousPollsAndQuizzesList />
26
+ ) : null}
27
+ </ScrollView>
28
+ );
29
+ };
@@ -0,0 +1,103 @@
1
+ import * as React from 'react';
2
+ import { View, Text, StyleSheet } from 'react-native';
3
+ import { useSelector } from 'react-redux';
4
+
5
+ import { useHMSRoomStyleSheet, useIsHLSViewer } from '../hooks-util';
6
+ import { PollsAndQuizzesCard } from './PollsAndQuizzesCard';
7
+ import type { RootState } from '../redux';
8
+ import { visiblePollsSelector } from '../utils/functions';
9
+
10
+ export interface PreviousPollsAndQuizzesListProps {}
11
+
12
+ export const PreviousPollsAndQuizzesList: React.FC<
13
+ PreviousPollsAndQuizzesListProps
14
+ > = ({}) => {
15
+ const isHLSViewer = useIsHLSViewer();
16
+ const polls = useSelector((state: RootState) => state.polls.polls);
17
+ const hlsCuedPollIds = useSelector(
18
+ (state: RootState) => state.polls.cuedPollIds
19
+ );
20
+
21
+ const canCreateOrEndPoll = useSelector((state: RootState) => {
22
+ const permissions = state.hmsStates.localPeer?.role?.permissions;
23
+ return permissions?.pollWrite;
24
+ });
25
+
26
+ const hmsRoomStyles = useHMSRoomStyleSheet((theme, typography) => ({
27
+ surfaceHighSemiBoldText: {
28
+ color: theme.palette.on_surface_high,
29
+ fontFamily: `${typography.font_family}-SemiBold`,
30
+ },
31
+ surfaceHighRegularText: {
32
+ color: theme.palette.on_surface_high,
33
+ fontFamily: `${typography.font_family}-Regular`,
34
+ },
35
+ }));
36
+
37
+ const pollsList = visiblePollsSelector(
38
+ Object.values(polls),
39
+ isHLSViewer,
40
+ hlsCuedPollIds
41
+ );
42
+
43
+ if (pollsList.length === 0 && !canCreateOrEndPoll) {
44
+ return (
45
+ <View style={styles.contentContainer}>
46
+ <Text
47
+ style={[
48
+ styles.subtitle,
49
+ hmsRoomStyles.surfaceHighRegularText,
50
+ styles.emptyList,
51
+ ]}
52
+ >
53
+ No Polls to show
54
+ </Text>
55
+ </View>
56
+ );
57
+ }
58
+
59
+ return (
60
+ <View style={styles.contentContainer}>
61
+ {pollsList.length > 0 && (
62
+ <Text style={[styles.title, hmsRoomStyles.surfaceHighSemiBoldText]}>
63
+ Previous Polls
64
+ </Text>
65
+ )}
66
+
67
+ {pollsList
68
+ .sort((a, b) => {
69
+ return a.state === b.state // If polls have same state, then sort as per startedAt
70
+ ? a.startedAt !== undefined && b.startedAt !== undefined
71
+ ? b.startedAt.getTime() - a.startedAt.getTime()
72
+ : 0
73
+ : // If polls have different state, then sort as per state
74
+ a.state !== undefined && b.state !== undefined
75
+ ? a.state - b.state
76
+ : 0;
77
+ })
78
+ .map((poll) => (
79
+ <PollsAndQuizzesCard key={poll.pollId} poll={poll} />
80
+ ))}
81
+ </View>
82
+ );
83
+ };
84
+
85
+ const styles = StyleSheet.create({
86
+ contentContainer: {
87
+ marginHorizontal: 24,
88
+ },
89
+ title: {
90
+ fontSize: 20,
91
+ lineHeight: 24,
92
+ letterSpacing: 0.15,
93
+ marginVertical: 24,
94
+ },
95
+ subtitle: {
96
+ fontSize: 16,
97
+ lineHeight: 20,
98
+ marginVertical: 24,
99
+ },
100
+ emptyList: {
101
+ textAlign: 'center',
102
+ },
103
+ });
@@ -0,0 +1,44 @@
1
+ import React from 'react';
2
+ import { View, StyleSheet } from 'react-native';
3
+ import type { ColorValue } from 'react-native';
4
+
5
+ export interface RadioInputProps {
6
+ selected: boolean;
7
+ size?: number;
8
+ color?: ColorValue;
9
+ }
10
+
11
+ export const RadioInput: React.FC<RadioInputProps> = ({
12
+ selected,
13
+ size = 24,
14
+ color = 'white',
15
+ }) => {
16
+ const outerCircleStyle = {
17
+ width: size,
18
+ height: size,
19
+ borderRadius: size / 2,
20
+ borderWidth: size / 12,
21
+ borderColor: color,
22
+ };
23
+
24
+ const innerCircleStyle = {
25
+ width: size / 2,
26
+ height: size / 2,
27
+ borderRadius: size / 4,
28
+ backgroundColor: color,
29
+ };
30
+
31
+ return (
32
+ <View style={[styles.outerCircle, outerCircleStyle]}>
33
+ {selected ? <View style={innerCircleStyle} /> : null}
34
+ </View>
35
+ );
36
+ };
37
+
38
+ const styles = StyleSheet.create({
39
+ outerCircle: {
40
+ alignItems: 'center',
41
+ justifyContent: 'center',
42
+ borderStyle: 'solid',
43
+ },
44
+ });
@@ -0,0 +1,73 @@
1
+ import React from 'react';
2
+ import { View, Text, StyleSheet, TouchableOpacity } from 'react-native';
3
+ import type { StyleProp, TextStyle, ViewStyle } from 'react-native';
4
+
5
+ import { RadioInput } from './RadioInput';
6
+ import type { RadioInputProps } from './RadioInput';
7
+ import { useHMSRoomStyleSheet } from '../hooks-util';
8
+
9
+ interface RadioInputRowProps {
10
+ text: string;
11
+ selected: boolean;
12
+ onChange(value: boolean): void;
13
+ disabled?: boolean;
14
+ radioSize?: RadioInputProps['size'];
15
+ radioColor?: RadioInputProps['color'];
16
+ textStyle?: StyleProp<TextStyle>;
17
+ containerStyle?: StyleProp<ViewStyle>;
18
+ }
19
+
20
+ export const RadioInputRow: React.FC<RadioInputRowProps> = ({
21
+ text,
22
+ containerStyle,
23
+ selected,
24
+ disabled,
25
+ textStyle,
26
+ radioSize,
27
+ radioColor,
28
+ onChange,
29
+ }) => {
30
+ const hmsRoomStyles = useHMSRoomStyleSheet((theme, typography) => ({
31
+ surfaceHighRegularText: {
32
+ color: theme.palette.on_surface_high,
33
+ fontFamily: `${typography.font_family}-Regular`,
34
+ },
35
+ }));
36
+
37
+ return (
38
+ <TouchableOpacity
39
+ disabled={disabled}
40
+ style={[styles.container, containerStyle]}
41
+ onPress={() => onChange(!selected)}
42
+ >
43
+ <View style={styles.radioWrapper}>
44
+ <RadioInput selected={selected} color={radioColor} size={radioSize} />
45
+ </View>
46
+
47
+ <Text
48
+ style={[
49
+ styles.normalText,
50
+ hmsRoomStyles.surfaceHighRegularText,
51
+ textStyle,
52
+ ]}
53
+ >
54
+ {text}
55
+ </Text>
56
+ </TouchableOpacity>
57
+ );
58
+ };
59
+
60
+ const styles = StyleSheet.create({
61
+ container: {
62
+ flexDirection: 'row',
63
+ alignItems: 'center',
64
+ },
65
+ radioWrapper: {
66
+ padding: 8,
67
+ marginRight: 8,
68
+ },
69
+ normalText: {
70
+ fontSize: 16,
71
+ lineHeight: 24,
72
+ },
73
+ });
@@ -13,6 +13,7 @@ import {
13
13
  HandIcon,
14
14
  ParticipantsIcon,
15
15
  PencilIcon,
16
+ PollVoteIcon,
16
17
  RecordingIcon,
17
18
  ScreenShareIcon,
18
19
  } from '../Icons';
@@ -67,6 +68,11 @@ export const RoomSettingsModalContent: React.FC<
67
68
  (state: RootState) => state.app.editUsernameDisabled
68
69
  );
69
70
 
71
+ const canReadOrWritePoll = useSelector((state: RootState) => {
72
+ const permissions = state.hmsStates.localPeer?.role?.permissions;
73
+ return permissions?.pollRead || permissions?.pollWrite;
74
+ });
75
+
70
76
  const { registerOnModalHideAction } = useBottomSheetActions();
71
77
 
72
78
  const { canShowParticipants, show } = useShowChatAndParticipants();
@@ -187,6 +193,15 @@ export const RoomSettingsModalContent: React.FC<
187
193
  closeRoomSettingsModal();
188
194
  };
189
195
 
196
+ const openPollsQuizzesModal = () => {
197
+ registerOnModalHideAction(() => {
198
+ setModalVisible(ModalTypes.POLLS_AND_QUIZZES);
199
+ });
200
+
201
+ // Close the current bottom sheet
202
+ closeRoomSettingsModal();
203
+ };
204
+
190
205
  const canShowBRB = useHMSLayoutConfig(
191
206
  (layoutConfig) =>
192
207
  !!layoutConfig?.screens?.conferencing?.default?.elements?.brb
@@ -298,6 +313,14 @@ export const RoomSettingsModalContent: React.FC<
298
313
  isActive: false,
299
314
  hide: isPublisher || editUsernameDisabled,
300
315
  },
316
+ {
317
+ id: 'polls-and-quizes',
318
+ icon: <PollVoteIcon style={{ width: 20, height: 20 }} />,
319
+ label: 'Polls',
320
+ pressHandler: openPollsQuizzesModal,
321
+ isActive: false,
322
+ hide: !canReadOrWritePoll,
323
+ },
301
324
  ].filter((itm) => !itm.hide),
302
325
  true
303
326
  ).map((itm, idx) => {
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { Switch, View, Text, StyleSheet } from 'react-native';
3
- import type { StyleProp, ViewStyle } from 'react-native';
3
+ import type { StyleProp, TextStyle, ViewStyle } from 'react-native';
4
4
 
5
5
  import { COLORS } from '../utils/theme';
6
6
 
@@ -9,6 +9,7 @@ interface SwitchRow {
9
9
  onChange(value: boolean): void;
10
10
  text: string;
11
11
  containerStyle?: StyleProp<ViewStyle>;
12
+ textStyle?: StyleProp<TextStyle>;
12
13
  LeftIcon?: React.ReactNode;
13
14
  }
14
15
 
@@ -16,6 +17,7 @@ export const SwitchRow: React.FC<SwitchRow> = ({
16
17
  text,
17
18
  LeftIcon,
18
19
  containerStyle,
20
+ textStyle,
19
21
  value,
20
22
  onChange,
21
23
  }) => {
@@ -24,7 +26,7 @@ export const SwitchRow: React.FC<SwitchRow> = ({
24
26
  <View style={styles.container}>
25
27
  {LeftIcon}
26
28
 
27
- <Text style={styles.text}>{text}</Text>
29
+ <Text style={[styles.text, textStyle]}>{text}</Text>
28
30
  </View>
29
31
 
30
32
  <Switch
@@ -55,7 +55,7 @@ const _TilesContainer: React.FC<TilesContainerProps> = ({
55
55
  ? 'row'
56
56
  : 'column',
57
57
  },
58
- { width: Dimensions.get('window').width - left - right },
58
+ { width: Dimensions.get('window').width + left + right },
59
59
  ]}
60
60
  >
61
61
  {peerTrackNodes.length <= 3 ? (
@@ -1,7 +1,6 @@
1
1
  import React, { useMemo } from 'react';
2
2
  import { useSelector } from 'react-redux';
3
3
  import {
4
- SafeAreaView,
5
4
  useSafeAreaFrame,
6
5
  useSafeAreaInsets,
7
6
  } from 'react-native-safe-area-context';
@@ -25,6 +24,7 @@ import { OverlayContainer } from './OverlayContainer';
25
24
  import { OverlayedViews } from './OverlayedViews';
26
25
  import { useFooterHeight } from './Footer';
27
26
  import { useHeaderHeight } from './Header';
27
+ import { View } from 'react-native';
28
28
 
29
29
  interface WebrtcViewProps {
30
30
  offset: SharedValue<number>;
@@ -72,21 +72,36 @@ export const WebrtcView = React.forwardRef<GridViewRefAttrs, WebrtcViewProps>(
72
72
  !state.app.localPeerTrackNode && pairedPeers.length === 0
73
73
  );
74
74
 
75
+ const fullHeight = height - top - (isPortrait ? bottom : 0);
76
+ const smallHeight = isPortrait
77
+ ? height - headerHeight - footerHeight
78
+ : height;
79
+
75
80
  const animatedStyles = useAnimatedStyle(() => {
81
+ return {
82
+ height: interpolate(offset.value, [0, 1], [fullHeight, smallHeight]),
83
+ };
84
+ }, [fullHeight, smallHeight]);
85
+
86
+ const headerPlaceholderAnimatedStyles = useAnimatedStyle(() => {
76
87
  return {
77
88
  height: interpolate(
78
89
  offset.value,
79
90
  [0, 1],
80
- [height - top - bottom, height - headerHeight - footerHeight]
91
+ [top, isPortrait ? headerHeight : top]
81
92
  ),
82
93
  };
83
- }, [height, top, bottom, footerHeight, headerHeight]);
94
+ }, [headerHeight, top, isPortrait]);
84
95
 
85
- const headerPlaceholderAnimatedStyles = useAnimatedStyle(() => {
96
+ const overlayedAnimatedStyles = useAnimatedStyle(() => {
86
97
  return {
87
- height: interpolate(offset.value, [0, 1], [top, headerHeight]),
98
+ bottom: interpolate(
99
+ offset.value,
100
+ [0, 1],
101
+ [!isPortrait ? bottom : 0, 0]
102
+ ),
88
103
  };
89
- }, [headerHeight, top]);
104
+ }, [isPortrait, bottom]);
90
105
 
91
106
  if (isPipModeActive) {
92
107
  return (
@@ -104,7 +119,7 @@ export const WebrtcView = React.forwardRef<GridViewRefAttrs, WebrtcViewProps>(
104
119
  }
105
120
 
106
121
  return (
107
- <SafeAreaView edges={['left', 'right']} style={{ flex: 1 }}>
122
+ <View style={{ flex: 1 }}>
108
123
  <Animated.View style={headerPlaceholderAnimatedStyles} />
109
124
 
110
125
  <Animated.View style={animatedStyles}>
@@ -123,10 +138,13 @@ export const WebrtcView = React.forwardRef<GridViewRefAttrs, WebrtcViewProps>(
123
138
  />
124
139
  )}
125
140
 
126
- <OverlayedViews offset={offset} />
141
+ <OverlayedViews
142
+ animatedStyle={overlayedAnimatedStyles}
143
+ offset={offset}
144
+ />
127
145
  </OverlayContainer>
128
146
  </Animated.View>
129
- </SafeAreaView>
147
+ </View>
130
148
  );
131
149
  }
132
150
  );
package/src/hooks-util.ts CHANGED
@@ -21,6 +21,10 @@ import {
21
21
  useHmsViewsResolutionsState,
22
22
  setSoftInputMode,
23
23
  getSoftInputMode,
24
+ WindowController,
25
+ useHMSHLSPlayerCue,
26
+ HMSPollUpdateType,
27
+ HMSPollType,
24
28
  // useHMSPeerUpdates,
25
29
  } from '@100mslive/react-native-hms';
26
30
  import type { Chat as ChatConfig } from '@100mslive/types-prebuilt/elements/chat';
@@ -70,6 +74,7 @@ import {
70
74
  } from 'react-redux';
71
75
  import type { AppDispatch, RootState } from './redux';
72
76
  import {
77
+ addCuedPollId,
73
78
  addMessage,
74
79
  addNotification,
75
80
  addParticipant,
@@ -2535,6 +2540,55 @@ export const useBackButtonPress = () => {
2535
2540
  }, [handleBackPress, handleModalVisibleType]);
2536
2541
  };
2537
2542
 
2543
+ export const useLandscapeImmersiveMode = () => {
2544
+ const isLandscapeOrientation = useIsLandscapeOrientation();
2545
+
2546
+ useEffect(() => {
2547
+ if (isLandscapeOrientation) {
2548
+ WindowController.hideSystemBars();
2549
+
2550
+ return WindowController.showSystemBars;
2551
+ }
2552
+ }, [isLandscapeOrientation]);
2553
+ };
2554
+
2555
+ export const useHLSCuedPolls = () => {
2556
+ const dispatch = useDispatch();
2557
+ const store = useStore<RootState>();
2558
+ const isHLSViewer = useIsHLSViewer();
2559
+
2560
+ useHMSHLSPlayerCue(
2561
+ (cue) => {
2562
+ const payloadStr = cue.payloadval;
2563
+
2564
+ if (
2565
+ isHLSViewer &&
2566
+ typeof payloadStr === 'string' &&
2567
+ payloadStr.startsWith('poll:')
2568
+ ) {
2569
+ const pollId = payloadStr.split(':')[1];
2570
+ const poll =
2571
+ pollId && pollId.length > 0
2572
+ ? store.getState().polls.polls[pollId]
2573
+ : null;
2574
+
2575
+ if (poll && poll.type === HMSPollType.poll) {
2576
+ console.log('HLS Cued Poll ID: ', pollId);
2577
+ dispatch(addCuedPollId(poll.pollId));
2578
+ dispatch(
2579
+ addNotification({
2580
+ id: `${poll.pollId}--${poll.state}`,
2581
+ type: NotificationTypes.POLLS_AND_QUIZZES,
2582
+ payload: { poll, pollUpdateType: HMSPollUpdateType.started },
2583
+ })
2584
+ );
2585
+ }
2586
+ }
2587
+ },
2588
+ [isHLSViewer]
2589
+ );
2590
+ };
2591
+
2538
2592
  export const useSavePropsToStore = (
2539
2593
  props: HMSPrebuiltProps,
2540
2594
  dispatch: AppDispatch