agora-appbuilder-core 4.0.0-test.2 → 4.0.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 (442) hide show
  1. package/package.json +3 -3
  2. package/template/.bundle/config +2 -0
  3. package/template/Gemfile +4 -0
  4. package/template/Gulpfile.js +22 -22
  5. package/template/_eslintrc.js +3 -3
  6. package/template/_gitignore +12 -11
  7. package/template/_package-lock.json +20328 -20229
  8. package/template/_prettierrc.js +2 -2
  9. package/template/agora-rn-uikit/.eslintrc.js +5 -0
  10. package/template/agora-rn-uikit/package.json +14 -14
  11. package/template/agora-rn-uikit/src/AgoraUIKit.tsx +6 -6
  12. package/template/agora-rn-uikit/src/Contexts/ContentContext.tsx +10 -0
  13. package/template/agora-rn-uikit/src/Contexts/DispatchContext.tsx +22 -0
  14. package/template/agora-rn-uikit/src/Contexts/LocalUserContext.tsx +6 -6
  15. package/template/agora-rn-uikit/src/Contexts/PropsContext.tsx +78 -38
  16. package/template/agora-rn-uikit/src/Contexts/RtcContext.tsx +26 -17
  17. package/template/agora-rn-uikit/src/Controls/BtnTemplate.tsx +1 -0
  18. package/template/agora-rn-uikit/src/Controls/Icons.ts +39 -0
  19. package/template/agora-rn-uikit/src/Controls/Local/EndCall.tsx +6 -4
  20. package/template/agora-rn-uikit/src/Controls/Local/FullScreen.tsx +3 -1
  21. package/template/agora-rn-uikit/src/Controls/Local/LocalAudioMute.tsx +5 -2
  22. package/template/agora-rn-uikit/src/Controls/Local/LocalVideoMute.tsx +5 -2
  23. package/template/agora-rn-uikit/src/Controls/Local/Recording.tsx +0 -2
  24. package/template/agora-rn-uikit/src/Controls/Local/SwitchCamera.tsx +7 -6
  25. package/template/agora-rn-uikit/src/Controls/LocalControls.tsx +5 -5
  26. package/template/agora-rn-uikit/src/Controls/Remote/RemoteAudioMute.tsx +5 -4
  27. package/template/agora-rn-uikit/src/Controls/Remote/RemoteSwap.tsx +3 -1
  28. package/template/agora-rn-uikit/src/Controls/Remote/RemoteVideoMute.tsx +5 -4
  29. package/template/agora-rn-uikit/src/Controls/RemoteControls.tsx +2 -2
  30. package/template/agora-rn-uikit/src/Reducer/ActiveSpeaker.ts +30 -0
  31. package/template/agora-rn-uikit/src/Reducer/LocalMuteAudio.ts +8 -7
  32. package/template/agora-rn-uikit/src/Reducer/LocalMuteVideo.ts +8 -7
  33. package/template/agora-rn-uikit/src/Reducer/LocalPermissionState.ts +6 -7
  34. package/template/agora-rn-uikit/src/Reducer/RemoteAudioStateChanged.ts +7 -8
  35. package/template/agora-rn-uikit/src/Reducer/RemoteVideoStateChanged.ts +9 -9
  36. package/template/agora-rn-uikit/src/Reducer/UpdateDualStreamMode.ts +7 -8
  37. package/template/agora-rn-uikit/src/Reducer/UserJoined.ts +14 -13
  38. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteAudio.ts +6 -7
  39. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteVideo.ts +6 -7
  40. package/template/agora-rn-uikit/src/Reducer/UserOffline.ts +5 -6
  41. package/template/agora-rn-uikit/src/Reducer/UserPin.ts +20 -3
  42. package/template/agora-rn-uikit/src/Reducer/UserSecondaryPin.ts +23 -0
  43. package/template/agora-rn-uikit/src/Reducer/index.ts +2 -1
  44. package/template/agora-rn-uikit/src/Rtc/Create.tsx +117 -111
  45. package/template/agora-rn-uikit/src/Rtc/Join.tsx +46 -27
  46. package/template/agora-rn-uikit/src/RtcConfigure.tsx +174 -75
  47. package/template/agora-rn-uikit/src/Utils/isBotUser.ts +15 -0
  48. package/template/agora-rn-uikit/src/Utils/quality.tsx +2 -2
  49. package/template/agora-rn-uikit/src/Views/MaxVideoView.native.tsx +41 -19
  50. package/template/agora-rn-uikit/src/Views/MaxVideoView.tsx +37 -17
  51. package/template/agora-rn-uikit/src/Views/MinVideoView.tsx +19 -11
  52. package/template/agora-rn-uikit/src/index.ts +15 -9
  53. package/template/android/app/build.gradle +59 -156
  54. package/template/android/app/src/debug/AndroidManifest.xml +6 -1
  55. package/template/android/app/src/debug/java/com/helloworld/ReactNativeFlipper.java +7 -4
  56. package/template/android/app/src/main/AndroidManifest.xml +6 -19
  57. package/template/android/app/src/main/assets/fonts/icomoon.ttf +0 -0
  58. package/template/android/app/src/main/java/com/helloworld/MainActivity.java +17 -0
  59. package/template/android/app/src/main/java/com/helloworld/MainApplication.java +22 -36
  60. package/template/android/app/src/main/java/com/helloworld/SSLPinningFactory.java +30 -0
  61. package/template/android/app/src/main/res/values/strings.xml +3 -0
  62. package/template/android/app/src/release/java/com/helloworld/ReactNativeFlipper.java +20 -0
  63. package/template/android/build.gradle +17 -31
  64. package/template/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  65. package/template/android/gradle/wrapper/gradle-wrapper.properties +3 -2
  66. package/template/android/gradle.properties +18 -4
  67. package/template/android/gradlew +165 -104
  68. package/template/android/gradlew.bat +12 -23
  69. package/template/android/settings.gradle +1 -0
  70. package/template/bridge/rtc/webNg/RtcEngine.ts +191 -71
  71. package/template/bridge/rtc/webNg/{SurfaceView.tsx → RtcSurfaceView.tsx} +20 -26
  72. package/template/bridge/rtc/webNg/Types.ts +20 -5
  73. package/template/bridge/rtc/webNg/index.ts +81 -14
  74. package/template/bridge/rtm/web/index.ts +5 -3
  75. package/template/configTransform.js +16 -1
  76. package/template/customization-api/action-library.ts +4 -16
  77. package/template/customization-api/app-state.ts +15 -8
  78. package/template/customization-api/customEvents.ts +7 -2
  79. package/template/customization-api/customize.ts +1 -1
  80. package/template/customization-api/index.ts +4 -0
  81. package/template/customization-api/sub-components.ts +17 -16
  82. package/template/customization-api/temp.ts +52 -0
  83. package/template/customization-api/typeDefinition.ts +32 -45
  84. package/template/customization-api/types.ts +26 -0
  85. package/template/customization-api/utils.ts +4 -0
  86. package/template/customization-implementation/index.ts +0 -1
  87. package/template/defaultConfig.js +72 -0
  88. package/template/global.d.ts +9 -1
  89. package/template/index.js +1 -4
  90. package/template/index.web.js +0 -5
  91. package/template/ios/.xcode.env +11 -0
  92. package/template/ios/HelloWorld/AppDelegate.h +2 -4
  93. package/template/ios/HelloWorld/AppDelegate.mm +64 -0
  94. package/template/ios/HelloWorld/HelloWorldDebug.entitlements +10 -0
  95. package/template/ios/HelloWorld/Info.plist +7 -1
  96. package/template/ios/HelloWorld/main.m +2 -1
  97. package/template/ios/HelloWorld.xcodeproj/project.pbxproj +81 -119
  98. package/template/ios/HelloWorld.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  99. package/template/ios/HelloWorld.xcworkspace/contents.xcworkspacedata +10 -0
  100. package/template/ios/HelloWorld.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  101. package/template/ios/HelloWorldTests/HelloWorldTests.m +14 -13
  102. package/template/ios/HelloWorldTests/Info.plist +2 -2
  103. package/template/ios/Podfile +51 -21
  104. package/template/ios/Podfile.lock +553 -294
  105. package/template/jest.config.js +4 -0
  106. package/template/metro.config.js +7 -32
  107. package/template/package.json +48 -39
  108. package/template/react-native-toast-message/index.d.ts +3 -1
  109. package/template/react-native-toast-message/index.js +1 -0
  110. package/template/react-native-toast-message/src/components/base/index.js +20 -32
  111. package/template/react-native-toast-message/src/components/base/styles.js +18 -21
  112. package/template/react-native-toast-message/src/components/checkbox.js +24 -19
  113. package/template/react-native-toast-message/src/index.js +3 -1
  114. package/template/react-native-toast-message/src/index.sdk.tsx +4 -1
  115. package/template/src/App.tsx +79 -22
  116. package/template/src/AppRoutes.tsx +48 -3
  117. package/template/src/AppWrapper.tsx +25 -21
  118. package/template/src/SDKAppWrapper.tsx +11 -11
  119. package/template/src/app-state/useLocalUserInfo.ts +3 -3
  120. package/template/src/app-state/useNoiseSupression.native.tsx +67 -0
  121. package/template/src/app-state/useNoiseSupression.tsx +107 -0
  122. package/template/src/app-state/useVideoQuality.tsx +39 -0
  123. package/template/src/assets/font-styles.css +174 -3
  124. package/template/src/assets/fonts/icomoon.ttf +0 -0
  125. package/template/src/assets/selection.json +1 -1
  126. package/template/src/atoms/ActionMenu.tsx +50 -11
  127. package/template/src/atoms/Avatar.tsx +51 -0
  128. package/template/src/atoms/Card.tsx +21 -8
  129. package/template/src/atoms/Carousel.native.tsx +105 -0
  130. package/template/src/atoms/Carousel.tsx +103 -0
  131. package/template/src/atoms/Checkbox.tsx +98 -0
  132. package/template/src/atoms/CircularProgress.tsx +0 -1
  133. package/template/src/atoms/ClipboardIconButton.tsx +91 -0
  134. package/template/src/atoms/CustomIcon.tsx +46 -0
  135. package/template/src/atoms/DropDownMulti.tsx +349 -0
  136. package/template/src/atoms/Dropdown.tsx +3 -3
  137. package/template/src/atoms/IconButton.tsx +52 -9
  138. package/template/src/atoms/ImageIcon.tsx +18 -5
  139. package/template/src/atoms/InlineNotification.tsx +81 -0
  140. package/template/src/atoms/InviteInfo.tsx +4 -4
  141. package/template/src/atoms/MeetingLink.tsx +160 -0
  142. package/template/src/atoms/ParticipantsCount.tsx +20 -8
  143. package/template/src/atoms/Popup.tsx +46 -26
  144. package/template/src/atoms/PrimaryButton.tsx +19 -5
  145. package/template/src/atoms/RecordingInfo.tsx +8 -5
  146. package/template/src/atoms/SecondaryButton.tsx +2 -0
  147. package/template/src/atoms/Spacer.tsx +1 -0
  148. package/template/src/atoms/TertiaryButton.tsx +35 -5
  149. package/template/src/atoms/TextInput.tsx +2 -1
  150. package/template/src/atoms/Toolbar.tsx +102 -0
  151. package/template/src/atoms/ToolbarItem.tsx +85 -0
  152. package/template/src/atoms/ToolbarMenu.tsx +40 -0
  153. package/template/src/atoms/ToolbarMenuItem.tsx +104 -0
  154. package/template/src/atoms/ToolbarPreset.tsx +71 -0
  155. package/template/src/atoms/Tooltip.tsx +30 -13
  156. package/template/src/atoms/pagination/Pagination.tsx +127 -0
  157. package/template/src/atoms/pagination/usePagination.tsx +88 -0
  158. package/template/src/auth/AuthProvider.tsx +30 -32
  159. package/template/src/auth/AuthRoute.tsx +11 -3
  160. package/template/src/auth/IDPAuth.electron.tsx +4 -3
  161. package/template/src/auth/IDPAuth.tsx +10 -2
  162. package/template/src/auth/IDPLogoutComponent.tsx +14 -5
  163. package/template/src/auth/UserCancelPopup.tsx +11 -4
  164. package/template/src/auth/openIDPURL.electron.tsx +5 -4
  165. package/template/src/auth/openIDPURL.tsx +1 -1
  166. package/template/src/auth/useIDPAuth.electron.tsx +6 -3
  167. package/template/src/auth/useIDPAuth.tsx +0 -4
  168. package/template/src/auth/useTokenAuth.tsx +10 -8
  169. package/template/src/components/Chat.tsx +97 -78
  170. package/template/src/components/ChatContext.ts +2 -0
  171. package/template/src/components/ColorConfigure.tsx +0 -1
  172. package/template/src/components/CommonStyles.ts +9 -2
  173. package/template/src/components/Controls.tsx +914 -182
  174. package/template/src/components/Controls1.native.tsx +9 -5
  175. package/template/src/components/DeviceConfigure.native.tsx +2 -2
  176. package/template/src/components/DeviceConfigure.tsx +88 -43
  177. package/template/src/components/DeviceContext.tsx +2 -0
  178. package/template/src/components/EventsConfigure.tsx +685 -81
  179. package/template/src/components/GraphQLProvider.tsx +51 -33
  180. package/template/src/components/GridVideo.tsx +30 -16
  181. package/template/src/components/HostControlView.tsx +11 -14
  182. package/template/src/components/JoinPhrase.tsx +0 -1
  183. package/template/src/components/Leftbar.tsx +110 -0
  184. package/template/src/components/Navbar.tsx +296 -149
  185. package/template/src/components/NavbarMobile.tsx +119 -0
  186. package/template/src/components/NetworkQualityContext.tsx +12 -6
  187. package/template/src/components/ParticipantsView.tsx +62 -55
  188. package/template/src/components/PinnedVideo.tsx +191 -119
  189. package/template/src/components/Precall.native.tsx +155 -72
  190. package/template/src/components/Precall.tsx +225 -73
  191. package/template/src/components/RTMConfigure.tsx +180 -63
  192. package/template/src/components/Rightbar.tsx +112 -0
  193. package/template/src/components/SdkApiContext.tsx +26 -24
  194. package/template/src/components/SdkMuteToggleListener.tsx +8 -12
  195. package/template/src/components/SessionContext.tsx +0 -1
  196. package/template/src/components/Settings.tsx +33 -4
  197. package/template/src/components/SettingsView.tsx +42 -9
  198. package/template/src/components/Share.tsx +130 -72
  199. package/template/src/components/StorageContext.tsx +5 -4
  200. package/template/src/components/ToastComponent.tsx +7 -1
  201. package/template/src/components/WhiteboardLayout.tsx +291 -0
  202. package/template/src/components/chat-messages/useChatMessages.tsx +454 -239
  203. package/template/src/components/chat-ui/{useChatUIControl.tsx → useChatUIControls.tsx} +29 -29
  204. package/template/src/components/common/Error.tsx +2 -0
  205. package/template/src/components/common/Logo.tsx +2 -2
  206. package/template/src/components/contexts/LiveStreamDataContext.tsx +13 -12
  207. package/template/src/components/contexts/ScreenShareContext.tsx +1 -0
  208. package/template/src/components/contexts/VideoMeetingDataContext.tsx +6 -6
  209. package/template/src/components/contexts/WaitingRoomContext.tsx +50 -0
  210. package/template/src/components/contexts/WhiteboardContext.tsx +54 -54
  211. package/template/src/components/disable-chat/useDisableChat.tsx +32 -0
  212. package/template/src/components/livestream/LiveStreamContext.tsx +314 -220
  213. package/template/src/components/livestream/Types.ts +36 -20
  214. package/template/src/components/livestream/views/LiveStreamAttendeeLandingTile.tsx +295 -0
  215. package/template/src/components/livestream/views/LiveStreamControls.tsx +5 -10
  216. package/template/src/components/meeting-info-invite/MeetingInfo.tsx +82 -0
  217. package/template/src/components/meeting-info-invite/MeetingInfoCardHeader.tsx +86 -0
  218. package/template/src/components/meeting-info-invite/MeetingInfoGridTile.tsx +218 -0
  219. package/template/src/components/meeting-info-invite/MeetingInfoLinks.tsx +122 -0
  220. package/template/src/components/participants/AllAudienceParticipants.tsx +19 -20
  221. package/template/src/components/participants/AllHostParticipants.tsx +20 -19
  222. package/template/src/components/participants/Participant.tsx +45 -16
  223. package/template/src/components/participants/ParticipantSectionTitle.tsx +5 -2
  224. package/template/src/components/participants/ScreenshareParticipants.tsx +17 -19
  225. package/template/src/components/participants/UserActionMenuOptions.tsx +173 -62
  226. package/template/src/components/participants/WaitingRoomParticipants.tsx +74 -0
  227. package/template/src/components/popups/InvitePopup.tsx +105 -44
  228. package/template/src/components/popups/StartScreenSharePopup.native.tsx +26 -23
  229. package/template/src/components/popups/StopRecordingPopup.tsx +11 -5
  230. package/template/src/components/popups/StopScreenSharePopup.native.tsx +17 -5
  231. package/template/src/components/popups/WhiteboardClearAllPopup.tsx +123 -0
  232. package/template/src/components/precall/LocalMute.tsx +69 -45
  233. package/template/src/components/precall/PermissionHelper.tsx +31 -28
  234. package/template/src/components/precall/PreCallSettings.tsx +1 -0
  235. package/template/src/components/precall/VideoFallback.tsx +173 -0
  236. package/template/src/components/precall/VideoPreview.native.tsx +19 -53
  237. package/template/src/components/precall/VideoPreview.tsx +29 -164
  238. package/template/src/components/precall/index.tsx +2 -0
  239. package/template/src/components/precall/joinCallBtn.native.tsx +9 -4
  240. package/template/src/components/precall/joinCallBtn.tsx +9 -4
  241. package/template/src/components/precall/joinWaitingRoomBtn.native.tsx +210 -0
  242. package/template/src/components/precall/joinWaitingRoomBtn.tsx +250 -0
  243. package/template/src/components/precall/meetingTitle.tsx +37 -11
  244. package/template/src/components/precall/selectDevice.tsx +5 -5
  245. package/template/src/components/precall/textInput.tsx +17 -19
  246. package/template/src/components/precall/usePreCall.tsx +4 -4
  247. package/template/src/components/recording-bot/RecordingBotRoute.tsx +42 -0
  248. package/template/src/components/recordings/RecordingsDateTable.tsx +62 -0
  249. package/template/src/components/recordings/RecordingsModal.tsx +135 -0
  250. package/template/src/components/recordings/ViewRecordingsModal.tsx +51 -0
  251. package/template/src/components/recordings/recording-table.tsx +154 -0
  252. package/template/src/components/recordings/style.ts +183 -0
  253. package/template/src/components/recordings/utils.ts +80 -0
  254. package/template/src/components/{meeting-info/useMeetingInfo.tsx → room-info/useRoomInfo.tsx} +46 -12
  255. package/template/src/components/{meeting-info/useSetMeetingInfo.tsx → room-info/useSetRoomInfo.tsx} +12 -12
  256. package/template/src/components/useShareLink.tsx +23 -60
  257. package/template/src/components/useUserPreference.tsx +54 -17
  258. package/template/src/components/useVideoCall.tsx +52 -7
  259. package/template/src/components/virtual-background/VBButton.tsx +64 -0
  260. package/template/src/components/virtual-background/VBCard.native.tsx +282 -0
  261. package/template/src/components/virtual-background/VBCard.tsx +272 -0
  262. package/template/src/components/virtual-background/VBPanel.tsx +279 -0
  263. package/template/src/components/virtual-background/VButils.native.ts +37 -0
  264. package/template/src/components/virtual-background/VButils.ts +104 -0
  265. package/template/src/components/virtual-background/VideoPreview.native.tsx +43 -0
  266. package/template/src/components/virtual-background/VideoPreview.tsx +106 -0
  267. package/template/src/components/virtual-background/imagePaths.ts +87 -0
  268. package/template/src/components/virtual-background/images/beachImageBase64.ts +1 -0
  269. package/template/src/components/virtual-background/images/bedroomImageBase64.ts +1 -0
  270. package/template/src/components/virtual-background/images/bookImageBase64.ts +1 -0
  271. package/template/src/components/virtual-background/images/earthImageBase64.ts +1 -0
  272. package/template/src/components/virtual-background/images/index.ts +37 -0
  273. package/template/src/components/virtual-background/images/lampImageBase64.ts +1 -0
  274. package/template/src/components/virtual-background/images/mountainsImageBase64.ts +1 -0
  275. package/template/src/components/virtual-background/images/office1ImageBase64.ts +1 -0
  276. package/template/src/components/virtual-background/images/officeImageBase64.ts +1 -0
  277. package/template/src/components/virtual-background/images/plantsImageBase64.ts +1 -0
  278. package/template/src/components/virtual-background/images/skyImageBase64.ts +1 -0
  279. package/template/src/components/virtual-background/images/wallImageBase64.ts +1 -0
  280. package/template/src/components/virtual-background/useVB.native.tsx +185 -0
  281. package/template/src/components/virtual-background/useVB.tsx +267 -0
  282. package/template/src/components/whiteboard/StrokeWidthTool.tsx +137 -0
  283. package/template/src/components/whiteboard/WhiteboardButton.tsx +93 -0
  284. package/template/src/components/whiteboard/WhiteboardCanvas.tsx +99 -0
  285. package/template/src/components/whiteboard/WhiteboardConfigure.native.tsx +148 -0
  286. package/template/src/components/whiteboard/WhiteboardConfigure.tsx +446 -0
  287. package/template/src/components/whiteboard/WhiteboardCursor.tsx +152 -0
  288. package/template/src/components/whiteboard/WhiteboardToolBox.tsx +1246 -0
  289. package/template/src/components/whiteboard/WhiteboardView.native.tsx +188 -0
  290. package/template/src/components/whiteboard/WhiteboardView.tsx +81 -0
  291. package/template/src/components/whiteboard/WhiteboardWidget.tsx +685 -0
  292. package/template/src/components/whiteboard/WhiteboardWrapper.tsx +38 -0
  293. package/template/src/language/default-labels/commonLabels.ts +51 -14
  294. package/template/src/language/default-labels/createScreenLabels.ts +97 -17
  295. package/template/src/language/default-labels/joinScreenLabels.ts +45 -6
  296. package/template/src/language/default-labels/precallScreenLabels.ts +149 -25
  297. package/template/src/language/default-labels/shareLinkScreenLabels.ts +85 -37
  298. package/template/src/language/default-labels/videoCallScreenLabels.ts +1195 -158
  299. package/template/src/pages/Create.tsx +118 -92
  300. package/template/src/pages/Endcall.tsx +2 -2
  301. package/template/src/pages/Join.tsx +67 -45
  302. package/template/src/pages/VideoCall.tsx +240 -132
  303. package/template/src/pages/video-call/ActionSheet.native.tsx +33 -3
  304. package/template/src/pages/video-call/ActionSheet.tsx +54 -15
  305. package/template/src/pages/video-call/ActionSheetContent.tsx +487 -313
  306. package/template/src/pages/video-call/ActionSheetHandle.tsx +7 -1
  307. package/template/src/pages/video-call/DefaultLayouts.ts +20 -8
  308. package/template/src/pages/video-call/NameWithMicIcon.tsx +41 -64
  309. package/template/src/pages/video-call/RenderComponent.tsx +14 -30
  310. package/template/src/pages/video-call/SidePanelHeader.tsx +227 -29
  311. package/template/src/pages/video-call/VideoCallMobileView.tsx +199 -99
  312. package/template/src/pages/video-call/VideoCallScreen.native.tsx +2 -25
  313. package/template/src/pages/video-call/VideoCallScreen.tsx +233 -57
  314. package/template/src/pages/video-call/VideoCallScreenWrapper.tsx +41 -0
  315. package/template/src/pages/video-call/VideoComponent.tsx +60 -8
  316. package/template/src/pages/video-call/VideoRenderer.tsx +237 -98
  317. package/template/src/pages/video-call/VisibilitySensor.tsx +104 -0
  318. package/template/src/pages/video-call/index.ts +42 -8
  319. package/template/src/rtm/RTMEngine.ts +9 -4
  320. package/template/src/rtm-events/constants.ts +21 -3
  321. package/template/src/rtm-events-api/Events.ts +6 -4
  322. package/template/src/rtm-events-api/LocalEvents.ts +14 -0
  323. package/template/src/rtm-events-api/types.ts +5 -5
  324. package/template/src/selection.json +1 -0
  325. package/template/src/subComponents/ChatBubble.tsx +87 -67
  326. package/template/src/subComponents/ChatContainer.tsx +70 -49
  327. package/template/src/subComponents/ChatInput.ios.tsx +32 -85
  328. package/template/src/subComponents/ChatInput.tsx +31 -80
  329. package/template/src/subComponents/Checkbox.native.tsx +46 -46
  330. package/template/src/subComponents/Checkbox.tsx +7 -6
  331. package/template/src/subComponents/CopyJoinInfo.tsx +31 -11
  332. package/template/src/subComponents/EndcallPopup.tsx +83 -12
  333. package/template/src/subComponents/FallbackLogo.tsx +2 -2
  334. package/template/src/subComponents/LanguageSelector.tsx +34 -30
  335. package/template/src/subComponents/LayoutIconButton.tsx +34 -17
  336. package/template/src/subComponents/LayoutIconDropdown.tsx +21 -8
  337. package/template/src/subComponents/Loading.tsx +22 -9
  338. package/template/src/subComponents/LocalAudioMute.tsx +87 -34
  339. package/template/src/subComponents/LocalEndCall.tsx +48 -31
  340. package/template/src/subComponents/LocalSwitchCamera.tsx +49 -11
  341. package/template/src/subComponents/LocalVideoMute.tsx +87 -35
  342. package/template/src/subComponents/NetworkQualityPill.tsx +22 -38
  343. package/template/src/subComponents/Recording.tsx +29 -9
  344. package/template/src/subComponents/RemoteAudioMute.tsx +5 -5
  345. package/template/src/subComponents/RemoteMutePopup.tsx +55 -14
  346. package/template/src/subComponents/RemoteVideoMute.tsx +5 -5
  347. package/template/src/subComponents/RemoveMeetingPopup.tsx +19 -6
  348. package/template/src/subComponents/RemoveScreensharePopup.tsx +20 -5
  349. package/template/src/subComponents/ScreenShareNotice.tsx +11 -6
  350. package/template/src/subComponents/SelectDevice.tsx +103 -34
  351. package/template/src/subComponents/SelectDeviceSettings.backup.tsx +9 -6
  352. package/template/src/subComponents/SidePanelButtons.ts +0 -3
  353. package/template/src/subComponents/SidePanelEnum.tsx +2 -0
  354. package/template/src/subComponents/SidePanelHeader.tsx +97 -63
  355. package/template/src/subComponents/ToastConfig.tsx +70 -61
  356. package/template/src/subComponents/caption/Caption.tsx +132 -0
  357. package/template/src/subComponents/caption/CaptionContainer.tsx +302 -0
  358. package/template/src/subComponents/caption/CaptionIcon.tsx +111 -0
  359. package/template/src/subComponents/caption/CaptionText.tsx +182 -0
  360. package/template/src/subComponents/caption/DownloadTranscriptBtn.tsx +65 -0
  361. package/template/src/subComponents/caption/LanguageSelectorPopup.tsx +192 -0
  362. package/template/src/subComponents/caption/Transcript.tsx +452 -0
  363. package/template/src/subComponents/caption/TranscriptIcon.tsx +123 -0
  364. package/template/src/subComponents/caption/TranscriptText.tsx +98 -0
  365. package/template/src/subComponents/caption/index.ts +3 -0
  366. package/template/src/subComponents/caption/proto/ptoto.js +91 -0
  367. package/template/src/subComponents/caption/proto/test.proto +23 -0
  368. package/template/src/subComponents/caption/useCaption.tsx +123 -0
  369. package/template/src/subComponents/caption/useCaptionWidth.ts +27 -0
  370. package/template/src/subComponents/caption/useSTTAPI.tsx +179 -0
  371. package/template/src/subComponents/caption/useStreamMessageUtils.native.ts +211 -0
  372. package/template/src/subComponents/caption/useStreamMessageUtils.ts +235 -0
  373. package/template/src/subComponents/caption/useTranscriptDownload.native.ts +63 -0
  374. package/template/src/subComponents/caption/useTranscriptDownload.ts +52 -0
  375. package/template/src/subComponents/caption/utils.ts +126 -0
  376. package/template/src/subComponents/chat/ChatParticipants.tsx +60 -24
  377. package/template/src/subComponents/livestream/ApprovedLiveStreamControlsView.tsx +2 -2
  378. package/template/src/subComponents/livestream/CurrentLiveStreamRequestsView.tsx +19 -20
  379. package/template/src/subComponents/livestream/controls/LocalRaiseHand.tsx +66 -35
  380. package/template/src/subComponents/livestream/controls/RemoteLiveStreamApprovedRequestRecall.tsx +3 -2
  381. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestApprove.tsx +10 -6
  382. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestReject.tsx +28 -19
  383. package/template/src/subComponents/recording/useIsRecordingBot.tsx +38 -0
  384. package/template/src/subComponents/recording/useRecording.tsx +251 -150
  385. package/template/src/subComponents/recording/useRecordingLayoutQuery.tsx +0 -1
  386. package/template/src/subComponents/screenshare/ScreenshareButton.tsx +18 -13
  387. package/template/src/subComponents/screenshare/ScreenshareConfigure.native.tsx +164 -93
  388. package/template/src/subComponents/screenshare/ScreenshareConfigure.tsx +163 -108
  389. package/template/src/subComponents/waiting-rooms/WaitingRoomControls.tsx +85 -0
  390. package/template/src/subComponents/waiting-rooms/useWaitingRoomAPI.ts +75 -0
  391. package/template/src/theme/index.ts +13 -0
  392. package/template/src/utils/SdkMethodEvents.ts +5 -5
  393. package/template/src/utils/axiomLogger.ts +117 -0
  394. package/template/src/utils/book.jpg +0 -0
  395. package/template/src/utils/common.tsx +96 -1
  396. package/template/src/utils/constants.ts +4 -0
  397. package/template/src/utils/getCustomRoute.ts +7 -0
  398. package/template/src/utils/index.tsx +34 -0
  399. package/template/src/utils/useActionSheet.tsx +50 -0
  400. package/template/src/utils/useActiveSpeaker.ts +38 -0
  401. package/template/src/utils/useAppState.ts +17 -0
  402. package/template/src/utils/useAsyncEffect.ts +138 -0
  403. package/template/src/utils/{useCreateMeeting.ts → useCreateRoom.ts} +19 -14
  404. package/template/src/utils/useEndCall.ts +65 -0
  405. package/template/src/utils/useFindActiveSpeaker.native.ts +4 -0
  406. package/template/src/utils/useFindActiveSpeaker.ts +335 -0
  407. package/template/src/utils/useGetMeetingPhrase.ts +10 -10
  408. package/template/src/utils/useIsAudioEnabled.ts +3 -3
  409. package/template/src/utils/useIsLocalUserSpeaking.native.ts +4 -0
  410. package/template/src/utils/useIsLocalUserSpeaking.ts +103 -0
  411. package/template/src/utils/useIsPSTN.ts +3 -3
  412. package/template/src/utils/useIsVideoEnabled.ts +3 -3
  413. package/template/src/utils/useJoinRoom.ts +199 -0
  414. package/template/src/utils/{useIsActiveSpeaker.ts → useLocalAudio.ts} +23 -12
  415. package/template/src/{components/Settings.native.tsx → utils/useMenu.tsx} +16 -6
  416. package/template/src/utils/useModal.tsx +8 -0
  417. package/template/src/utils/useMutePSTN.ts +2 -2
  418. package/template/src/utils/useMuteToggleLocal.ts +21 -9
  419. package/template/src/utils/useRemoteEndCall.ts +4 -4
  420. package/template/src/utils/useRemoteEndScreenshare.ts +4 -4
  421. package/template/src/utils/useRemoteMute.ts +7 -7
  422. package/template/src/utils/useRemoteRequest.ts +7 -7
  423. package/template/src/utils/useSearchParams.tsx +18 -0
  424. package/template/src/utils/useString.ts +13 -3
  425. package/template/src/utils/useSwitchCamera.native.tsx +25 -0
  426. package/template/src/utils/useSwitchCamera.tsx +19 -0
  427. package/template/src/utils/useToolbar.tsx +59 -0
  428. package/template/src/wasms/agora-virtual-background.wasm +0 -0
  429. package/template/static.d.ts +42 -0
  430. package/template/web/index.html +20 -0
  431. package/template/webpack.commons.js +21 -10
  432. package/template/_buckconfig +0 -6
  433. package/template/_gitattributes +0 -1
  434. package/template/agora-rn-uikit/src/Contexts/RenderContext.tsx +0 -10
  435. package/template/agora-rn-uikit/src/Reducer/ActiveSpeakerDetected.ts +0 -11
  436. package/template/android/app/_BUCK +0 -55
  437. package/template/android/app/build_defs.bzl +0 -19
  438. package/template/bridge/rtc/webNg/LocalView.tsx +0 -20
  439. package/template/ios/HelloWorld/AppDelegate.m +0 -74
  440. package/template/src/pages/video-call/CustomUserContextHolder.tsx +0 -20
  441. package/template/src/utils/useButtonTemplate.tsx +0 -44
  442. package/template/src/utils/useJoinMeeting.ts +0 -142
@@ -11,23 +11,28 @@
11
11
  */
12
12
  // @ts-nocheck
13
13
  import React, {useState, useContext, useEffect, useRef} from 'react';
14
- import {View, StyleSheet, Text, useWindowDimensions} from 'react-native';
14
+ import {useApolloClient} from '@apollo/client';
15
+ import {View, StyleSheet, Text} from 'react-native';
15
16
  import {
16
17
  RtcConfigure,
17
18
  PropsProvider,
18
- ClientRole,
19
- ChannelProfile,
19
+ ClientRoleType,
20
+ ChannelProfileType,
20
21
  LocalUserContext,
21
22
  UidType,
22
23
  CallbacksInterface,
23
- ToggleState,
24
24
  } from '../../agora-rn-uikit';
25
25
  import styles from '../components/styles';
26
26
  import {useParams, useHistory} from '../components/Router';
27
27
  import RtmConfigure from '../components/RTMConfigure';
28
28
  import DeviceConfigure from '../components/DeviceConfigure';
29
29
  import Logo from '../subComponents/Logo';
30
- import {useHasBrandLogo, isArray, isMobileUA} from '../utils/common';
30
+ import {
31
+ useHasBrandLogo,
32
+ isArray,
33
+ isMobileUA,
34
+ isWebInternal,
35
+ } from '../utils/common';
31
36
  import {SidePanelType} from '../subComponents/SidePanelEnum';
32
37
  import {videoView} from '../../theme.json';
33
38
  import {LiveStreamContextProvider} from '../components/livestream';
@@ -35,40 +40,46 @@ import ScreenshareConfigure from '../subComponents/screenshare/ScreenshareConfig
35
40
  import {ErrorContext} from '.././components/common/index';
36
41
  import {PreCallProvider} from '../components/precall/usePreCall';
37
42
  import {LayoutProvider} from '../utils/useLayout';
38
- import {useCustomization} from 'customization-implementation';
39
43
  import Precall from '../components/Precall';
40
- import {useString} from '../utils/useString';
41
44
  import useLayoutsData from './video-call/useLayoutsData';
42
45
  import {RecordingProvider} from '../subComponents/recording/useRecording';
43
- import useJoinMeeting from '../utils/useJoinMeeting';
46
+ import useJoinRoom from '../utils/useJoinRoom';
44
47
  import {
45
- useMeetingInfo,
46
- MeetingInfoDefaultValue,
47
- validateMeetingInfoData,
48
- } from '../components/meeting-info/useMeetingInfo';
48
+ useRoomInfo,
49
+ RoomInfoDefaultValue,
50
+ WaitingRoomStatus,
51
+ } from '../components/room-info/useRoomInfo';
49
52
  import {SidePanelProvider} from '../utils/useSidePanel';
50
- import VideoCallScreen from './video-call/VideoCallScreen';
51
53
  import {NetworkQualityProvider} from '../components/NetworkQualityContext';
52
- import CustomUserContextHolder from './video-call/CustomUserContextHolder';
53
54
  import {ChatNotificationProvider} from '../components/chat-notification/useChatNotification';
54
- import {ChatUIControlProvider} from '../components/chat-ui/useChatUIControl';
55
+ import {ChatUIControlsProvider} from '../components/chat-ui/useChatUIControls';
55
56
  import {ChatMessagesProvider} from '../components/chat-messages/useChatMessages';
56
57
  import {ScreenShareProvider} from '../components/contexts/ScreenShareContext';
57
58
  import {LiveStreamDataProvider} from '../components/contexts/LiveStreamDataContext';
58
59
  import {VideoMeetingDataProvider} from '../components/contexts/VideoMeetingDataContext';
59
- import {WhiteboardProvider} from '../components/contexts/WhiteboardContext';
60
60
  import {useWakeLock} from '../components/useWakeLock';
61
61
  import SDKEvents from '../utils/SdkEvents';
62
62
  import {UserPreferenceProvider} from '../components/useUserPreference';
63
63
  import EventsConfigure from '../components/EventsConfigure';
64
- import {useAuth} from '../auth/AuthProvider';
65
64
  import PermissionHelper from '../components/precall/PermissionHelper';
66
65
  import {currentFocus, FocusProvider} from '../utils/useFocus';
67
66
  import {VideoCallProvider} from '../components/useVideoCall';
68
- import {SdkApiContext, SDK_MEETING_TAG} from '../components/SdkApiContext';
67
+ import {SdkApiContext} from '../components/SdkApiContext';
69
68
  import isSDK from '../utils/isSDK';
70
- import {useSetMeetingInfo} from '../components/meeting-info/useSetMeetingInfo';
69
+ import {CaptionProvider} from '../subComponents/caption/useCaption';
71
70
  import SdkMuteToggleListener from '../components/SdkMuteToggleListener';
71
+ import StorageContext from '../components/StorageContext';
72
+ import {useSetRoomInfo} from '../components/room-info/useSetRoomInfo';
73
+ import {NoiseSupressionProvider} from '../app-state/useNoiseSupression';
74
+ import {VideoQualityContextProvider} from '../app-state/useVideoQuality';
75
+ import {VBProvider} from '../components/virtual-background/useVB';
76
+ import {DisableChatProvider} from '../components/disable-chat/useDisableChat';
77
+ import {WaitingRoomProvider} from '../components/contexts/WaitingRoomContext';
78
+ import VideoCallScreenWrapper from './video-call/VideoCallScreenWrapper';
79
+ import {useIsRecordingBot} from '../subComponents/recording/useIsRecordingBot';
80
+ import {videoRoomStartingCallText} from '../language/default-labels/videoCallScreenLabels';
81
+ import {useString} from '../utils/useString';
82
+ import {useCustomization} from 'customization-implementation';
72
83
 
73
84
  enum RnEncryptionEnum {
74
85
  /**
@@ -94,16 +105,51 @@ enum RnEncryptionEnum {
94
105
  * @since v3.1.2.
95
106
  */
96
107
  SM4128ECB = 4,
108
+ /**
109
+ * 6: 256-bit AES encryption, GCM mode.
110
+ *
111
+ * @since v3.1.2.
112
+ */
113
+ AES256GCM = 6,
114
+
115
+ /**
116
+ * 7: 128-bit GCM encryption, GCM mode.
117
+ *
118
+ * @since v3.4.5
119
+ */
120
+ AES128GCM2 = 7,
121
+ /**
122
+ * 8: 256-bit GCM encryption, GCM mode.
123
+ * @since v3.1.2.
124
+ * Compared to AES256GCM encryption mode, AES256GCM2 encryption mode is more secure and requires you to set the salt (encryptionKdfSalt).
125
+ */
126
+ AES256GCM2 = 8,
97
127
  }
98
128
 
99
129
  const VideoCall: React.FC = () => {
100
130
  const hasBrandLogo = useHasBrandLogo();
101
- //commented for v1 release
102
- //const joiningLoaderLabel = useString('joiningLoaderLabel')();
103
- const joiningLoaderLabel = 'Starting Call. Just a second.';
131
+ const joiningLoaderLabel = useString(videoRoomStartingCallText)();
132
+
133
+ const client = useApolloClient();
134
+
104
135
  const {setGlobalErrorMessage} = useContext(ErrorContext);
105
136
  const {awake, release} = useWakeLock();
106
- const [callActive, setCallActive] = useState($config.PRECALL ? false : true);
137
+ const {isRecordingBot} = useIsRecordingBot();
138
+ /**
139
+ * Should we set the callscreen to active ??
140
+ * a) If Recording bot( i.e prop: recordingBot) is TRUE then it means,
141
+ * the recording bot is accessing the screen - so YES we should set
142
+ * the callActive as true and we need not check for whether
143
+ * $config.PRECALL is enabled or not.
144
+ * b) If Recording bot( i.e prop: recordingBot) is FALSE then we should set
145
+ * the callActive depending upon the value of magic variable - $config.PRECALL
146
+ */
147
+ const shouldCallBeSetToActive = isRecordingBot
148
+ ? true
149
+ : $config.PRECALL
150
+ ? false
151
+ : true;
152
+ const [callActive, setCallActive] = useState(shouldCallBeSetToActive);
107
153
 
108
154
  //layouts
109
155
  const layouts = useLayoutsData();
@@ -113,14 +159,28 @@ const VideoCall: React.FC = () => {
113
159
 
114
160
  const [isRecordingActive, setRecordingActive] = useState(false);
115
161
  const [queryComplete, setQueryComplete] = useState(false);
162
+ const [waitingRoomAttendeeJoined, setWaitingRoomAttendeeJoined] =
163
+ useState(false);
116
164
  const [sidePanel, setSidePanel] = useState<SidePanelType>(SidePanelType.None);
117
165
  const [currentFocus, setFocus] = useState<currentFocus>({
118
166
  editName: false,
119
167
  });
120
168
  const {phrase} = useParams<{phrase: string}>();
121
169
 
170
+ const {store} = useContext(StorageContext);
171
+ const {
172
+ join: SdkJoinState,
173
+ microphoneDevice: sdkMicrophoneDevice,
174
+ cameraDevice: sdkCameraDevice,
175
+ clearState,
176
+ } = useContext(SdkApiContext);
177
+
122
178
  // commented for v1 release
123
- //const lifecycle = useCustomization((data) => data.lifecycle);
179
+ const afterEndCall = useCustomization(
180
+ data =>
181
+ data?.lifecycle?.useAfterEndCall && data?.lifecycle?.useAfterEndCall(),
182
+ );
183
+
124
184
  const [rtcProps, setRtcProps] = React.useState({
125
185
  appId: $config.APP_ID,
126
186
  channel: null,
@@ -132,26 +192,31 @@ const VideoCall: React.FC = () => {
132
192
  profile: $config.PROFILE,
133
193
  dual: true,
134
194
  encryption: $config.ENCRYPTION_ENABLED
135
- ? {key: null, mode: RnEncryptionEnum.AES128XTS, screenKey: null}
195
+ ? {key: null, mode: RnEncryptionEnum.AES128GCM2, screenKey: null}
136
196
  : false,
137
- role: ClientRole.Broadcaster,
197
+ role: ClientRoleType.ClientRoleBroadcaster,
138
198
  geoFencing: $config.GEO_FENCING,
139
199
  audioRoom: $config.AUDIO_ROOM,
140
200
  activeSpeaker: $config.ACTIVE_SPEAKER,
201
+ preferredCameraId:
202
+ sdkCameraDevice.deviceId || store?.activeDeviceId?.videoinput || null,
203
+ preferredMicrophoneId:
204
+ sdkMicrophoneDevice.deviceId || store?.activeDeviceId?.audioinput || null,
205
+ recordingBot: isRecordingBot ? true : false,
141
206
  });
142
207
 
143
- const {join: SdkJoinState, clearState} = useContext(SdkApiContext);
144
208
  const history = useHistory();
145
209
  const currentMeetingPhrase = useRef(history.location.pathname);
146
210
 
147
- const useJoin = useJoinMeeting();
148
- const {setMeetingInfo} = useSetMeetingInfo();
149
- const {isJoinDataFetched, data} = useMeetingInfo();
211
+ const useJoin = useJoinRoom();
212
+ const {setRoomInfo} = useSetRoomInfo();
213
+ const {isJoinDataFetched, data, isInWaitingRoom, waitingRoomStatus} =
214
+ useRoomInfo();
150
215
 
151
216
  React.useEffect(() => {
152
217
  return () => {
153
218
  console.log('Videocall unmounted');
154
- setMeetingInfo(MeetingInfoDefaultValue);
219
+ setRoomInfo(RoomInfoDefaultValue);
155
220
  if (awake) {
156
221
  release();
157
222
  }
@@ -162,7 +227,7 @@ const VideoCall: React.FC = () => {
162
227
  if (!SdkJoinState.phrase) {
163
228
  useJoin(phrase)
164
229
  .then(() => {})
165
- .catch((error) => {
230
+ .catch(error => {
166
231
  setGlobalErrorMessage(error);
167
232
  history.push('/');
168
233
  });
@@ -186,11 +251,11 @@ const VideoCall: React.FC = () => {
186
251
 
187
252
  if (sdkMeetingDetails) {
188
253
  setQueryComplete(false);
189
- setMeetingInfo((meetingInfo) => {
254
+ setRoomInfo(roomInfo => {
190
255
  return {
191
256
  isJoinDataFetched: true,
192
257
  data: {
193
- ...meetingInfo.data,
258
+ ...roomInfo.data,
194
259
  ...sdkMeetingDetails,
195
260
  },
196
261
  };
@@ -198,7 +263,7 @@ const VideoCall: React.FC = () => {
198
263
  } else if (sdkMeetingPhrase) {
199
264
  setQueryComplete(false);
200
265
  currentMeetingPhrase.current = sdkMeetingPath;
201
- useJoin(sdkMeetingPhrase).catch((error) => {
266
+ useJoin(sdkMeetingPhrase).catch(error => {
202
267
  setGlobalErrorMessage(error);
203
268
  history.push('/');
204
269
  currentMeetingPhrase.current = '';
@@ -208,30 +273,61 @@ const VideoCall: React.FC = () => {
208
273
  }, [SdkJoinState]);
209
274
 
210
275
  React.useEffect(() => {
211
- if (isJoinDataFetched === true && !queryComplete) {
212
- setRtcProps({
213
- appId: $config.APP_ID,
276
+ if (
277
+ //isJoinDataFetched === true && (!queryComplete || !isInWaitingRoom)
278
+
279
+ //non waiting room - host/attendee
280
+ (!$config.ENABLE_WAITING_ROOM &&
281
+ isJoinDataFetched === true &&
282
+ !queryComplete) ||
283
+ //waiting room - host
284
+ ($config.ENABLE_WAITING_ROOM &&
285
+ isJoinDataFetched === true &&
286
+ data.isHost &&
287
+ !queryComplete) ||
288
+ //waiting room - attendee
289
+ ($config.ENABLE_WAITING_ROOM &&
290
+ isJoinDataFetched === true &&
291
+ !data.isHost &&
292
+ (!queryComplete || !isInWaitingRoom) &&
293
+ !waitingRoomAttendeeJoined)
294
+ ) {
295
+ setRtcProps(prevRtcProps => ({
296
+ ...prevRtcProps,
214
297
  channel: data.channel,
215
298
  uid: data.uid,
216
299
  token: data.token,
217
300
  rtm: data.rtmToken,
218
- dual: true,
219
- profile: $config.PROFILE,
220
301
  encryption: $config.ENCRYPTION_ENABLED
221
302
  ? {
222
303
  key: data.encryptionSecret,
223
- mode: RnEncryptionEnum.AES128XTS,
304
+ mode: RnEncryptionEnum.AES256GCM2,
224
305
  screenKey: data.encryptionSecret,
306
+ salt: data.encryptionSecretSalt,
225
307
  }
226
308
  : false,
227
309
  screenShareUid: data.screenShareUid,
228
310
  screenShareToken: data.screenShareToken,
229
- role: data.isHost ? ClientRole.Broadcaster : ClientRole.Audience,
230
- geoFencing: $config.GEO_FENCING,
231
- audioRoom: $config.AUDIO_ROOM,
232
- activeSpeaker: $config.ACTIVE_SPEAKER,
233
- });
311
+ role: data.isHost
312
+ ? ClientRoleType.ClientRoleBroadcaster
313
+ : ClientRoleType.ClientRoleAudience,
314
+ preventJoin:
315
+ !$config.ENABLE_WAITING_ROOM ||
316
+ ($config.ENABLE_WAITING_ROOM && data.isHost) ||
317
+ ($config.ENABLE_WAITING_ROOM &&
318
+ !data.isHost &&
319
+ waitingRoomStatus === WaitingRoomStatus.APPROVED)
320
+ ? false
321
+ : true,
322
+ }));
234
323
 
324
+ if (
325
+ $config.ENABLE_WAITING_ROOM &&
326
+ !data.isHost &&
327
+ waitingRoomStatus === WaitingRoomStatus.APPROVED
328
+ ) {
329
+ setWaitingRoomAttendeeJoined(true);
330
+ }
235
331
  // 1. Store the display name from API
236
332
  // if (data.username) {
237
333
  // setUsername(data.username);
@@ -253,6 +349,7 @@ const VideoCall: React.FC = () => {
253
349
  // TODO: These callbacks are being called twice
254
350
  SDKEvents.emit('leave');
255
351
  history.push('/');
352
+ client.resetStore();
256
353
  }, 0);
257
354
  },
258
355
  UserJoined: (uid: UidType) => {
@@ -300,97 +397,108 @@ const VideoCall: React.FC = () => {
300
397
  callbacks,
301
398
  styleProps,
302
399
  mode: $config.EVENT_MODE
303
- ? ChannelProfile.LiveBroadcasting
304
- : ChannelProfile.Communication,
400
+ ? ChannelProfileType.ChannelProfileLiveBroadcasting
401
+ : ChannelProfileType.ChannelProfileCommunication,
305
402
  }}>
306
403
  <RtcConfigure>
307
404
  <DeviceConfigure>
308
- <ChatUIControlProvider>
309
- <ChatNotificationProvider>
310
- <LayoutProvider
311
- value={{
312
- currentLayout,
313
- setLayout,
314
- }}>
315
- <FocusProvider value={{currentFocus, setFocus}}>
316
- <SidePanelProvider
405
+ <NoiseSupressionProvider callActive={callActive}>
406
+ <VideoQualityContextProvider>
407
+ <ChatUIControlsProvider>
408
+ <ChatNotificationProvider>
409
+ <LayoutProvider
317
410
  value={{
318
- sidePanel,
319
- setSidePanel,
411
+ currentLayout,
412
+ setLayout,
320
413
  }}>
321
- <ChatMessagesProvider>
322
- <ScreenShareProvider>
323
- <RtmConfigure
324
- setRecordingActive={setRecordingActive}
325
- callActive={callActive}>
326
- <UserPreferenceProvider>
327
- <WhiteboardProvider>
328
- <RecordingProvider
329
- value={{
330
- setRecordingActive,
331
- isRecordingActive,
332
- }}>
333
- <ScreenshareConfigure>
334
- <EventsConfigure>
335
- <LiveStreamContextProvider
336
- value={{
337
- setRtcProps,
338
- rtcProps,
339
- callActive,
340
- }}>
341
- <LiveStreamDataProvider>
342
- <LocalUserContext
343
- localUid={rtcProps?.uid}>
344
- <CustomUserContextHolder>
345
- <NetworkQualityProvider>
346
- {!isMobileUA() && (
347
- <PermissionHelper />
348
- )}
349
- <SdkMuteToggleListener>
350
- {callActive ? (
351
- <VideoMeetingDataProvider>
352
- <VideoCallProvider>
353
- <VideoCallScreen />
354
- </VideoCallProvider>
355
- </VideoMeetingDataProvider>
356
- ) : $config.PRECALL ? (
357
- <PreCallProvider
358
- value={{
359
- callActive,
360
- setCallActive,
361
- isCameraAvailable,
362
- isMicAvailable,
363
- setCameraAvailable,
364
- setMicAvailable,
365
- isPermissionRequested,
366
- setIsPermissionRequested,
367
- isSpeakerAvailable,
368
- setSpeakerAvailable,
369
- }}>
370
- <Precall />
371
- </PreCallProvider>
372
- ) : (
373
- <></>
374
- )}
375
- </SdkMuteToggleListener>
376
- </NetworkQualityProvider>
377
- </CustomUserContextHolder>
378
- </LocalUserContext>
379
- </LiveStreamDataProvider>
380
- </LiveStreamContextProvider>
381
- </EventsConfigure>
382
- </ScreenshareConfigure>
383
- </RecordingProvider>
384
- </WhiteboardProvider>
385
- </UserPreferenceProvider>
386
- </RtmConfigure>
387
- </ScreenShareProvider>
388
- </ChatMessagesProvider>
389
- </SidePanelProvider>
390
- </FocusProvider>
391
- </LayoutProvider>
392
- </ChatNotificationProvider>
393
- </ChatUIControlProvider>
414
+ <FocusProvider value={{currentFocus, setFocus}}>
415
+ <SidePanelProvider
416
+ value={{
417
+ sidePanel,
418
+ setSidePanel,
419
+ }}>
420
+ <ChatMessagesProvider callActive={callActive}>
421
+ <ScreenShareProvider>
422
+ <RtmConfigure
423
+ setRecordingActive={setRecordingActive}
424
+ callActive={callActive}>
425
+ <UserPreferenceProvider>
426
+ <CaptionProvider>
427
+ <WaitingRoomProvider>
428
+ <EventsConfigure>
429
+ <RecordingProvider
430
+ value={{
431
+ setRecordingActive,
432
+ isRecordingActive,
433
+ callActive,
434
+ }}>
435
+ <ScreenshareConfigure>
436
+ <LiveStreamContextProvider
437
+ value={{
438
+ setRtcProps,
439
+ rtcProps,
440
+ callActive,
441
+ }}>
442
+ <LiveStreamDataProvider>
443
+ <LocalUserContext
444
+ localUid={
445
+ rtcProps?.uid
446
+ }>
447
+ <NetworkQualityProvider>
448
+ {!isMobileUA() && (
449
+ <PermissionHelper />
450
+ )}
451
+ <VBProvider>
452
+ <SdkMuteToggleListener>
453
+ {callActive ? (
454
+ <VideoMeetingDataProvider>
455
+ <VideoCallProvider>
456
+ <DisableChatProvider>
457
+ <VideoCallScreenWrapper />
458
+ </DisableChatProvider>
459
+ </VideoCallProvider>
460
+ </VideoMeetingDataProvider>
461
+ ) : $config.PRECALL ? (
462
+ <PreCallProvider
463
+ value={{
464
+ callActive,
465
+ setCallActive,
466
+ isCameraAvailable,
467
+ isMicAvailable,
468
+ setCameraAvailable,
469
+ setMicAvailable,
470
+ isPermissionRequested,
471
+ setIsPermissionRequested,
472
+ isSpeakerAvailable,
473
+ setSpeakerAvailable,
474
+ }}>
475
+ <Precall />
476
+ </PreCallProvider>
477
+ ) : (
478
+ <></>
479
+ )}
480
+ </SdkMuteToggleListener>
481
+ </VBProvider>
482
+ </NetworkQualityProvider>
483
+ </LocalUserContext>
484
+ </LiveStreamDataProvider>
485
+ </LiveStreamContextProvider>
486
+ </ScreenshareConfigure>
487
+ </RecordingProvider>
488
+ </EventsConfigure>
489
+ </WaitingRoomProvider>
490
+ </CaptionProvider>
491
+ </UserPreferenceProvider>
492
+ </RtmConfigure>
493
+ </ScreenShareProvider>
494
+ </ChatMessagesProvider>
495
+ </SidePanelProvider>
496
+ </FocusProvider>
497
+ </LayoutProvider>
498
+ </ChatNotificationProvider>
499
+ </ChatUIControlsProvider>
500
+ </VideoQualityContextProvider>
501
+ </NoiseSupressionProvider>
394
502
  </DeviceConfigure>
395
503
  </RtcConfigure>
396
504
  </PropsProvider>
@@ -23,16 +23,19 @@ import {useSidePanel} from '../../utils/useSidePanel';
23
23
  import {isAndroid, isIOS} from '../../utils/common';
24
24
  import ActionSheetHandle from './ActionSheetHandle';
25
25
  import Spacer from '../../atoms/Spacer';
26
+ import Transcript from '../../subComponents/caption/Transcript';
26
27
 
27
28
  //topbar btn template is used to show icons without label text (as in desktop : bottomBar)
28
29
 
29
- const ActionSheet = () => {
30
+ const ActionSheet = props => {
31
+ const {snapPointsMinMax = [100, 400]} = props;
30
32
  const [isExpanded, setIsExpanded] = React.useState(false);
31
33
  const {sidePanel, setSidePanel} = useSidePanel();
32
34
  const bottomSheetRef = useRef<BottomSheetModal>(null);
33
35
  const chatSheetRef = useRef<BottomSheetModal>(null);
34
36
  const participantsSheetRef = useRef<BottomSheetModal>(null);
35
37
  const settingsSheetRef = useRef<BottomSheetModal>(null);
38
+ const transcriptSheetRef = useRef<BottomSheetModal>(null);
36
39
 
37
40
  // callbacks
38
41
  const handleSheetChanges = useCallback((index: number) => {
@@ -60,19 +63,26 @@ const ActionSheet = () => {
60
63
  settingsSheetRef?.current.present();
61
64
  break;
62
65
  }
66
+ case SidePanelType.Transcript: {
67
+ transcriptSheetRef?.current.present();
68
+ break;
69
+ }
63
70
  case SidePanelType.None: {
64
- if (isAndroid) {
71
+ if (isAndroid()) {
65
72
  timeout = setTimeout(() => {
66
73
  // Code to be executed after the timeout until https://github.com/gorhom/react-native-bottom-sheet/pull/1164/files is merged
67
74
  chatSheetRef?.current.close();
68
75
  participantsSheetRef?.current.close();
69
76
  settingsSheetRef?.current.close();
77
+ transcriptSheetRef?.current.close();
78
+ bottomSheetRef?.current.present();
70
79
  }, 200);
71
80
  } else {
72
81
  // Code to be executed immediately without a timer
73
82
  chatSheetRef?.current.dismiss();
74
83
  participantsSheetRef?.current.close();
75
84
  settingsSheetRef?.current.close();
85
+ transcriptSheetRef?.current.close();
76
86
  }
77
87
 
78
88
  handleSheetChanges(0);
@@ -106,7 +116,7 @@ const ActionSheet = () => {
106
116
  )}
107
117
  {/* Controls Action Sheet*/}
108
118
  <BottomSheetModal
109
- snapPoints={[100, 350]}
119
+ snapPoints={snapPointsMinMax}
110
120
  ref={bottomSheetRef}
111
121
  onChange={handleSheetChanges}
112
122
  enablePanDownToClose={false}
@@ -125,6 +135,7 @@ const ActionSheet = () => {
125
135
  handleSheetChanges={handleSheetChanges}
126
136
  isExpanded={isExpanded}
127
137
  native={true}
138
+ {...props}
128
139
  />
129
140
  </BottomSheetView>
130
141
  </BottomSheetModal>
@@ -187,6 +198,25 @@ const ActionSheet = () => {
187
198
  <SettingsView showHeader={false} />
188
199
  </BottomSheetView>
189
200
  </BottomSheetModal>
201
+
202
+ {/* Transcript Action Sheet */}
203
+ <BottomSheetModal
204
+ snapPoints={['100%']}
205
+ ref={transcriptSheetRef}
206
+ name="TranscriptSheet"
207
+ onDismiss={onDismiss}
208
+ style={styles.container}
209
+ backgroundStyle={styles.backgroundStyle}
210
+ handleIndicatorStyle={styles.handleIndicatorStyle}
211
+ enableContentPanningGesture={false}
212
+ handleComponent={() => (
213
+ <ActionSheetHandle sidePanel={SidePanelType.Transcript} />
214
+ )}
215
+ stackBehavior="push">
216
+ <BottomSheetView>
217
+ <Transcript showHeader={false} />
218
+ </BottomSheetView>
219
+ </BottomSheetModal>
190
220
  </BottomSheetModalProvider>
191
221
  );
192
222
  };