@100mslive/react-native-room-kit 1.1.0 → 1.1.2

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 (404) hide show
  1. package/README.md +1 -1
  2. package/lib/commonjs/HMSRoomSetup.js +47 -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/Check/assets/check-in-circle.png +0 -0
  10. package/lib/commonjs/Icons/Check/assets/check-in-circle@2x.png +0 -0
  11. package/lib/commonjs/Icons/Check/assets/check-in-circle@3x.png +0 -0
  12. package/lib/commonjs/Icons/Check/index.js +2 -1
  13. package/lib/commonjs/Icons/Check/index.js.map +1 -1
  14. package/lib/commonjs/Icons/CheckBox/assets/checkbox-checked.png +0 -0
  15. package/lib/commonjs/Icons/CheckBox/assets/checkbox-checked@2x.png +0 -0
  16. package/lib/commonjs/Icons/CheckBox/assets/checkbox-checked@3x.png +0 -0
  17. package/lib/commonjs/Icons/CheckBox/assets/checkbox.png +0 -0
  18. package/lib/commonjs/Icons/CheckBox/assets/checkbox@2x.png +0 -0
  19. package/lib/commonjs/Icons/CheckBox/assets/checkbox@3x.png +0 -0
  20. package/lib/commonjs/Icons/CheckBox/index.js +41 -0
  21. package/lib/commonjs/Icons/CheckBox/index.js.map +1 -0
  22. package/lib/commonjs/Icons/Poll/assets/poll.png +0 -0
  23. package/lib/commonjs/Icons/Poll/assets/poll@2x.png +0 -0
  24. package/lib/commonjs/Icons/Poll/assets/poll@3x.png +0 -0
  25. package/lib/commonjs/Icons/Poll/index.js +33 -0
  26. package/lib/commonjs/Icons/Poll/index.js.map +1 -0
  27. package/lib/commonjs/Icons/PollVote/assets/poll-vote.png +0 -0
  28. package/lib/commonjs/Icons/PollVote/assets/poll-vote@2x.png +0 -0
  29. package/lib/commonjs/Icons/PollVote/assets/poll-vote@3x.png +0 -0
  30. package/lib/commonjs/Icons/PollVote/index.js +33 -0
  31. package/lib/commonjs/Icons/PollVote/index.js.map +1 -0
  32. package/lib/commonjs/Icons/Quiz/assets/quiz.png +0 -0
  33. package/lib/commonjs/Icons/Quiz/assets/quiz@2x.png +0 -0
  34. package/lib/commonjs/Icons/Quiz/assets/quiz@3x.png +0 -0
  35. package/lib/commonjs/Icons/Quiz/index.js +33 -0
  36. package/lib/commonjs/Icons/Quiz/index.js.map +1 -0
  37. package/lib/commonjs/Icons/TrashBin/assets/trash-bin.png +0 -0
  38. package/lib/commonjs/Icons/TrashBin/assets/trash-bin@2x.png +0 -0
  39. package/lib/commonjs/Icons/TrashBin/assets/trash-bin@3x.png +0 -0
  40. package/lib/commonjs/Icons/TrashBin/index.js +34 -0
  41. package/lib/commonjs/Icons/TrashBin/index.js.map +1 -0
  42. package/lib/commonjs/Icons/index.js +66 -0
  43. package/lib/commonjs/Icons/index.js.map +1 -1
  44. package/lib/commonjs/components/CheckboxInputRow.js +53 -0
  45. package/lib/commonjs/components/CheckboxInputRow.js.map +1 -0
  46. package/lib/commonjs/components/CreatePoll.js +209 -0
  47. package/lib/commonjs/components/CreatePoll.js.map +1 -0
  48. package/lib/commonjs/components/Footer.js +6 -1
  49. package/lib/commonjs/components/Footer.js.map +1 -1
  50. package/lib/commonjs/components/GridView.js +4 -8
  51. package/lib/commonjs/components/GridView.js.map +1 -1
  52. package/lib/commonjs/components/HLSPlayerEmoticons.js +2 -3
  53. package/lib/commonjs/components/HLSPlayerEmoticons.js.map +1 -1
  54. package/lib/commonjs/components/HMSBaseButton.js +4 -2
  55. package/lib/commonjs/components/HMSBaseButton.js.map +1 -1
  56. package/lib/commonjs/components/HMSNotification.js +5 -1
  57. package/lib/commonjs/components/HMSNotification.js.map +1 -1
  58. package/lib/commonjs/components/HMSNotifications.js +4 -0
  59. package/lib/commonjs/components/HMSNotifications.js.map +1 -1
  60. package/lib/commonjs/components/HMSPollsQuizzesNotification.js +95 -0
  61. package/lib/commonjs/components/HMSPollsQuizzesNotification.js.map +1 -0
  62. package/lib/commonjs/components/HMSRoomOptions.js +2 -1
  63. package/lib/commonjs/components/HMSRoomOptions.js.map +1 -1
  64. package/lib/commonjs/components/HMSSecondaryButton.js +56 -0
  65. package/lib/commonjs/components/HMSSecondaryButton.js.map +1 -0
  66. package/lib/commonjs/components/PollAndQuizQuestionResponseCard.js +233 -0
  67. package/lib/commonjs/components/PollAndQuizQuestionResponseCard.js.map +1 -0
  68. package/lib/commonjs/components/PollAndQuizQuestionResponseCards.js +53 -0
  69. package/lib/commonjs/components/PollAndQuizQuestionResponseCards.js.map +1 -0
  70. package/lib/commonjs/components/PollAndQuizVoting.js +135 -0
  71. package/lib/commonjs/components/PollAndQuizVoting.js.map +1 -0
  72. package/lib/commonjs/components/PollAndQuizzStateLabel.js +72 -0
  73. package/lib/commonjs/components/PollAndQuizzStateLabel.js.map +1 -0
  74. package/lib/commonjs/components/PollQDeleteConfirmationSheetView.js +68 -0
  75. package/lib/commonjs/components/PollQDeleteConfirmationSheetView.js.map +1 -0
  76. package/lib/commonjs/components/PollQuestion.js +424 -0
  77. package/lib/commonjs/components/PollQuestion.js.map +1 -0
  78. package/lib/commonjs/components/PollQuestionDeleteConfirmation.js +97 -0
  79. package/lib/commonjs/components/PollQuestionDeleteConfirmation.js.map +1 -0
  80. package/lib/commonjs/components/PollQuestions.js +203 -0
  81. package/lib/commonjs/components/PollQuestions.js.map +1 -0
  82. package/lib/commonjs/components/PollResponseProgressView.js +68 -0
  83. package/lib/commonjs/components/PollResponseProgressView.js.map +1 -0
  84. package/lib/commonjs/components/PollsAndQuizBottomSheet.js +59 -0
  85. package/lib/commonjs/components/PollsAndQuizBottomSheet.js.map +1 -0
  86. package/lib/commonjs/components/PollsAndQuizzesCard.js +97 -0
  87. package/lib/commonjs/components/PollsAndQuizzesCard.js.map +1 -0
  88. package/lib/commonjs/components/PollsAndQuizzesModalContent.js +159 -0
  89. package/lib/commonjs/components/PollsAndQuizzesModalContent.js.map +1 -0
  90. package/lib/commonjs/components/PollsConfigAndList.js +32 -0
  91. package/lib/commonjs/components/PollsConfigAndList.js.map +1 -0
  92. package/lib/commonjs/components/PreviousPollsAndQuizzesList.js +76 -0
  93. package/lib/commonjs/components/PreviousPollsAndQuizzesList.js.map +1 -0
  94. package/lib/commonjs/components/QuizEndOptionsView.js +63 -0
  95. package/lib/commonjs/components/QuizEndOptionsView.js.map +1 -0
  96. package/lib/commonjs/components/RadioInput.js +49 -0
  97. package/lib/commonjs/components/RadioInput.js.map +1 -0
  98. package/lib/commonjs/components/RadioInputRow.js +57 -0
  99. package/lib/commonjs/components/RadioInputRow.js.map +1 -0
  100. package/lib/commonjs/components/RoomSettingsModalContent.js +31 -6
  101. package/lib/commonjs/components/RoomSettingsModalContent.js.map +1 -1
  102. package/lib/commonjs/components/SwitchRow.js +2 -1
  103. package/lib/commonjs/components/SwitchRow.js.map +1 -1
  104. package/lib/commonjs/components/TilesContainer.js +3 -4
  105. package/lib/commonjs/components/TilesContainer.js.map +1 -1
  106. package/lib/commonjs/hooks-util.js +26 -1
  107. package/lib/commonjs/hooks-util.js.map +1 -1
  108. package/lib/commonjs/redux/actionTypes.js +40 -1
  109. package/lib/commonjs/redux/actionTypes.js.map +1 -1
  110. package/lib/commonjs/redux/actions/index.js +153 -1
  111. package/lib/commonjs/redux/actions/index.js.map +1 -1
  112. package/lib/commonjs/redux/reducers/index.js +3 -1
  113. package/lib/commonjs/redux/reducers/index.js.map +1 -1
  114. package/lib/commonjs/redux/reducers/polls.js +278 -0
  115. package/lib/commonjs/redux/reducers/polls.js.map +1 -0
  116. package/lib/commonjs/types.js +1 -0
  117. package/lib/commonjs/types.js.map +1 -1
  118. package/lib/commonjs/utils/functions.js +52 -2
  119. package/lib/commonjs/utils/functions.js.map +1 -1
  120. package/lib/commonjs/utils/types.js +1 -0
  121. package/lib/commonjs/utils/types.js.map +1 -1
  122. package/lib/module/HMSRoomSetup.js +50 -3
  123. package/lib/module/HMSRoomSetup.js.map +1 -1
  124. package/lib/module/Icons/Add/assets/add-circle.png +0 -0
  125. package/lib/module/Icons/Add/assets/add-circle@2x.png +0 -0
  126. package/lib/module/Icons/Add/assets/add-circle@3x.png +0 -0
  127. package/lib/module/Icons/Add/index.js +27 -0
  128. package/lib/module/Icons/Add/index.js.map +1 -0
  129. package/lib/module/Icons/Check/assets/check-in-circle.png +0 -0
  130. package/lib/module/Icons/Check/assets/check-in-circle@2x.png +0 -0
  131. package/lib/module/Icons/Check/assets/check-in-circle@3x.png +0 -0
  132. package/lib/module/Icons/Check/index.js +2 -1
  133. package/lib/module/Icons/Check/index.js.map +1 -1
  134. package/lib/module/Icons/CheckBox/assets/checkbox-checked.png +0 -0
  135. package/lib/module/Icons/CheckBox/assets/checkbox-checked@2x.png +0 -0
  136. package/lib/module/Icons/CheckBox/assets/checkbox-checked@3x.png +0 -0
  137. package/lib/module/Icons/CheckBox/assets/checkbox.png +0 -0
  138. package/lib/module/Icons/CheckBox/assets/checkbox@2x.png +0 -0
  139. package/lib/module/Icons/CheckBox/assets/checkbox@3x.png +0 -0
  140. package/lib/module/Icons/CheckBox/index.js +33 -0
  141. package/lib/module/Icons/CheckBox/index.js.map +1 -0
  142. package/lib/module/Icons/Poll/assets/poll.png +0 -0
  143. package/lib/module/Icons/Poll/assets/poll@2x.png +0 -0
  144. package/lib/module/Icons/Poll/assets/poll@3x.png +0 -0
  145. package/lib/module/Icons/Poll/index.js +25 -0
  146. package/lib/module/Icons/Poll/index.js.map +1 -0
  147. package/lib/module/Icons/PollVote/assets/poll-vote.png +0 -0
  148. package/lib/module/Icons/PollVote/assets/poll-vote@2x.png +0 -0
  149. package/lib/module/Icons/PollVote/assets/poll-vote@3x.png +0 -0
  150. package/lib/module/Icons/PollVote/index.js +25 -0
  151. package/lib/module/Icons/PollVote/index.js.map +1 -0
  152. package/lib/module/Icons/Quiz/assets/quiz.png +0 -0
  153. package/lib/module/Icons/Quiz/assets/quiz@2x.png +0 -0
  154. package/lib/module/Icons/Quiz/assets/quiz@3x.png +0 -0
  155. package/lib/module/Icons/Quiz/index.js +25 -0
  156. package/lib/module/Icons/Quiz/index.js.map +1 -0
  157. package/lib/module/Icons/TrashBin/assets/trash-bin.png +0 -0
  158. package/lib/module/Icons/TrashBin/assets/trash-bin@2x.png +0 -0
  159. package/lib/module/Icons/TrashBin/assets/trash-bin@3x.png +0 -0
  160. package/lib/module/Icons/TrashBin/index.js +26 -0
  161. package/lib/module/Icons/TrashBin/index.js.map +1 -0
  162. package/lib/module/Icons/index.js +6 -0
  163. package/lib/module/Icons/index.js.map +1 -1
  164. package/lib/module/components/CheckboxInputRow.js +45 -0
  165. package/lib/module/components/CheckboxInputRow.js.map +1 -0
  166. package/lib/module/components/CreatePoll.js +200 -0
  167. package/lib/module/components/CreatePoll.js.map +1 -0
  168. package/lib/module/components/Footer.js +6 -1
  169. package/lib/module/components/Footer.js.map +1 -1
  170. package/lib/module/components/GridView.js +5 -9
  171. package/lib/module/components/GridView.js.map +1 -1
  172. package/lib/module/components/HLSPlayerEmoticons.js +2 -3
  173. package/lib/module/components/HLSPlayerEmoticons.js.map +1 -1
  174. package/lib/module/components/HMSBaseButton.js +5 -3
  175. package/lib/module/components/HMSBaseButton.js.map +1 -1
  176. package/lib/module/components/HMSNotification.js +5 -1
  177. package/lib/module/components/HMSNotification.js.map +1 -1
  178. package/lib/module/components/HMSNotifications.js +4 -0
  179. package/lib/module/components/HMSNotifications.js.map +1 -1
  180. package/lib/module/components/HMSPollsQuizzesNotification.js +86 -0
  181. package/lib/module/components/HMSPollsQuizzesNotification.js.map +1 -0
  182. package/lib/module/components/HMSRoomOptions.js +2 -1
  183. package/lib/module/components/HMSRoomOptions.js.map +1 -1
  184. package/lib/module/components/HMSSecondaryButton.js +47 -0
  185. package/lib/module/components/HMSSecondaryButton.js.map +1 -0
  186. package/lib/module/components/PollAndQuizQuestionResponseCard.js +224 -0
  187. package/lib/module/components/PollAndQuizQuestionResponseCard.js.map +1 -0
  188. package/lib/module/components/PollAndQuizQuestionResponseCards.js +44 -0
  189. package/lib/module/components/PollAndQuizQuestionResponseCards.js.map +1 -0
  190. package/lib/module/components/PollAndQuizVoting.js +126 -0
  191. package/lib/module/components/PollAndQuizVoting.js.map +1 -0
  192. package/lib/module/components/PollAndQuizzStateLabel.js +63 -0
  193. package/lib/module/components/PollAndQuizzStateLabel.js.map +1 -0
  194. package/lib/module/components/PollQDeleteConfirmationSheetView.js +60 -0
  195. package/lib/module/components/PollQDeleteConfirmationSheetView.js.map +1 -0
  196. package/lib/module/components/PollQuestion.js +415 -0
  197. package/lib/module/components/PollQuestion.js.map +1 -0
  198. package/lib/module/components/PollQuestionDeleteConfirmation.js +88 -0
  199. package/lib/module/components/PollQuestionDeleteConfirmation.js.map +1 -0
  200. package/lib/module/components/PollQuestions.js +194 -0
  201. package/lib/module/components/PollQuestions.js.map +1 -0
  202. package/lib/module/components/PollResponseProgressView.js +59 -0
  203. package/lib/module/components/PollResponseProgressView.js.map +1 -0
  204. package/lib/module/components/PollsAndQuizBottomSheet.js +50 -0
  205. package/lib/module/components/PollsAndQuizBottomSheet.js.map +1 -0
  206. package/lib/module/components/PollsAndQuizzesCard.js +88 -0
  207. package/lib/module/components/PollsAndQuizzesCard.js.map +1 -0
  208. package/lib/module/components/PollsAndQuizzesModalContent.js +150 -0
  209. package/lib/module/components/PollsAndQuizzesModalContent.js.map +1 -0
  210. package/lib/module/components/PollsConfigAndList.js +23 -0
  211. package/lib/module/components/PollsConfigAndList.js.map +1 -0
  212. package/lib/module/components/PreviousPollsAndQuizzesList.js +67 -0
  213. package/lib/module/components/PreviousPollsAndQuizzesList.js.map +1 -0
  214. package/lib/module/components/QuizEndOptionsView.js +54 -0
  215. package/lib/module/components/QuizEndOptionsView.js.map +1 -0
  216. package/lib/module/components/RadioInput.js +41 -0
  217. package/lib/module/components/RadioInput.js.map +1 -0
  218. package/lib/module/components/RadioInputRow.js +49 -0
  219. package/lib/module/components/RadioInputRow.js.map +1 -0
  220. package/lib/module/components/RoomSettingsModalContent.js +32 -7
  221. package/lib/module/components/RoomSettingsModalContent.js.map +1 -1
  222. package/lib/module/components/SwitchRow.js +2 -1
  223. package/lib/module/components/SwitchRow.js.map +1 -1
  224. package/lib/module/components/TilesContainer.js +5 -6
  225. package/lib/module/components/TilesContainer.js.map +1 -1
  226. package/lib/module/hooks-util.js +26 -4
  227. package/lib/module/hooks-util.js.map +1 -1
  228. package/lib/module/redux/actionTypes.js +41 -0
  229. package/lib/module/redux/actionTypes.js.map +1 -1
  230. package/lib/module/redux/actions/index.js +127 -1
  231. package/lib/module/redux/actions/index.js.map +1 -1
  232. package/lib/module/redux/reducers/index.js +3 -1
  233. package/lib/module/redux/reducers/index.js.map +1 -1
  234. package/lib/module/redux/reducers/polls.js +272 -0
  235. package/lib/module/redux/reducers/polls.js.map +1 -0
  236. package/lib/module/types.js +1 -0
  237. package/lib/module/types.js.map +1 -1
  238. package/lib/module/utils/functions.js +45 -1
  239. package/lib/module/utils/functions.js.map +1 -1
  240. package/lib/module/utils/types.js +1 -0
  241. package/lib/module/utils/types.js.map +1 -1
  242. package/lib/typescript/HMSRoomSetup.d.ts.map +1 -1
  243. package/lib/typescript/Icons/Add/index.d.ts +8 -0
  244. package/lib/typescript/Icons/Add/index.d.ts.map +1 -0
  245. package/lib/typescript/Icons/Check/index.d.ts +1 -0
  246. package/lib/typescript/Icons/Check/index.d.ts.map +1 -1
  247. package/lib/typescript/Icons/CheckBox/index.d.ts +9 -0
  248. package/lib/typescript/Icons/CheckBox/index.d.ts.map +1 -0
  249. package/lib/typescript/Icons/Poll/index.d.ts +7 -0
  250. package/lib/typescript/Icons/Poll/index.d.ts.map +1 -0
  251. package/lib/typescript/Icons/PollVote/index.d.ts +7 -0
  252. package/lib/typescript/Icons/PollVote/index.d.ts.map +1 -0
  253. package/lib/typescript/Icons/Quiz/index.d.ts +7 -0
  254. package/lib/typescript/Icons/Quiz/index.d.ts.map +1 -0
  255. package/lib/typescript/Icons/TrashBin/index.d.ts +7 -0
  256. package/lib/typescript/Icons/TrashBin/index.d.ts.map +1 -0
  257. package/lib/typescript/Icons/index.d.ts +6 -0
  258. package/lib/typescript/Icons/index.d.ts.map +1 -1
  259. package/lib/typescript/components/CheckboxInputRow.d.ts +13 -0
  260. package/lib/typescript/components/CheckboxInputRow.d.ts.map +1 -0
  261. package/lib/typescript/components/CreatePoll.d.ts +5 -0
  262. package/lib/typescript/components/CreatePoll.d.ts.map +1 -0
  263. package/lib/typescript/components/Footer.d.ts.map +1 -1
  264. package/lib/typescript/components/GridView.d.ts.map +1 -1
  265. package/lib/typescript/components/HLSPlayerEmoticons.d.ts.map +1 -1
  266. package/lib/typescript/components/HMSBaseButton.d.ts +2 -1
  267. package/lib/typescript/components/HMSBaseButton.d.ts.map +1 -1
  268. package/lib/typescript/components/HMSNotifications.d.ts.map +1 -1
  269. package/lib/typescript/components/HMSPollsQuizzesNotification.d.ts +7 -0
  270. package/lib/typescript/components/HMSPollsQuizzesNotification.d.ts.map +1 -0
  271. package/lib/typescript/components/HMSPrimaryButton.d.ts +1 -1
  272. package/lib/typescript/components/HMSPrimaryButton.d.ts.map +1 -1
  273. package/lib/typescript/components/HMSRoomOptions.d.ts.map +1 -1
  274. package/lib/typescript/components/HMSSecondaryButton.d.ts +15 -0
  275. package/lib/typescript/components/HMSSecondaryButton.d.ts.map +1 -0
  276. package/lib/typescript/components/PollAndQuizQuestionResponseCard.d.ts +13 -0
  277. package/lib/typescript/components/PollAndQuizQuestionResponseCard.d.ts.map +1 -0
  278. package/lib/typescript/components/PollAndQuizQuestionResponseCards.d.ts +9 -0
  279. package/lib/typescript/components/PollAndQuizQuestionResponseCards.d.ts.map +1 -0
  280. package/lib/typescript/components/PollAndQuizVoting.d.ts +6 -0
  281. package/lib/typescript/components/PollAndQuizVoting.d.ts.map +1 -0
  282. package/lib/typescript/components/PollAndQuizzStateLabel.d.ts +7 -0
  283. package/lib/typescript/components/PollAndQuizzStateLabel.d.ts.map +1 -0
  284. package/lib/typescript/components/PollQDeleteConfirmationSheetView.d.ts +6 -0
  285. package/lib/typescript/components/PollQDeleteConfirmationSheetView.d.ts.map +1 -0
  286. package/lib/typescript/components/PollQuestion.d.ts +15 -0
  287. package/lib/typescript/components/PollQuestion.d.ts.map +1 -0
  288. package/lib/typescript/components/PollQuestionDeleteConfirmation.d.ts +6 -0
  289. package/lib/typescript/components/PollQuestionDeleteConfirmation.d.ts.map +1 -0
  290. package/lib/typescript/components/PollQuestions.d.ts +6 -0
  291. package/lib/typescript/components/PollQuestions.d.ts.map +1 -0
  292. package/lib/typescript/components/PollResponseProgressView.d.ts +9 -0
  293. package/lib/typescript/components/PollResponseProgressView.d.ts.map +1 -0
  294. package/lib/typescript/components/PollsAndQuizBottomSheet.d.ts +3 -0
  295. package/lib/typescript/components/PollsAndQuizBottomSheet.d.ts.map +1 -0
  296. package/lib/typescript/components/PollsAndQuizzesCard.d.ts +7 -0
  297. package/lib/typescript/components/PollsAndQuizzesCard.d.ts.map +1 -0
  298. package/lib/typescript/components/PollsAndQuizzesModalContent.d.ts +7 -0
  299. package/lib/typescript/components/PollsAndQuizzesModalContent.d.ts.map +1 -0
  300. package/lib/typescript/components/PollsConfigAndList.d.ts +5 -0
  301. package/lib/typescript/components/PollsConfigAndList.d.ts.map +1 -0
  302. package/lib/typescript/components/PreviousPollsAndQuizzesList.d.ts +5 -0
  303. package/lib/typescript/components/PreviousPollsAndQuizzesList.d.ts.map +1 -0
  304. package/lib/typescript/components/QuizEndOptionsView.d.ts +10 -0
  305. package/lib/typescript/components/QuizEndOptionsView.d.ts.map +1 -0
  306. package/lib/typescript/components/RadioInput.d.ts +10 -0
  307. package/lib/typescript/components/RadioInput.d.ts.map +1 -0
  308. package/lib/typescript/components/RadioInputRow.d.ts +16 -0
  309. package/lib/typescript/components/RadioInputRow.d.ts.map +1 -0
  310. package/lib/typescript/components/RoomSettingsModalContent.d.ts.map +1 -1
  311. package/lib/typescript/components/SwitchRow.d.ts +2 -1
  312. package/lib/typescript/components/SwitchRow.d.ts.map +1 -1
  313. package/lib/typescript/hooks-util.d.ts +1 -0
  314. package/lib/typescript/hooks-util.d.ts.map +1 -1
  315. package/lib/typescript/redux/actionTypes.d.ts +176 -0
  316. package/lib/typescript/redux/actionTypes.d.ts.map +1 -1
  317. package/lib/typescript/redux/actions/index.d.ts +38 -2
  318. package/lib/typescript/redux/actions/index.d.ts.map +1 -1
  319. package/lib/typescript/redux/index.d.ts +13 -0
  320. package/lib/typescript/redux/index.d.ts.map +1 -1
  321. package/lib/typescript/redux/reducers/index.d.ts +13 -0
  322. package/lib/typescript/redux/reducers/index.d.ts.map +1 -1
  323. package/lib/typescript/redux/reducers/polls.d.ts +19 -0
  324. package/lib/typescript/redux/reducers/polls.d.ts.map +1 -0
  325. package/lib/typescript/types.d.ts +3 -1
  326. package/lib/typescript/types.d.ts.map +1 -1
  327. package/lib/typescript/utils/functions.d.ts +7 -1
  328. package/lib/typescript/utils/functions.d.ts.map +1 -1
  329. package/lib/typescript/utils/types.d.ts +1 -0
  330. package/lib/typescript/utils/types.d.ts.map +1 -1
  331. package/package.json +2 -2
  332. package/src/HMSRoomSetup.tsx +62 -0
  333. package/src/Icons/Add/assets/add-circle.png +0 -0
  334. package/src/Icons/Add/assets/add-circle@2x.png +0 -0
  335. package/src/Icons/Add/assets/add-circle@3x.png +0 -0
  336. package/src/Icons/Add/index.tsx +37 -0
  337. package/src/Icons/Check/assets/check-in-circle.png +0 -0
  338. package/src/Icons/Check/assets/check-in-circle@2x.png +0 -0
  339. package/src/Icons/Check/assets/check-in-circle@3x.png +0 -0
  340. package/src/Icons/Check/index.tsx +9 -2
  341. package/src/Icons/CheckBox/assets/checkbox-checked.png +0 -0
  342. package/src/Icons/CheckBox/assets/checkbox-checked@2x.png +0 -0
  343. package/src/Icons/CheckBox/assets/checkbox-checked@3x.png +0 -0
  344. package/src/Icons/CheckBox/assets/checkbox.png +0 -0
  345. package/src/Icons/CheckBox/assets/checkbox@2x.png +0 -0
  346. package/src/Icons/CheckBox/assets/checkbox@3x.png +0 -0
  347. package/src/Icons/CheckBox/index.tsx +54 -0
  348. package/src/Icons/Poll/assets/poll.png +0 -0
  349. package/src/Icons/Poll/assets/poll@2x.png +0 -0
  350. package/src/Icons/Poll/assets/poll@3x.png +0 -0
  351. package/src/Icons/Poll/index.tsx +30 -0
  352. package/src/Icons/PollVote/assets/poll-vote.png +0 -0
  353. package/src/Icons/PollVote/assets/poll-vote@2x.png +0 -0
  354. package/src/Icons/PollVote/assets/poll-vote@3x.png +0 -0
  355. package/src/Icons/PollVote/index.tsx +33 -0
  356. package/src/Icons/Quiz/assets/quiz.png +0 -0
  357. package/src/Icons/Quiz/assets/quiz@2x.png +0 -0
  358. package/src/Icons/Quiz/assets/quiz@3x.png +0 -0
  359. package/src/Icons/Quiz/index.tsx +30 -0
  360. package/src/Icons/TrashBin/assets/trash-bin.png +0 -0
  361. package/src/Icons/TrashBin/assets/trash-bin@2x.png +0 -0
  362. package/src/Icons/TrashBin/assets/trash-bin@3x.png +0 -0
  363. package/src/Icons/TrashBin/index.tsx +34 -0
  364. package/src/Icons/index.ts +6 -0
  365. package/src/components/CheckboxInputRow.tsx +68 -0
  366. package/src/components/CreatePoll.tsx +249 -0
  367. package/src/components/Footer.tsx +7 -1
  368. package/src/components/GridView.tsx +4 -14
  369. package/src/components/HLSPlayerEmoticons.tsx +2 -3
  370. package/src/components/HMSBaseButton.tsx +8 -3
  371. package/src/components/HMSNotification.tsx +1 -1
  372. package/src/components/HMSNotifications.tsx +7 -0
  373. package/src/components/HMSPollsQuizzesNotification.tsx +110 -0
  374. package/src/components/HMSPrimaryButton.tsx +1 -1
  375. package/src/components/HMSRoomOptions.tsx +3 -0
  376. package/src/components/HMSSecondaryButton.tsx +72 -0
  377. package/src/components/PollAndQuizQuestionResponseCard.tsx +414 -0
  378. package/src/components/PollAndQuizQuestionResponseCards.tsx +62 -0
  379. package/src/components/PollAndQuizVoting.tsx +161 -0
  380. package/src/components/PollAndQuizzStateLabel.tsx +83 -0
  381. package/src/components/PollQDeleteConfirmationSheetView.tsx +82 -0
  382. package/src/components/PollQuestion.tsx +668 -0
  383. package/src/components/PollQuestionDeleteConfirmation.tsx +110 -0
  384. package/src/components/PollQuestions.tsx +277 -0
  385. package/src/components/PollResponseProgressView.tsx +77 -0
  386. package/src/components/PollsAndQuizBottomSheet.tsx +83 -0
  387. package/src/components/PollsAndQuizzesCard.tsx +111 -0
  388. package/src/components/PollsAndQuizzesModalContent.tsx +198 -0
  389. package/src/components/PollsConfigAndList.tsx +29 -0
  390. package/src/components/PreviousPollsAndQuizzesList.tsx +103 -0
  391. package/src/components/QuizEndOptionsView.tsx +71 -0
  392. package/src/components/RadioInput.tsx +56 -0
  393. package/src/components/RadioInputRow.tsx +73 -0
  394. package/src/components/RoomSettingsModalContent.tsx +23 -0
  395. package/src/components/SwitchRow.tsx +4 -2
  396. package/src/components/TilesContainer.tsx +4 -4
  397. package/src/hooks-util.ts +40 -1
  398. package/src/redux/actionTypes.ts +241 -0
  399. package/src/redux/actions/index.ts +240 -1
  400. package/src/redux/reducers/index.ts +2 -0
  401. package/src/redux/reducers/polls.ts +378 -0
  402. package/src/types.ts +2 -0
  403. package/src/utils/functions.ts +98 -0
  404. 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 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 or Quizzes 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 And Quizzes
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,71 @@
1
+ import * as React from 'react';
2
+ import type { HMSPollQuestionOption } from '@100mslive/react-native-hms';
3
+ import { StyleSheet, Text, View } from 'react-native';
4
+
5
+ import { useHMSRoomStyleSheet } from '../hooks-util';
6
+ import { CheckIcon } from '../Icons';
7
+
8
+ interface QuizEndOptionsViewProps {
9
+ option: HMSPollQuestionOption;
10
+ isSelected: boolean;
11
+ isCorrect: boolean;
12
+ }
13
+
14
+ export const QuizEndOptionsView: React.FC<QuizEndOptionsViewProps> = ({
15
+ option,
16
+ isSelected,
17
+ isCorrect,
18
+ }) => {
19
+ const hmsRoomStyles = useHMSRoomStyleSheet((theme, typography) => ({
20
+ surfaceHighRegularText: {
21
+ color: theme.palette.on_surface_high,
22
+ fontFamily: `${typography.font_family}-Regular`,
23
+ },
24
+ surfaceMediumRegularText: {
25
+ color: theme.palette.on_surface_medium,
26
+ fontFamily: `${typography.font_family}-Regular`,
27
+ },
28
+ }));
29
+
30
+ return (
31
+ <View style={styles.container}>
32
+ <View style={styles.textWrapper}>
33
+ {isCorrect ? <CheckIcon style={styles.icon} type="in-circle" /> : null}
34
+
35
+ <Text style={[styles.smallText, hmsRoomStyles.surfaceHighRegularText]}>
36
+ {option.text}
37
+ </Text>
38
+ </View>
39
+
40
+ {isSelected ? (
41
+ <Text
42
+ style={[styles.smallText, hmsRoomStyles.surfaceMediumRegularText]}
43
+ >
44
+ Your Answer
45
+ </Text>
46
+ ) : null}
47
+ </View>
48
+ );
49
+ };
50
+
51
+ const styles = StyleSheet.create({
52
+ container: {
53
+ marginBottom: 16,
54
+ flexDirection: 'row',
55
+ alignItems: 'center',
56
+ justifyContent: 'space-between',
57
+ },
58
+ textWrapper: {
59
+ flexDirection: 'row',
60
+ alignItems: 'center',
61
+ },
62
+ icon: {
63
+ width: 20,
64
+ height: 20,
65
+ marginRight: 8,
66
+ },
67
+ smallText: {
68
+ fontSize: 14,
69
+ lineHeight: 20,
70
+ },
71
+ });
@@ -0,0 +1,56 @@
1
+ import React from 'react';
2
+ import { View, StyleSheet, TouchableOpacity } 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
+ onChange?: (selected: boolean) => void;
10
+ }
11
+
12
+ export const RadioInput: React.FC<RadioInputProps> = ({
13
+ selected,
14
+ size = 24,
15
+ color = 'white',
16
+ onChange,
17
+ }) => {
18
+ const outerCircleStyle = {
19
+ width: size,
20
+ height: size,
21
+ borderRadius: size / 2,
22
+ borderWidth: size / 12,
23
+ borderColor: color,
24
+ };
25
+
26
+ const innerCircleStyle = {
27
+ width: size / 2,
28
+ height: size / 2,
29
+ borderRadius: size / 4,
30
+ backgroundColor: color,
31
+ };
32
+
33
+ const radio = (
34
+ <View style={[styles.outerCircle, outerCircleStyle]}>
35
+ {selected ? <View style={innerCircleStyle} /> : null}
36
+ </View>
37
+ );
38
+
39
+ if (typeof onChange !== 'function') {
40
+ return radio;
41
+ }
42
+
43
+ return (
44
+ <TouchableOpacity onPress={() => onChange(!selected)}>
45
+ {radio}
46
+ </TouchableOpacity>
47
+ );
48
+ };
49
+
50
+ const styles = StyleSheet.create({
51
+ outerCircle: {
52
+ alignItems: 'center',
53
+ justifyContent: 'center',
54
+ borderStyle: 'solid',
55
+ },
56
+ });
@@ -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 and Quizzes',
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
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
- import { View, Dimensions } from 'react-native';
2
+ import { View } from 'react-native';
3
3
  import { useSelector } from 'react-redux';
4
4
  import type { ViewStyle } from 'react-native';
5
- import { useSafeAreaInsets } from 'react-native-safe-area-context';
5
+ import { useSafeAreaFrame } from 'react-native-safe-area-context';
6
6
  import type { HMSView } from '@100mslive/react-native-hms';
7
7
 
8
8
  import { Tile } from './Tile';
@@ -22,7 +22,7 @@ const _TilesContainer: React.FC<TilesContainerProps> = ({
22
22
  setHmsViewRefs,
23
23
  onPeerTileMorePress,
24
24
  }) => {
25
- const { left, right } = useSafeAreaInsets();
25
+ const { width: safeWidth } = useSafeAreaFrame();
26
26
  const isLandscapeOrientation = useIsLandscapeOrientation();
27
27
 
28
28
  const screenshareTilesAvailable = useSelector(
@@ -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: safeWidth },
59
59
  ]}
60
60
  >
61
61
  {peerTrackNodes.length <= 3 ? (
package/src/hooks-util.ts CHANGED
@@ -22,7 +22,8 @@ import {
22
22
  setSoftInputMode,
23
23
  getSoftInputMode,
24
24
  WindowController,
25
- // useHMSPeerUpdates,
25
+ useHMSHLSPlayerCue,
26
+ HMSPollUpdateType,
26
27
  } from '@100mslive/react-native-hms';
27
28
  import type { Chat as ChatConfig } from '@100mslive/types-prebuilt/elements/chat';
28
29
  import { SoftInputModes } from '@100mslive/react-native-hms';
@@ -71,6 +72,7 @@ import {
71
72
  } from 'react-redux';
72
73
  import type { AppDispatch, RootState } from './redux';
73
74
  import {
75
+ addCuedPollId,
74
76
  addMessage,
75
77
  addNotification,
76
78
  addParticipant,
@@ -2548,6 +2550,43 @@ export const useLandscapeImmersiveMode = () => {
2548
2550
  }, [isLandscapeOrientation]);
2549
2551
  };
2550
2552
 
2553
+ export const useHLSCuedPolls = () => {
2554
+ const dispatch = useDispatch();
2555
+ const store = useStore<RootState>();
2556
+ const isHLSViewer = useIsHLSViewer();
2557
+
2558
+ useHMSHLSPlayerCue(
2559
+ (cue) => {
2560
+ const payloadStr = cue.payloadval;
2561
+
2562
+ if (
2563
+ isHLSViewer &&
2564
+ typeof payloadStr === 'string' &&
2565
+ payloadStr.startsWith('poll:')
2566
+ ) {
2567
+ const pollId = payloadStr.split(':')[1];
2568
+ const poll =
2569
+ pollId && pollId.length > 0
2570
+ ? store.getState().polls.polls[pollId]
2571
+ : null;
2572
+
2573
+ if (poll) {
2574
+ console.log('HLS Cued Poll ID: ', pollId);
2575
+ dispatch(addCuedPollId(poll.pollId));
2576
+ dispatch(
2577
+ addNotification({
2578
+ id: `${poll.pollId}--${poll.state}`,
2579
+ type: NotificationTypes.POLLS_AND_QUIZZES,
2580
+ payload: { poll, pollUpdateType: HMSPollUpdateType.started },
2581
+ })
2582
+ );
2583
+ }
2584
+ }
2585
+ },
2586
+ [isHLSViewer]
2587
+ );
2588
+ };
2589
+
2551
2590
  export const useSavePropsToStore = (
2552
2591
  props: HMSPrebuiltProps,
2553
2592
  dispatch: AppDispatch