agora-appbuilder-core 4.0.0 → 4.0.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 (475) 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 +29 -29
  5. package/template/_eslintrc.js +3 -3
  6. package/template/_gitignore +12 -11
  7. package/template/_package-lock.json +28491 -23647
  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 +79 -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 +45 -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 +138 -100
  45. package/template/agora-rn-uikit/src/Rtc/Join.tsx +55 -28
  46. package/template/agora-rn-uikit/src/RtcConfigure.tsx +177 -77
  47. package/template/agora-rn-uikit/src/Utils/isBotUser.ts +15 -0
  48. package/template/agora-rn-uikit/src/Utils/quality.tsx +8 -0
  49. package/template/agora-rn-uikit/src/Views/MaxVideoView.native.tsx +56 -12
  50. package/template/agora-rn-uikit/src/Views/MaxVideoView.tsx +47 -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 +19 -33
  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 +200 -70
  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 +34 -46
  84. package/template/customization-api/types.ts +26 -0
  85. package/template/customization-api/utils.ts +4 -0
  86. package/template/customization-implementation/createHook.ts +24 -6
  87. package/template/customization-implementation/index.ts +1 -2
  88. package/template/customization-implementation/useCustomization.tsx +5 -7
  89. package/template/defaultConfig.js +72 -0
  90. package/template/global.d.ts +14 -1
  91. package/template/index.js +1 -4
  92. package/template/index.web.js +0 -5
  93. package/template/index.wsdk.tsx +1 -12
  94. package/template/ios/.xcode.env +11 -0
  95. package/template/ios/HelloWorld/AppDelegate.h +2 -4
  96. package/template/ios/HelloWorld/AppDelegate.mm +64 -0
  97. package/template/ios/HelloWorld/HelloWorldDebug.entitlements +10 -0
  98. package/template/ios/HelloWorld/Info.plist +8 -2
  99. package/template/ios/HelloWorld/main.m +2 -1
  100. package/template/ios/HelloWorld.xcodeproj/project.pbxproj +533 -17
  101. package/template/ios/HelloWorld.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  102. package/template/ios/HelloWorld.xcworkspace/contents.xcworkspacedata +10 -0
  103. package/template/ios/HelloWorld.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  104. package/template/ios/HelloWorldTests/HelloWorldTests.m +14 -13
  105. package/template/ios/HelloWorldTests/Info.plist +2 -2
  106. package/template/ios/Podfile +54 -20
  107. package/template/ios/Podfile.lock +809 -0
  108. package/template/ios/ScreenSharing/Info.plist +15 -0
  109. package/template/ios/ScreenSharing/SampleHandler.h +9 -0
  110. package/template/ios/ScreenSharing/SampleHandler.m +70 -0
  111. package/template/jest.config.js +4 -0
  112. package/template/metro.config.js +7 -32
  113. package/template/package.json +53 -39
  114. package/template/react-native-toast-message/index.d.ts +3 -1
  115. package/template/react-native-toast-message/index.js +1 -0
  116. package/template/react-native-toast-message/src/components/base/index.js +20 -32
  117. package/template/react-native-toast-message/src/components/base/styles.js +18 -21
  118. package/template/react-native-toast-message/src/components/checkbox.js +24 -19
  119. package/template/react-native-toast-message/src/index.js +3 -1
  120. package/template/react-native-toast-message/src/index.sdk.tsx +4 -1
  121. package/template/src/App.tsx +53 -69
  122. package/template/src/AppRoutes.tsx +90 -0
  123. package/template/src/AppWrapper.tsx +42 -25
  124. package/template/src/SDKAppWrapper.tsx +90 -57
  125. package/template/src/app-state/useLocalUserInfo.ts +3 -3
  126. package/template/src/app-state/useNoiseSupression.native.tsx +67 -0
  127. package/template/src/app-state/useNoiseSupression.tsx +107 -0
  128. package/template/src/app-state/useVideoQuality.tsx +39 -0
  129. package/template/src/assets/font-styles.css +175 -3
  130. package/template/src/assets/fonts/icomoon.ttf +0 -0
  131. package/template/src/assets/selection.json +1 -1
  132. package/template/src/atoms/ActionMenu.tsx +50 -11
  133. package/template/src/atoms/Avatar.tsx +51 -0
  134. package/template/src/atoms/Card.tsx +21 -8
  135. package/template/src/atoms/Carousel.native.tsx +105 -0
  136. package/template/src/atoms/Carousel.tsx +103 -0
  137. package/template/src/atoms/Checkbox.tsx +98 -0
  138. package/template/src/atoms/CircularProgress.tsx +0 -1
  139. package/template/src/atoms/ClipboardIconButton.tsx +91 -0
  140. package/template/src/atoms/CustomIcon.tsx +46 -0
  141. package/template/src/atoms/DropDownMulti.tsx +349 -0
  142. package/template/src/atoms/Dropdown.tsx +3 -3
  143. package/template/src/atoms/IconButton.tsx +52 -9
  144. package/template/src/atoms/ImageIcon.tsx +18 -5
  145. package/template/src/atoms/InlineNotification.tsx +81 -0
  146. package/template/src/atoms/InviteInfo.tsx +4 -4
  147. package/template/src/atoms/MeetingLink.tsx +160 -0
  148. package/template/src/atoms/ParticipantsCount.tsx +20 -8
  149. package/template/src/atoms/Popup.tsx +49 -27
  150. package/template/src/atoms/PrimaryButton.tsx +19 -5
  151. package/template/src/atoms/RecordingInfo.tsx +8 -5
  152. package/template/src/atoms/SecondaryButton.tsx +2 -0
  153. package/template/src/atoms/Spacer.tsx +1 -0
  154. package/template/src/atoms/TertiaryButton.tsx +35 -5
  155. package/template/src/atoms/TextInput.tsx +2 -1
  156. package/template/src/atoms/Toolbar.tsx +102 -0
  157. package/template/src/atoms/ToolbarItem.tsx +85 -0
  158. package/template/src/atoms/ToolbarMenu.tsx +40 -0
  159. package/template/src/atoms/ToolbarMenuItem.tsx +104 -0
  160. package/template/src/atoms/ToolbarPreset.tsx +71 -0
  161. package/template/src/atoms/Tooltip.tsx +30 -13
  162. package/template/src/atoms/pagination/Pagination.tsx +127 -0
  163. package/template/src/atoms/pagination/usePagination.tsx +88 -0
  164. package/template/src/auth/AuthProvider.tsx +500 -0
  165. package/template/src/auth/AuthRoute.tsx +94 -0
  166. package/template/src/auth/IDPAuth.electron.tsx +31 -0
  167. package/template/src/auth/IDPAuth.tsx +67 -0
  168. package/template/src/auth/IDPLogoutComponent.tsx +158 -0
  169. package/template/src/auth/UserCancelPopup.tsx +115 -0
  170. package/template/src/auth/config.ts +52 -0
  171. package/template/src/auth/openIDPURL.electron.tsx +39 -0
  172. package/template/src/auth/openIDPURL.native.tsx +51 -0
  173. package/template/src/auth/openIDPURL.tsx +20 -0
  174. package/template/src/auth/useIDPAuth.electron.tsx +65 -0
  175. package/template/src/auth/useIDPAuth.native.tsx +70 -0
  176. package/template/src/auth/useIDPAuth.tsx +63 -0
  177. package/template/src/auth/useTokenAuth.tsx +194 -0
  178. package/template/src/components/Chat.tsx +92 -72
  179. package/template/src/components/ChatContext.ts +2 -0
  180. package/template/src/components/ColorConfigure.tsx +0 -1
  181. package/template/src/components/CommonStyles.ts +9 -2
  182. package/template/src/components/Controls.tsx +914 -182
  183. package/template/src/components/Controls1.native.tsx +9 -5
  184. package/template/src/components/DeviceConfigure.native.tsx +2 -2
  185. package/template/src/components/DeviceConfigure.tsx +400 -149
  186. package/template/src/components/DeviceContext.tsx +2 -0
  187. package/template/src/components/EventsConfigure.tsx +722 -82
  188. package/template/src/components/GraphQLProvider.tsx +82 -39
  189. package/template/src/components/GridVideo.tsx +30 -16
  190. package/template/src/components/HostControlView.tsx +11 -14
  191. package/template/src/components/JoinPhrase.tsx +0 -1
  192. package/template/src/components/Leftbar.tsx +110 -0
  193. package/template/src/components/Navbar.tsx +305 -147
  194. package/template/src/components/NavbarMobile.tsx +119 -0
  195. package/template/src/components/Navigation.native.tsx +1 -15
  196. package/template/src/components/{Settings.native.tsx → Navigation.sdk.tsx} +17 -6
  197. package/template/src/components/NetworkQualityContext.tsx +12 -6
  198. package/template/src/components/ParticipantsView.tsx +63 -56
  199. package/template/src/components/PinnedVideo.tsx +191 -119
  200. package/template/src/components/Precall.native.tsx +177 -72
  201. package/template/src/components/Precall.tsx +247 -78
  202. package/template/src/components/RTMConfigure.tsx +205 -67
  203. package/template/src/components/Rightbar.tsx +112 -0
  204. package/template/src/components/Router.electron.ts +1 -0
  205. package/template/src/components/Router.native.ts +1 -0
  206. package/template/src/components/Router.sdk.ts +1 -0
  207. package/template/src/components/Router.ts +1 -0
  208. package/template/src/components/SdkApiContext.tsx +313 -0
  209. package/template/src/components/SdkMuteToggleListener.tsx +88 -0
  210. package/template/src/components/SessionContext.tsx +0 -1
  211. package/template/src/components/Settings.tsx +33 -4
  212. package/template/src/components/SettingsView.tsx +44 -9
  213. package/template/src/components/Share.tsx +152 -74
  214. package/template/src/components/StorageContext.tsx +23 -6
  215. package/template/src/components/ToastComponent.tsx +10 -1
  216. package/template/src/components/WhiteboardLayout.tsx +291 -0
  217. package/template/src/components/chat-messages/useChatMessages.tsx +454 -239
  218. package/template/src/components/chat-ui/{useChatUIControl.tsx → useChatUIControls.tsx} +29 -29
  219. package/template/src/components/common/Error.tsx +2 -0
  220. package/template/src/components/common/Logo.tsx +2 -2
  221. package/template/src/components/contexts/LiveStreamDataContext.tsx +13 -12
  222. package/template/src/components/contexts/ScreenShareContext.tsx +15 -1
  223. package/template/src/components/contexts/VideoMeetingDataContext.tsx +6 -6
  224. package/template/src/components/contexts/WaitingRoomContext.tsx +50 -0
  225. package/template/src/components/contexts/WhiteboardContext.tsx +54 -54
  226. package/template/src/components/disable-chat/useDisableChat.tsx +32 -0
  227. package/template/src/components/livestream/LiveStreamContext.tsx +314 -220
  228. package/template/src/components/livestream/Types.ts +36 -20
  229. package/template/src/components/livestream/views/LiveStreamAttendeeLandingTile.tsx +295 -0
  230. package/template/src/components/livestream/views/LiveStreamControls.tsx +5 -10
  231. package/template/src/components/meeting-info-invite/MeetingInfo.tsx +82 -0
  232. package/template/src/components/meeting-info-invite/MeetingInfoCardHeader.tsx +86 -0
  233. package/template/src/components/meeting-info-invite/MeetingInfoGridTile.tsx +218 -0
  234. package/template/src/components/meeting-info-invite/MeetingInfoLinks.tsx +122 -0
  235. package/template/src/components/participants/AllAudienceParticipants.tsx +19 -20
  236. package/template/src/components/participants/AllHostParticipants.tsx +20 -19
  237. package/template/src/components/participants/Participant.tsx +45 -16
  238. package/template/src/components/participants/ParticipantSectionTitle.tsx +5 -2
  239. package/template/src/components/participants/ScreenshareParticipants.tsx +17 -19
  240. package/template/src/components/participants/UserActionMenuOptions.tsx +173 -62
  241. package/template/src/components/participants/WaitingRoomParticipants.tsx +74 -0
  242. package/template/src/components/popups/InvitePopup.tsx +110 -45
  243. package/template/src/components/popups/StartScreenSharePopup.native.tsx +182 -0
  244. package/template/src/components/popups/StartScreenSharePopup.tsx +6 -0
  245. package/template/src/components/popups/StopRecordingPopup.tsx +11 -5
  246. package/template/src/components/popups/StopScreenSharePopup.native.tsx +135 -0
  247. package/template/src/components/popups/StopScreenSharePopup.tsx +6 -0
  248. package/template/src/components/popups/WhiteboardClearAllPopup.tsx +123 -0
  249. package/template/src/components/precall/LocalMute.tsx +69 -45
  250. package/template/src/components/precall/PermissionHelper.tsx +56 -28
  251. package/template/src/components/precall/PreCallSettings.tsx +1 -0
  252. package/template/src/components/precall/VideoFallback.tsx +173 -0
  253. package/template/src/components/precall/VideoPreview.native.tsx +19 -53
  254. package/template/src/components/precall/VideoPreview.tsx +29 -164
  255. package/template/src/components/precall/index.tsx +2 -0
  256. package/template/src/components/precall/joinCallBtn.native.tsx +12 -5
  257. package/template/src/components/precall/joinCallBtn.tsx +13 -4
  258. package/template/src/components/precall/joinWaitingRoomBtn.native.tsx +210 -0
  259. package/template/src/components/precall/joinWaitingRoomBtn.tsx +250 -0
  260. package/template/src/components/precall/meetingTitle.tsx +37 -11
  261. package/template/src/components/precall/selectDevice.tsx +5 -5
  262. package/template/src/components/precall/textInput.tsx +17 -19
  263. package/template/src/components/precall/usePreCall.tsx +33 -1
  264. package/template/src/components/recording-bot/RecordingBotRoute.tsx +42 -0
  265. package/template/src/components/recordings/RecordingsDateTable.tsx +62 -0
  266. package/template/src/components/recordings/RecordingsModal.tsx +135 -0
  267. package/template/src/components/recordings/ViewRecordingsModal.tsx +51 -0
  268. package/template/src/components/recordings/recording-table.tsx +154 -0
  269. package/template/src/components/recordings/style.ts +183 -0
  270. package/template/src/components/recordings/utils.ts +80 -0
  271. package/template/src/components/room-info/useRoomInfo.tsx +128 -0
  272. package/template/src/components/{meeting-info/useSetMeetingInfo.tsx → room-info/useSetRoomInfo.tsx} +12 -12
  273. package/template/src/components/useShareLink.tsx +28 -63
  274. package/template/src/components/useUserPreference.tsx +82 -16
  275. package/template/src/components/useVideoCall.tsx +93 -1
  276. package/template/src/components/virtual-background/VBButton.tsx +64 -0
  277. package/template/src/components/virtual-background/VBCard.native.tsx +282 -0
  278. package/template/src/components/virtual-background/VBCard.tsx +272 -0
  279. package/template/src/components/virtual-background/VBPanel.tsx +279 -0
  280. package/template/src/components/virtual-background/VButils.native.ts +37 -0
  281. package/template/src/components/virtual-background/VButils.ts +104 -0
  282. package/template/src/components/virtual-background/VideoPreview.native.tsx +43 -0
  283. package/template/src/components/virtual-background/VideoPreview.tsx +106 -0
  284. package/template/src/components/virtual-background/imagePaths.ts +87 -0
  285. package/template/src/components/virtual-background/images/beachImageBase64.ts +1 -0
  286. package/template/src/components/virtual-background/images/bedroomImageBase64.ts +1 -0
  287. package/template/src/components/virtual-background/images/bookImageBase64.ts +1 -0
  288. package/template/src/components/virtual-background/images/earthImageBase64.ts +1 -0
  289. package/template/src/components/virtual-background/images/index.ts +37 -0
  290. package/template/src/components/virtual-background/images/lampImageBase64.ts +1 -0
  291. package/template/src/components/virtual-background/images/mountainsImageBase64.ts +1 -0
  292. package/template/src/components/virtual-background/images/office1ImageBase64.ts +1 -0
  293. package/template/src/components/virtual-background/images/officeImageBase64.ts +1 -0
  294. package/template/src/components/virtual-background/images/plantsImageBase64.ts +1 -0
  295. package/template/src/components/virtual-background/images/skyImageBase64.ts +1 -0
  296. package/template/src/components/virtual-background/images/wallImageBase64.ts +1 -0
  297. package/template/src/components/virtual-background/useVB.native.tsx +185 -0
  298. package/template/src/components/virtual-background/useVB.tsx +267 -0
  299. package/template/src/components/whiteboard/StrokeWidthTool.tsx +137 -0
  300. package/template/src/components/whiteboard/WhiteboardButton.tsx +93 -0
  301. package/template/src/components/whiteboard/WhiteboardCanvas.tsx +99 -0
  302. package/template/src/components/whiteboard/WhiteboardConfigure.native.tsx +148 -0
  303. package/template/src/components/whiteboard/WhiteboardConfigure.tsx +446 -0
  304. package/template/src/components/whiteboard/WhiteboardCursor.tsx +152 -0
  305. package/template/src/components/whiteboard/WhiteboardToolBox.tsx +1246 -0
  306. package/template/src/components/whiteboard/WhiteboardView.native.tsx +188 -0
  307. package/template/src/components/whiteboard/WhiteboardView.tsx +81 -0
  308. package/template/src/components/whiteboard/WhiteboardWidget.tsx +685 -0
  309. package/template/src/components/whiteboard/WhiteboardWrapper.tsx +38 -0
  310. package/template/src/language/default-labels/commonLabels.ts +51 -14
  311. package/template/src/language/default-labels/createScreenLabels.ts +97 -17
  312. package/template/src/language/default-labels/joinScreenLabels.ts +45 -6
  313. package/template/src/language/default-labels/precallScreenLabels.ts +149 -25
  314. package/template/src/language/default-labels/shareLinkScreenLabels.ts +85 -37
  315. package/template/src/language/default-labels/videoCallScreenLabels.ts +1195 -158
  316. package/template/src/pages/Create.tsx +136 -106
  317. package/template/src/pages/Endcall.tsx +2 -2
  318. package/template/src/pages/Join.tsx +82 -40
  319. package/template/src/pages/Login.tsx +26 -0
  320. package/template/src/pages/VideoCall.tsx +329 -127
  321. package/template/src/pages/video-call/ActionSheet.native.tsx +54 -6
  322. package/template/src/pages/video-call/ActionSheet.tsx +55 -15
  323. package/template/src/pages/video-call/ActionSheetContent.tsx +498 -308
  324. package/template/src/pages/video-call/ActionSheetHandle.tsx +7 -1
  325. package/template/src/pages/video-call/DefaultLayouts.ts +20 -8
  326. package/template/src/pages/video-call/NameWithMicIcon.tsx +41 -64
  327. package/template/src/pages/video-call/PinchableView.tsx +119 -0
  328. package/template/src/pages/video-call/RenderComponent.tsx +14 -30
  329. package/template/src/pages/video-call/SidePanelHeader.tsx +227 -29
  330. package/template/src/pages/video-call/VideoCallMobileView.tsx +231 -89
  331. package/template/src/pages/video-call/VideoCallScreen.native.tsx +3 -2
  332. package/template/src/pages/video-call/VideoCallScreen.tsx +233 -84
  333. package/template/src/pages/video-call/VideoCallScreenWrapper.tsx +41 -0
  334. package/template/src/pages/video-call/VideoComponent.tsx +60 -8
  335. package/template/src/pages/video-call/VideoRenderer.tsx +343 -57
  336. package/template/src/pages/video-call/VisibilitySensor.tsx +104 -0
  337. package/template/src/pages/video-call/ZoomableWrapper.native.tsx +34 -0
  338. package/template/src/pages/video-call/ZoomableWrapper.tsx +5 -0
  339. package/template/src/pages/video-call/index.ts +42 -8
  340. package/template/src/rtm/RTMEngine.ts +17 -4
  341. package/template/src/rtm-events/constants.ts +21 -3
  342. package/template/src/rtm-events-api/Events.ts +7 -4
  343. package/template/src/rtm-events-api/LocalEvents.ts +14 -0
  344. package/template/src/rtm-events-api/types.ts +5 -5
  345. package/template/src/selection.json +1 -0
  346. package/template/src/subComponents/ChatBubble.tsx +87 -67
  347. package/template/src/subComponents/ChatContainer.tsx +70 -49
  348. package/template/src/subComponents/ChatInput.ios.tsx +32 -85
  349. package/template/src/subComponents/ChatInput.tsx +31 -80
  350. package/template/src/subComponents/Checkbox.native.tsx +46 -46
  351. package/template/src/subComponents/Checkbox.tsx +7 -6
  352. package/template/src/subComponents/CopyJoinInfo.tsx +31 -11
  353. package/template/src/subComponents/EndcallPopup.tsx +83 -12
  354. package/template/src/subComponents/FallbackLogo.tsx +2 -2
  355. package/template/src/subComponents/LanguageSelector.tsx +34 -30
  356. package/template/src/subComponents/LayoutIconButton.tsx +34 -17
  357. package/template/src/subComponents/LayoutIconDropdown.tsx +21 -8
  358. package/template/src/subComponents/Loading.tsx +60 -0
  359. package/template/src/subComponents/LocalAudioMute.tsx +87 -34
  360. package/template/src/subComponents/LocalEndCall.tsx +61 -24
  361. package/template/src/subComponents/LocalSwitchCamera.tsx +57 -13
  362. package/template/src/subComponents/LocalVideoMute.tsx +105 -36
  363. package/template/src/subComponents/LogoutButton.tsx +1 -1
  364. package/template/src/subComponents/NetworkQualityPill.tsx +22 -38
  365. package/template/src/subComponents/Recording.tsx +29 -9
  366. package/template/src/subComponents/RemoteAudioMute.tsx +5 -5
  367. package/template/src/subComponents/RemoteMutePopup.tsx +55 -14
  368. package/template/src/subComponents/RemoteVideoMute.tsx +5 -5
  369. package/template/src/subComponents/RemoveMeetingPopup.tsx +19 -6
  370. package/template/src/subComponents/RemoveScreensharePopup.tsx +20 -5
  371. package/template/src/subComponents/ScreenShareNotice.tsx +11 -6
  372. package/template/src/subComponents/SelectDevice.tsx +103 -34
  373. package/template/src/subComponents/SelectDeviceSettings.backup.tsx +9 -6
  374. package/template/src/subComponents/SidePanelButtons.ts +0 -3
  375. package/template/src/subComponents/SidePanelEnum.tsx +2 -0
  376. package/template/src/subComponents/SidePanelHeader.tsx +97 -63
  377. package/template/src/subComponents/ToastConfig.tsx +70 -61
  378. package/template/src/subComponents/caption/Caption.tsx +132 -0
  379. package/template/src/subComponents/caption/CaptionContainer.tsx +302 -0
  380. package/template/src/subComponents/caption/CaptionIcon.tsx +111 -0
  381. package/template/src/subComponents/caption/CaptionText.tsx +182 -0
  382. package/template/src/subComponents/caption/DownloadTranscriptBtn.tsx +65 -0
  383. package/template/src/subComponents/caption/LanguageSelectorPopup.tsx +192 -0
  384. package/template/src/subComponents/caption/Transcript.tsx +452 -0
  385. package/template/src/subComponents/caption/TranscriptIcon.tsx +123 -0
  386. package/template/src/subComponents/caption/TranscriptText.tsx +98 -0
  387. package/template/src/subComponents/caption/index.ts +3 -0
  388. package/template/src/subComponents/caption/proto/ptoto.js +91 -0
  389. package/template/src/subComponents/caption/proto/test.proto +23 -0
  390. package/template/src/subComponents/caption/useCaption.tsx +123 -0
  391. package/template/src/subComponents/caption/useCaptionWidth.ts +27 -0
  392. package/template/src/subComponents/caption/useSTTAPI.tsx +179 -0
  393. package/template/src/subComponents/caption/useStreamMessageUtils.native.ts +211 -0
  394. package/template/src/subComponents/caption/useStreamMessageUtils.ts +235 -0
  395. package/template/src/subComponents/caption/useTranscriptDownload.native.ts +63 -0
  396. package/template/src/subComponents/caption/useTranscriptDownload.ts +52 -0
  397. package/template/src/subComponents/caption/utils.ts +126 -0
  398. package/template/src/subComponents/chat/ChatParticipants.tsx +60 -24
  399. package/template/src/subComponents/livestream/ApprovedLiveStreamControlsView.tsx +2 -2
  400. package/template/src/subComponents/livestream/CurrentLiveStreamRequestsView.tsx +19 -20
  401. package/template/src/subComponents/livestream/controls/LocalRaiseHand.tsx +66 -35
  402. package/template/src/subComponents/livestream/controls/RemoteLiveStreamApprovedRequestRecall.tsx +3 -2
  403. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestApprove.tsx +10 -6
  404. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestReject.tsx +28 -19
  405. package/template/src/subComponents/recording/useIsRecordingBot.tsx +38 -0
  406. package/template/src/subComponents/recording/useRecording.tsx +251 -138
  407. package/template/src/subComponents/recording/useRecordingLayoutQuery.tsx +0 -1
  408. package/template/src/subComponents/screenshare/ScreenshareButton.tsx +39 -15
  409. package/template/src/subComponents/screenshare/ScreenshareConfigure.native.tsx +275 -69
  410. package/template/src/subComponents/screenshare/ScreenshareConfigure.tsx +193 -124
  411. package/template/src/subComponents/screenshare/useScreenshare.tsx +2 -0
  412. package/template/src/subComponents/waiting-rooms/WaitingRoomControls.tsx +85 -0
  413. package/template/src/subComponents/waiting-rooms/useWaitingRoomAPI.ts +75 -0
  414. package/template/src/theme/index.ts +13 -0
  415. package/template/src/utils/SdkEvents.ts +37 -14
  416. package/template/src/utils/SdkMethodEvents.ts +101 -0
  417. package/template/src/utils/axiomLogger.ts +117 -0
  418. package/template/src/utils/book.jpg +0 -0
  419. package/template/src/utils/common.tsx +118 -6
  420. package/template/src/utils/constants.ts +4 -0
  421. package/template/src/utils/getCustomRoute.ts +7 -0
  422. package/template/src/utils/index.tsx +34 -0
  423. package/template/src/utils/useActionSheet.tsx +50 -0
  424. package/template/src/utils/useActiveSpeaker.ts +38 -0
  425. package/template/src/utils/useAppState.ts +17 -0
  426. package/template/src/utils/useAsyncEffect.ts +138 -0
  427. package/template/src/utils/{useCreateMeeting.ts → useCreateRoom.ts} +27 -26
  428. package/template/src/utils/useEndCall.ts +65 -0
  429. package/template/src/utils/useFindActiveSpeaker.native.ts +4 -0
  430. package/template/src/utils/useFindActiveSpeaker.ts +335 -0
  431. package/template/src/utils/useGetMeetingPhrase.ts +10 -10
  432. package/template/src/utils/useIsAudioEnabled.ts +3 -3
  433. package/template/src/utils/useIsLocalUserSpeaking.native.ts +4 -0
  434. package/template/src/utils/useIsLocalUserSpeaking.ts +103 -0
  435. package/template/src/utils/useIsPSTN.ts +3 -3
  436. package/template/src/utils/useIsVideoEnabled.ts +3 -3
  437. package/template/src/utils/useJoinRoom.ts +199 -0
  438. package/template/src/utils/{useIsActiveSpeaker.ts → useLocalAudio.ts} +23 -12
  439. package/template/src/{components/OAuth.tsx → utils/useMenu.tsx} +16 -15
  440. package/template/src/utils/useModal.tsx +8 -0
  441. package/template/src/utils/useMutePSTN.ts +2 -2
  442. package/template/src/utils/useMuteToggleLocal.ts +121 -96
  443. package/template/src/utils/useRemoteEndCall.ts +4 -4
  444. package/template/src/utils/useRemoteEndScreenshare.ts +4 -4
  445. package/template/src/utils/useRemoteMute.ts +7 -7
  446. package/template/src/utils/useRemoteRequest.ts +7 -7
  447. package/template/src/utils/useSearchParams.tsx +28 -0
  448. package/template/src/utils/useString.ts +13 -3
  449. package/template/src/utils/useSwitchCamera.native.tsx +25 -0
  450. package/template/src/{subComponents/screenshare/ScreenshareButton.native.tsx → utils/useSwitchCamera.tsx} +12 -11
  451. package/template/src/utils/useToolbar.tsx +59 -0
  452. package/template/src/wasms/agora-virtual-background.wasm +0 -0
  453. package/template/static.d.ts +42 -0
  454. package/template/tsconfig_rsdk_index.json +3 -3
  455. package/template/tsconfig_wsdk_index.json +1 -1
  456. package/template/web/index.html +20 -0
  457. package/template/webpack.commons.js +21 -10
  458. package/template/webpack.rsdk.config.js +1 -2
  459. package/template/webpack.web.config.js +7 -3
  460. package/template/_buckconfig +0 -6
  461. package/template/_gitattributes +0 -1
  462. package/template/agora-rn-uikit/src/Contexts/RenderContext.tsx +0 -10
  463. package/template/agora-rn-uikit/src/Reducer/ActiveSpeakerDetected.ts +0 -11
  464. package/template/android/app/_BUCK +0 -55
  465. package/template/android/app/build_defs.bzl +0 -19
  466. package/template/bridge/rtc/webNg/LocalView.tsx +0 -20
  467. package/template/ios/HelloWorld/AppDelegate.m +0 -74
  468. package/template/src/components/OAuth.electron.tsx +0 -41
  469. package/template/src/components/OAuth.native.tsx +0 -55
  470. package/template/src/components/OAuthConfig.ts +0 -77
  471. package/template/src/components/StoreToken.tsx +0 -39
  472. package/template/src/components/meeting-info/useMeetingInfo.tsx +0 -70
  473. package/template/src/pages/video-call/CustomUserContextHolder.tsx +0 -20
  474. package/template/src/utils/useButtonTemplate.tsx +0 -44
  475. package/template/src/utils/useJoinMeeting.ts +0 -132
@@ -15,7 +15,7 @@ import {UidType} from '../../agora-rn-uikit';
15
15
  import useRemoteMute, {MUTE_REMOTE_TYPE} from '../utils/useRemoteMute';
16
16
  import IconButton from '../atoms/IconButton';
17
17
  import RemoteMutePopup from './RemoteMutePopup';
18
- import {useRender} from 'customization-api';
18
+ import {I18nMuteType, useContent} from 'customization-api';
19
19
  import {calculatePosition} from '../utils/common';
20
20
  import useRemoteRequest, {REQUEST_REMOTE_TYPE} from '../utils/useRemoteRequest';
21
21
  /**
@@ -36,7 +36,7 @@ const RemoteVideoMute = (props: RemoteVideoMuteProps) => {
36
36
  const requestRemoteVideo = useRemoteRequest();
37
37
  const [showModal, setShowModal] = useState(false);
38
38
  const [pos, setPos] = useState({});
39
- const {renderList} = useRender();
39
+ const {defaultContent} = useContent();
40
40
  const {width: globalWidth, height: globalHeight} = useWindowDimensions();
41
41
  const onPress = () => {
42
42
  props?.video
@@ -48,10 +48,10 @@ const RemoteVideoMute = (props: RemoteVideoMuteProps) => {
48
48
  <>
49
49
  <RemoteMutePopup
50
50
  action={props?.video ? 'mute' : 'request'}
51
- type="video"
51
+ type={I18nMuteType.video}
52
52
  actionMenuVisible={showModal}
53
53
  setActionMenuVisible={setShowModal}
54
- name={renderList[props.uid]?.name}
54
+ name={defaultContent[props.uid]?.name}
55
55
  modalPosition={pos}
56
56
  onMutePress={onPress}
57
57
  />
@@ -61,7 +61,7 @@ const RemoteVideoMute = (props: RemoteVideoMuteProps) => {
61
61
  backgroundColor: $config.ICON_BG_COLOR,
62
62
  borderRadius: 20,
63
63
  }}
64
- setRef={(ref) => (btnRef.current = ref)}
64
+ setRef={ref => (btnRef.current = ref)}
65
65
  disabled={!isHost}
66
66
  onPress={() => {
67
67
  btnRef?.current?.measure(
@@ -6,6 +6,13 @@ import TertiaryButton from '../atoms/TertiaryButton';
6
6
  import PrimaryButton from '../atoms/PrimaryButton';
7
7
  import ThemeConfig from '../theme';
8
8
  import {useIsDesktop} from '../utils/common';
9
+ import {useString} from '../utils/useString';
10
+ import {
11
+ removeUserFromRoomPopupHeading,
12
+ removeUserFromRoomPopupPrimaryBtnText,
13
+ removeUserFromRoomPopupSubHeading,
14
+ } from '../language/default-labels/videoCallScreenLabels';
15
+ import {cancelText} from '../language/default-labels/commonLabels';
9
16
 
10
17
  interface RemoveMeetingPopupProps {
11
18
  modalVisible: boolean;
@@ -15,20 +22,26 @@ interface RemoveMeetingPopupProps {
15
22
  }
16
23
  const RemoveMeetingPopup = (props: RemoveMeetingPopupProps) => {
17
24
  const isDesktop = useIsDesktop()('popup');
18
- const removeMeetingLabelHeading = 'Remove ' + props.username + '?';
19
- const removeMeetingLabelSubHeading = `Once removed, ${props.username} will still be able to rejoin the meeting later.`;
25
+ const removeMeetingLabelHeading = useString(removeUserFromRoomPopupHeading);
26
+ const removeMeetingLabelSubHeading = useString(
27
+ removeUserFromRoomPopupSubHeading,
28
+ );
20
29
 
21
- const cancelBtnLabel = 'CANCEL';
22
- const removeBtnLabel = 'REMOVE';
30
+ const cancelBtnLabel = useString(cancelText)();
31
+ const removeBtnLabel = useString(removeUserFromRoomPopupPrimaryBtnText)();
23
32
  return (
24
33
  <Popup
25
34
  modalVisible={props.modalVisible}
26
35
  setModalVisible={props.setModalVisible}
27
36
  showCloseIcon={false}
28
37
  contentContainerStyle={styles.contentContainer}>
29
- <Text style={styles.heading}>{removeMeetingLabelHeading}</Text>
38
+ <Text style={styles.heading}>
39
+ {removeMeetingLabelHeading(props?.username)}
40
+ </Text>
30
41
  <Spacer size={8} />
31
- <Text style={styles.subHeading}>{removeMeetingLabelSubHeading}</Text>
42
+ <Text style={styles.subHeading}>
43
+ {removeMeetingLabelSubHeading(props?.username)}
44
+ </Text>
32
45
  <Spacer size={32} />
33
46
  <View style={isDesktop ? styles.btnContainer : styles.btnContainerMobile}>
34
47
  <View style={isDesktop && {flex: 1}}>
@@ -6,6 +6,13 @@ import TertiaryButton from '../atoms/TertiaryButton';
6
6
  import PrimaryButton from '../atoms/PrimaryButton';
7
7
  import ThemeConfig from '../theme';
8
8
  import {useIsDesktop} from '../utils/common';
9
+ import {useString} from '../utils/useString';
10
+ import {
11
+ removeScreenshareFromRoomPopupHeading,
12
+ removeScreenshareFromRoomPopupPrimaryBtnText,
13
+ removeScreenshareFromRoomPopupSubHeading,
14
+ } from '../language/default-labels/videoCallScreenLabels';
15
+ import {cancelText} from '../language/default-labels/commonLabels';
9
16
 
10
17
  interface RemoveScreensharePopupProps {
11
18
  modalVisible: boolean;
@@ -15,11 +22,17 @@ interface RemoveScreensharePopupProps {
15
22
  }
16
23
  const RemoveScreensharePopup = (props: RemoveScreensharePopupProps) => {
17
24
  const isDesktop = useIsDesktop()('popup');
18
- const removeMeetingLabelHeading = 'Remove Screenshare?';
19
- const removeMeetingLabelSubHeading = `Once removed, ${props.username} will still be able to screen share later.`;
25
+ const removeMeetingLabelHeading = useString(
26
+ removeScreenshareFromRoomPopupHeading,
27
+ )();
28
+ const removeMeetingLabelSubHeading = useString(
29
+ removeScreenshareFromRoomPopupSubHeading,
30
+ );
20
31
 
21
- const cancelBtnLabel = 'CANCEL';
22
- const removeBtnLabel = 'REMOVE';
32
+ const cancelBtnLabel = useString(cancelText)();
33
+ const removeBtnLabel = useString(
34
+ removeScreenshareFromRoomPopupPrimaryBtnText,
35
+ )();
23
36
  return (
24
37
  <Popup
25
38
  modalVisible={props.modalVisible}
@@ -28,7 +41,9 @@ const RemoveScreensharePopup = (props: RemoveScreensharePopupProps) => {
28
41
  contentContainerStyle={styles.contentContainer}>
29
42
  <Text style={styles.heading}>{removeMeetingLabelHeading}</Text>
30
43
  <Spacer size={8} />
31
- <Text style={styles.subHeading}>{removeMeetingLabelSubHeading}</Text>
44
+ <Text style={styles.subHeading}>
45
+ {removeMeetingLabelSubHeading(props?.username)}
46
+ </Text>
32
47
  <Spacer size={32} />
33
48
  <View style={isDesktop ? styles.btnContainer : styles.btnContainerMobile}>
34
49
  <View style={isDesktop && {flex: 1}}>
@@ -20,6 +20,10 @@ import ThemeConfig from '../theme';
20
20
  import hexadecimalTransparency from '../utils/hexadecimalTransparency';
21
21
  import {useLayout} from 'customization-api';
22
22
  import {getPinnedLayoutName} from '../pages/video-call/DefaultLayouts';
23
+ import {
24
+ videoRoomScreenshareOverlayText,
25
+ videoRoomScreenshareStopSharingBtnText,
26
+ } from '../language/default-labels/videoCallScreenLabels';
23
27
  /**
24
28
  *
25
29
  * @param uid - uid of the user
@@ -28,13 +32,14 @@ import {getPinnedLayoutName} from '../pages/video-call/DefaultLayouts';
28
32
  *
29
33
  */
30
34
  function ScreenShareNotice({uid, isMax}: {uid: UidType; isMax: boolean}) {
31
- //commented for v1 release
32
- // const screensharingActiveOverlayLabel = useString(
33
- // 'screensharingActiveOverlayLabel',
34
- // )();
35
+ const screensharingActiveOverlayLabel = useString(
36
+ videoRoomScreenshareOverlayText,
37
+ )();
38
+ const stopsharingbtnText = useString(
39
+ videoRoomScreenshareStopSharingBtnText,
40
+ )();
35
41
  const {currentLayout} = useLayout();
36
42
  const {stopUserScreenShare} = useScreenshare();
37
- const screensharingActiveOverlayLabel = 'You are sharing your screen';
38
43
  const {rtcProps} = useContext(PropsContext);
39
44
  return uid === rtcProps?.screenShareUid ? (
40
45
  <View style={styles.screenSharingMessageContainer}>
@@ -61,7 +66,7 @@ function ScreenShareNotice({uid, isMax}: {uid: UidType; isMax: boolean}) {
61
66
  />
62
67
  </View>
63
68
  <View style={styles.btnTextContainer}>
64
- <Text style={styles.btnText}>Stop Sharing</Text>
69
+ <Text style={styles.btnText}>{stopsharingbtnText}</Text>
65
70
  </View>
66
71
  </TouchableOpacity>
67
72
  )}
@@ -13,7 +13,7 @@ import React, {useContext, useEffect, useState, useMemo} from 'react';
13
13
  import {StyleSheet, View, Text} from 'react-native';
14
14
  import {
15
15
  PropsContext,
16
- ClientRole,
16
+ ClientRoleType,
17
17
  LocalContext,
18
18
  PermissionState,
19
19
  LocalUserContext,
@@ -27,6 +27,20 @@ import {usePreCall} from '../components/precall/usePreCall';
27
27
  import ThemeConfig from '../theme';
28
28
  import {randomNameGenerator} from '../utils';
29
29
  import pendingStateUpdateHelper from '../utils/pendingStateUpdateHelper';
30
+ import InlineNotification from '../atoms/InlineNotification';
31
+ import {
32
+ settingsPanelCameraLabel,
33
+ settingsPanelLiveStreamingAttendeeInfo,
34
+ settingsPanelMicrophoneLabel,
35
+ settingsPanelNoCameraDetectedText,
36
+ settingsPanelNoCameraSelectedText,
37
+ settingsPanelNoMicrophoneDetectedText,
38
+ settingsPanelNoMicrophoneSelectedText,
39
+ settingsPanelNoSpeakerDetectedText,
40
+ settingsPanelSpeakerLabel,
41
+ settingsPanelSystemDefaultSpeakerText,
42
+ settingsPanelUpdatingText,
43
+ } from '../language/default-labels/precallScreenLabels';
30
44
  // import {dropdown} from '../../theme.json';
31
45
 
32
46
  /*
@@ -54,7 +68,10 @@ const useSelectDevice = (): [boolean, string] => {
54
68
  const [isPickerDisabled, setPickerDisabled] = React.useState<boolean>(false);
55
69
 
56
70
  React.useEffect(() => {
57
- if ($config.EVENT_MODE && rtcProps.role === ClientRole.Audience) {
71
+ if (
72
+ $config.EVENT_MODE &&
73
+ rtcProps.role === ClientRoleType.ClientRoleAudience
74
+ ) {
58
75
  setPickerDisabled(true);
59
76
  setBtnTheme('rgba(16, 16, 16, 0.3)');
60
77
  } else {
@@ -85,7 +102,7 @@ const SelectVideoDevice = (props: SelectVideoDeviceProps) => {
85
102
 
86
103
  const data = useMemo(() => {
87
104
  return deviceList
88
- .filter((device) => {
105
+ .filter(device => {
89
106
  if (device.kind === 'videoinput') {
90
107
  return true;
91
108
  }
@@ -102,7 +119,7 @@ const SelectVideoDevice = (props: SelectVideoDeviceProps) => {
102
119
 
103
120
  useEffect(() => {
104
121
  const selectedDeviceExists = Boolean(
105
- data.find((device) => device.value === selectedCam),
122
+ data.find(device => device.value === selectedCam),
106
123
  );
107
124
  if (isPendingUpdate) {
108
125
  selectedDeviceExists && setIsPendingUpdate(false);
@@ -114,11 +131,16 @@ const SelectVideoDevice = (props: SelectVideoDeviceProps) => {
114
131
  const isPermissionGranted =
115
132
  local.permissionStatus === PermissionState.GRANTED_FOR_CAM_AND_MIC ||
116
133
  local.permissionStatus === PermissionState.GRANTED_FOR_CAM_ONLY;
134
+
135
+ const cameraLabel = useString(settingsPanelCameraLabel)();
136
+ const noCameraLabel = useString(settingsPanelNoCameraDetectedText)();
137
+ const noCameraSelectedLabel = useString(settingsPanelNoCameraSelectedText)();
138
+ const updateLabel = useString(settingsPanelUpdatingText)();
117
139
  return props?.render ? (
118
140
  props.render(selectedCam, setSelectedCam, deviceList, isPickerDisabled)
119
141
  ) : (
120
142
  <>
121
- <Text style={style.label}>Camera</Text>
143
+ <Text style={style.label}>{cameraLabel}</Text>
122
144
  <Dropdown
123
145
  icon={
124
146
  isPendingUpdate && isPermissionGranted
@@ -130,10 +152,10 @@ const SelectVideoDevice = (props: SelectVideoDeviceProps) => {
130
152
  enabled={!isPickerDisabled}
131
153
  label={
132
154
  !isPermissionGranted || !data || !data.length
133
- ? 'No Camera Detected'
155
+ ? noCameraLabel
134
156
  : isPendingUpdate
135
- ? 'Updating'
136
- : 'No Camera Selected'
157
+ ? updateLabel
158
+ : noCameraSelectedLabel
137
159
  }
138
160
  data={isPermissionGranted ? data : []}
139
161
  onSelect={({label, value}) => {
@@ -172,7 +194,7 @@ const SelectAudioDevice = (props: SelectAudioDeviceProps) => {
172
194
 
173
195
  const data = useMemo(() => {
174
196
  return deviceList
175
- .filter((device) => {
197
+ .filter(device => {
176
198
  if (device.kind === 'audioinput') {
177
199
  return true;
178
200
  }
@@ -189,7 +211,7 @@ const SelectAudioDevice = (props: SelectAudioDeviceProps) => {
189
211
 
190
212
  useEffect(() => {
191
213
  const selectedDeviceExists = Boolean(
192
- data.find((device) => device.value === selectedMic),
214
+ data.find(device => device.value === selectedMic),
193
215
  );
194
216
  if (isPendingUpdate) {
195
217
  selectedDeviceExists && setIsPendingUpdate(false);
@@ -201,11 +223,20 @@ const SelectAudioDevice = (props: SelectAudioDeviceProps) => {
201
223
  const isPermissionGranted =
202
224
  local.permissionStatus === PermissionState.GRANTED_FOR_CAM_AND_MIC ||
203
225
  local.permissionStatus === PermissionState.GRANTED_FOR_MIC_ONLY;
226
+
227
+ const microphoneLabel = useString(settingsPanelMicrophoneLabel)();
228
+ const noMicrophoneDetectedLabel = useString(
229
+ settingsPanelNoMicrophoneDetectedText,
230
+ )();
231
+ const updateLabel = useString(settingsPanelUpdatingText)();
232
+ const noMicrophoneSelectedLabel = useString(
233
+ settingsPanelNoMicrophoneSelectedText,
234
+ )();
204
235
  return props?.render ? (
205
236
  props.render(selectedMic, setSelectedMic, deviceList, isPickerDisabled)
206
237
  ) : (
207
238
  <View>
208
- <Text style={style.label}>Microphone</Text>
239
+ <Text style={style.label}>{microphoneLabel}</Text>
209
240
  <Dropdown
210
241
  icon={
211
242
  isPendingUpdate && isPermissionGranted
@@ -218,10 +249,10 @@ const SelectAudioDevice = (props: SelectAudioDeviceProps) => {
218
249
  selectedValue={selectedMic}
219
250
  label={
220
251
  !isPermissionGranted || !data || !data.length
221
- ? 'No Microphone Detected'
252
+ ? noMicrophoneDetectedLabel
222
253
  : isPendingUpdate
223
- ? 'Updating'
224
- : 'No Microphone Selected'
254
+ ? updateLabel
255
+ : noMicrophoneSelectedLabel
225
256
  }
226
257
  data={isPermissionGranted ? data : []}
227
258
  onSelect={({label, value}) => {
@@ -251,7 +282,7 @@ interface SelectSpeakerDeviceProps {
251
282
  }
252
283
 
253
284
  const SelectSpeakerDevice = (props: SelectSpeakerDeviceProps) => {
254
- const {selectedSpeaker, setSelectedSpeaker, deviceList} =
285
+ const {selectedSpeaker, setSelectedSpeaker, deviceList, isChrome} =
255
286
  useContext(DeviceContext);
256
287
  const local = useContext(LocalContext);
257
288
  const [isPickerDisabled, btnTheme] = useSelectDevice();
@@ -261,12 +292,12 @@ const SelectSpeakerDevice = (props: SelectSpeakerDeviceProps) => {
261
292
 
262
293
  const data = useMemo(() => {
263
294
  return deviceList
264
- .filter((device) => {
295
+ .filter(device => {
265
296
  if (device.kind === 'audiooutput') {
266
297
  return true;
267
298
  }
268
299
  })
269
- ?.map((device) => {
300
+ ?.map(device => {
270
301
  if (device.kind === 'audiooutput') {
271
302
  return {
272
303
  label: applyDefaultPrefixConditionally(device),
@@ -278,7 +309,7 @@ const SelectSpeakerDevice = (props: SelectSpeakerDeviceProps) => {
278
309
 
279
310
  useEffect(() => {
280
311
  const selectedDeviceExists = Boolean(
281
- data.find((device) => device.value === selectedSpeaker),
312
+ data.find(device => device.value === selectedSpeaker),
282
313
  );
283
314
  if (isPendingUpdate) {
284
315
  selectedDeviceExists && setIsPendingUpdate(false);
@@ -287,6 +318,12 @@ const SelectSpeakerDevice = (props: SelectSpeakerDeviceProps) => {
287
318
  }
288
319
  }, [selectedSpeaker, data]);
289
320
 
321
+ const speakerLabel = useString(settingsPanelSpeakerLabel)();
322
+ const speakerDefaultLabel = useString(
323
+ settingsPanelSystemDefaultSpeakerText,
324
+ )();
325
+ const noSpeakerLabel = useString(settingsPanelNoSpeakerDetectedText)();
326
+ const updateLabel = useString(settingsPanelUpdatingText)();
290
327
  return props?.render ? (
291
328
  props.render(
292
329
  selectedSpeaker,
@@ -296,10 +333,10 @@ const SelectSpeakerDevice = (props: SelectSpeakerDeviceProps) => {
296
333
  )
297
334
  ) : (
298
335
  <View>
299
- <Text style={style.label}>Speaker</Text>
336
+ <Text style={style.label}>{speakerLabel}</Text>
300
337
  {(local.permissionStatus === PermissionState.GRANTED_FOR_CAM_AND_MIC ||
301
338
  local.permissionStatus === PermissionState.GRANTED_FOR_MIC_ONLY) &&
302
- (!data || data.length === 0) ? (
339
+ (!isChrome || !data || data.length === 0) ? (
303
340
  <Dropdown
304
341
  icon={props?.isIconDropdown ? 'speaker' : undefined}
305
342
  enabled={!isPickerDisabled}
@@ -308,7 +345,7 @@ const SelectSpeakerDevice = (props: SelectSpeakerDeviceProps) => {
308
345
  data={[
309
346
  {
310
347
  value: newRandomDeviceId,
311
- label: 'System Default Speaker Device',
348
+ label: speakerDefaultLabel,
312
349
  },
313
350
  ]}
314
351
  onSelect={({label, value}) => {
@@ -336,9 +373,9 @@ const SelectSpeakerDevice = (props: SelectSpeakerDeviceProps) => {
336
373
  selectedValue={selectedSpeaker}
337
374
  label={
338
375
  !data || !data.length
339
- ? 'No Speaker Detected'
376
+ ? noSpeakerLabel
340
377
  : isPendingUpdate
341
- ? 'Updating'
378
+ ? updateLabel
342
379
  : ''
343
380
  }
344
381
  data={data}
@@ -354,6 +391,7 @@ const SelectSpeakerDevice = (props: SelectSpeakerDeviceProps) => {
354
391
 
355
392
  interface SelectDeviceProps {
356
393
  isIconDropdown?: boolean;
394
+ isOnPrecall?: boolean;
357
395
  }
358
396
 
359
397
  const SelectDevice = (props: SelectDeviceProps) => {
@@ -361,7 +399,7 @@ const SelectDevice = (props: SelectDeviceProps) => {
361
399
  const {deviceList} = useContext(DeviceContext);
362
400
  const {setCameraAvailable, setMicAvailable, setSpeakerAvailable} =
363
401
  usePreCall();
364
-
402
+ const {isOnPrecall} = props;
365
403
  const [audioDevices, videoDevices, speakerDevices] = useMemo(
366
404
  () =>
367
405
  deviceList.reduce(
@@ -418,22 +456,53 @@ const SelectDevice = (props: SelectDeviceProps) => {
418
456
  }
419
457
  }, [speakerDevices]);
420
458
 
421
- //commented for v1 release
422
- // const settingScreenInfoMessage = useString('settingScreenInfoMessage')();
423
- // const settingScreenInfoMessage = $config.AUDIO_ROOM
424
- // ? 'Audio sharing is disabled for attendees. Raise hand to request permission to share.'
425
- // : 'Video and Audio sharing is disabled for attendees. Raise hand to request permission to share.';
426
- const settingScreenInfoMessage =
427
- 'Attendees need to raise their hand to access the devices.';
459
+ const settingScreenInfoMessage = useString(
460
+ settingsPanelLiveStreamingAttendeeInfo,
461
+ )();
462
+ if (isOnPrecall) {
463
+ return (
464
+ <>
465
+ <>
466
+ {$config.EVENT_MODE && isPickerDisabled && (
467
+ <>
468
+ <Spacer size={24} />
469
+ <InlineNotification
470
+ text={settingScreenInfoMessage}
471
+ warning={true}
472
+ customStyle={{
473
+ backgroundColor: 'rgba(255, 171, 0, 0.15)',
474
+ }}
475
+ />
476
+ </>
477
+ )}
478
+ <Spacer size={24} />
479
+ <SelectAudioDevice {...props} />
480
+ <Spacer size={24} />
481
+ <SelectSpeakerDevice {...props} />
482
+ <Spacer size={24} />
483
+ {!$config.AUDIO_ROOM && (
484
+ <>
485
+ <SelectVideoDevice {...props} />
486
+ <Spacer size={8} />
487
+ </>
488
+ )}
489
+ </>
490
+ </>
491
+ );
492
+ }
428
493
  return (
429
494
  <>
430
495
  <>
431
496
  {$config.EVENT_MODE && isPickerDisabled && (
432
497
  <>
433
498
  <Spacer size={24} />
434
- <View style={style.infoTxtContainer}>
435
- <Text style={style.infoTxt}>{settingScreenInfoMessage}</Text>
436
- </View>
499
+ <InlineNotification
500
+ text={settingScreenInfoMessage}
501
+ warning={true}
502
+ customStyle={{
503
+ backgroundColor: 'rgba(255, 171, 0, 0.15)',
504
+ }}
505
+ />
437
506
  </>
438
507
  )}
439
508
  <Spacer size={24} />
@@ -11,7 +11,7 @@
11
11
  */
12
12
  import React, {useContext, useEffect} from 'react';
13
13
  import {StyleSheet, View, Text} from 'react-native';
14
- import {PropsContext, ClientRole} from '../../agora-rn-uikit';
14
+ import {PropsContext, ClientRoleType} from '../../agora-rn-uikit';
15
15
  import DeviceContext from '../components/DeviceContext';
16
16
  import ColorContext from '../components/ColorContext';
17
17
  import {useString} from '../utils/useString';
@@ -30,7 +30,10 @@ const useSelectDevice = (): [boolean, string] => {
30
30
  const [btnTheme, setBtnTheme] = React.useState<string>(primaryColor);
31
31
  const [isPickerDisabled, setPickerDisabled] = React.useState<boolean>(false);
32
32
  React.useEffect(() => {
33
- if ($config.EVENT_MODE && rtcProps.role === ClientRole.Audience) {
33
+ if (
34
+ $config.EVENT_MODE &&
35
+ rtcProps.role === ClientRoleType.ClientRoleAudience
36
+ ) {
34
37
  setPickerDisabled(true);
35
38
  setBtnTheme('rgba(16, 16, 16, 0.3)');
36
39
  } else {
@@ -60,7 +63,7 @@ const SelectVideoDevice = (props: SelectVideoDeviceProps) => {
60
63
  return true;
61
64
  }
62
65
  })
63
- ?.map((device) => {
66
+ ?.map(device => {
64
67
  return {
65
68
  label: device.label,
66
69
  value: device.deviceId,
@@ -102,7 +105,7 @@ const SelectAudioDevice = (props: SelectAudioDeviceProps) => {
102
105
  const [isFocussed, setIsFocussed] = React.useState(false);
103
106
 
104
107
  const data = deviceList
105
- .filter((device) => {
108
+ .filter(device => {
106
109
  if (device.kind === 'audioinput') {
107
110
  return true;
108
111
  }
@@ -140,12 +143,12 @@ const SelectDeviceSettings = () => {
140
143
  const {deviceList} = useContext(DeviceContext);
141
144
  const {setCameraAvailable, setMicAvailable} = usePreCall();
142
145
 
143
- const audioDevices = deviceList.filter((device) => {
146
+ const audioDevices = deviceList.filter(device => {
144
147
  if (device.kind === 'audioinput') {
145
148
  return true;
146
149
  }
147
150
  });
148
- const videoDevices = deviceList.filter((device) => {
151
+ const videoDevices = deviceList.filter(device => {
149
152
  if (device.kind === 'videoinput') {
150
153
  return true;
151
154
  }
@@ -1,4 +1,3 @@
1
- import {ChatSendButton, ChatSendButtonProps} from './ChatInput';
2
1
  import {
3
2
  RemoteLiveStreamApprovedRequestRecall,
4
3
  RemoteLiveStreamRequestApprove,
@@ -23,7 +22,6 @@ type SidePanelButtonsArrayProps = [
23
22
  (props: RemoteLiveStreamApprovedRequestRecallProps) => JSX.Element,
24
23
  (props: RemoteLiveStreamControlProps) => JSX.Element,
25
24
  (props: RemoteLiveStreamControlProps) => JSX.Element,
26
- (props: ChatSendButtonProps) => JSX.Element,
27
25
  (props: MuteAllAudioButtonProps) => JSX.Element,
28
26
  (props: MuteAllVideoButtonProps) => JSX.Element,
29
27
  ];
@@ -34,7 +32,6 @@ export const SidePanelButtonsArray: SidePanelButtonsArrayProps = [
34
32
  RemoteLiveStreamApprovedRequestRecall,
35
33
  RemoteLiveStreamRequestApprove,
36
34
  RemoteLiveStreamRequestReject,
37
- ChatSendButton,
38
35
  MuteAllAudioButton,
39
36
  MuteAllVideoButton,
40
37
  ];
@@ -14,4 +14,6 @@ export enum SidePanelType {
14
14
  Participants,
15
15
  Chat,
16
16
  Settings,
17
+ Transcript,
18
+ VirtualBackground,
17
19
  }