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,7 +11,7 @@
11
11
  */
12
12
  import React, {useContext} from 'react';
13
13
  import {View, StyleSheet} from 'react-native';
14
- import {PropsContext, ClientRole} from '../../agora-rn-uikit';
14
+ import {PropsContext, ClientRoleType} from '../../agora-rn-uikit';
15
15
  import LocalAudioMute, {
16
16
  LocalAudioMuteProps,
17
17
  } from '../subComponents/LocalAudioMute';
@@ -22,7 +22,7 @@ import Recording, {RecordingButtonProps} from '../subComponents/Recording';
22
22
  import LiveStreamControls, {
23
23
  LiveStreamControlsProps,
24
24
  } from './livestream/views/LiveStreamControls';
25
- import {useMeetingInfo} from './meeting-info/useMeetingInfo';
25
+ import {useRoomInfo} from './room-info/useRoomInfo';
26
26
  import ScreenshareButton, {
27
27
  ScreenshareButtonProps,
28
28
  } from '../subComponents/screenshare/ScreenshareButton';
@@ -35,12 +35,13 @@ import hexadecimalTransparency from '../utils/hexadecimalTransparency';
35
35
  const Controls = () => {
36
36
  const {
37
37
  data: {isHost},
38
- } = useMeetingInfo();
38
+ } = useRoomInfo();
39
39
  const {rtcProps} = useContext(PropsContext);
40
40
 
41
41
  return (
42
42
  <View style={style.bottomBar}>
43
- {$config.EVENT_MODE && rtcProps.role == ClientRole.Audience ? (
43
+ {$config.EVENT_MODE &&
44
+ rtcProps.role == ClientRoleType.ClientRoleAudience ? (
44
45
  <LiveStreamControls showControls={true} />
45
46
  ) : (
46
47
  <>
@@ -51,7 +52,10 @@ const Controls = () => {
51
52
  */}
52
53
  {$config.EVENT_MODE && (
53
54
  <LiveStreamControls
54
- showControls={rtcProps?.role == ClientRole.Broadcaster && !isHost}
55
+ showControls={
56
+ rtcProps?.role == ClientRoleType.ClientRoleBroadcaster &&
57
+ !isHost
58
+ }
55
59
  />
56
60
  )}
57
61
  <View style={{alignSelf: 'center'}}>
@@ -11,10 +11,10 @@
11
11
  */
12
12
  import React from 'react';
13
13
  import KeepAwake from 'react-native-keep-awake';
14
- import {ClientRole} from '../../agora-rn-uikit';
14
+ import {ClientRoleType} from '../../agora-rn-uikit';
15
15
 
16
16
  interface Props {
17
- userRole: ClientRole;
17
+ userRole: ClientRoleType;
18
18
  }
19
19
  const DeviceConfigure: React.FC<Props> = (props: any) => {
20
20
  return (
@@ -17,7 +17,7 @@ import React, {
17
17
  useRef,
18
18
  useContext,
19
19
  } from 'react';
20
- import {ClientRole} from '../../agora-rn-uikit';
20
+ import {ClientRoleType, RtcContext} from '../../agora-rn-uikit';
21
21
  import DeviceContext from './DeviceContext';
22
22
  import AgoraRTC, {DeviceInfo} from 'agora-rtc-sdk-ng';
23
23
  import {useRtc} from 'customization-api';
@@ -29,6 +29,18 @@ import type RtcEngine from '../../bridge/rtc/webNg/';
29
29
  import ColorContext from './ColorContext';
30
30
  import {SdkApiContext} from './SdkApiContext';
31
31
  import SDKEvents from '../utils/SdkEvents';
32
+ import {getOS} from '../utils/common';
33
+ import LocalEventEmitter, {
34
+ LocalEventsEnum,
35
+ } from '../rtm-events-api/LocalEvents';
36
+ import {useString} from '../utils/useString';
37
+ import {
38
+ deviceDetectionSecondaryBtnText,
39
+ deviceDetectionCheckboxText,
40
+ deviceDetectionPrimaryBtnText,
41
+ deviceDetectionToastHeading,
42
+ deviceDetectionToastSubHeading,
43
+ } from '../language/default-labels/videoCallScreenLabels';
32
44
 
33
45
  const log = (...args: any[]) => {
34
46
  console.log('[DeviceConfigure] ', ...args);
@@ -37,19 +49,27 @@ const log = (...args: any[]) => {
37
49
  type WebRtcEngineInstance = InstanceType<typeof RtcEngine>;
38
50
 
39
51
  interface Props {
40
- userRole: ClientRole;
52
+ userRole: ClientRoleType;
41
53
  }
42
54
  export type deviceInfo = MediaDeviceInfo;
43
55
  export type deviceId = deviceInfo['deviceId'];
44
56
  export type deviceKind = deviceInfo['kind'];
45
57
 
46
58
  const DeviceConfigure: React.FC<Props> = (props: any) => {
47
- const rtc = useRtc();
59
+ const rtc = useContext(RtcContext);
48
60
  const [uiSelectedCam, setUiSelectedCam] = useState('');
49
61
  const [uiSelectedMic, setUiSelectedMic] = useState('');
50
62
  const [uiSelectedSpeaker, setUiSelectedSpeaker] = useState('');
51
63
  const [deviceList, setDeviceList] = useState<deviceInfo[]>([]);
52
64
 
65
+ const toastHeading = useString(deviceDetectionToastHeading);
66
+ const toastSubHeading = useString<{name: string; label: string}>(
67
+ deviceDetectionToastSubHeading,
68
+ );
69
+ const toastPrimaryBtnText = useString(deviceDetectionPrimaryBtnText)();
70
+ const toastCancelBtnText = useString(deviceDetectionSecondaryBtnText)();
71
+ const toastCheckboxBtnText = useString(deviceDetectionCheckboxText)();
72
+
53
73
  const micSelectInProgress = useRef(false);
54
74
  const micSelectQueue = useRef([]);
55
75
 
@@ -82,7 +102,7 @@ const DeviceConfigure: React.FC<Props> = (props: any) => {
82
102
 
83
103
  const isChrome = useMemo(() => {
84
104
  return (
85
- deviceList.filter((device) => device.deviceId === 'default').length > 0
105
+ deviceList.filter(device => device.deviceId === 'default').length > 0
86
106
  );
87
107
  }, [deviceList]);
88
108
 
@@ -100,7 +120,7 @@ const DeviceConfigure: React.FC<Props> = (props: any) => {
100
120
  ) => {
101
121
  // const {kind, deviceId} = device;
102
122
 
103
- setStore((prevState) => ({
123
+ setStore(prevState => ({
104
124
  ...prevState,
105
125
  activeDeviceId: {
106
126
  ...activeDeviceId,
@@ -119,7 +139,7 @@ const DeviceConfigure: React.FC<Props> = (props: any) => {
119
139
  // 'rememberedDevicesList',
120
140
  // JSON.stringify(rememberedDevicesList.current),
121
141
  // );
122
- setStore((prevState) => ({
142
+ setStore(prevState => ({
123
143
  ...prevState,
124
144
  rememberedDevicesList: {
125
145
  ...prevState.rememberedDevicesList,
@@ -133,12 +153,14 @@ const DeviceConfigure: React.FC<Props> = (props: any) => {
133
153
  }));
134
154
  };
135
155
 
136
- const {RtcEngine} = rtc as unknown as {RtcEngine: WebRtcEngineInstance};
137
- const {localStream} = RtcEngine;
156
+ const {RtcEngineUnsafe} = rtc as unknown as {
157
+ RtcEngineUnsafe: WebRtcEngineInstance;
158
+ };
159
+ const {localStream} = RtcEngineUnsafe;
138
160
 
139
161
  const refreshDeviceList = useCallback(async (noEmitLog?: boolean) => {
140
162
  let updatedDeviceList: MediaDeviceInfo[];
141
- await RtcEngine.getDevices(function (devices: deviceInfo[]) {
163
+ await RtcEngineUnsafe.getDevices(function (devices: deviceInfo[]) {
142
164
  !noEmitLog && log('Fetching all devices: ', devices);
143
165
  /**
144
166
  * Some browsers list the same microphone twice with different Id's,
@@ -173,14 +195,22 @@ const DeviceConfigure: React.FC<Props> = (props: any) => {
173
195
  const getAgoraTrackDeviceId = (type: 'audio' | 'video') => {
174
196
  const mutedState =
175
197
  //@ts-ignore
176
- type === 'audio' ? !RtcEngine.isAudioEnabled : !RtcEngine.isVideoEnabled;
198
+ type === 'audio'
199
+ ? //@ts-ignore
200
+ !RtcEngineUnsafe.isAudioEnabled
201
+ : //@ts-ignore
202
+ !RtcEngineUnsafe.isVideoEnabled;
177
203
 
178
204
  let currentDevice: string;
179
205
 
180
206
  if (mutedState) {
181
207
  currentDevice =
182
208
  //@ts-ignore
183
- type === 'audio' ? RtcEngine.audioDeviceId : RtcEngine.videoDeviceId;
209
+ type === 'audio'
210
+ ? //@ts-ignore
211
+ RtcEngineUnsafe.audioDeviceId
212
+ : //@ts-ignore
213
+ RtcEngineUnsafe.videoDeviceId;
184
214
  log(`Agora ${type} Engine is using`, currentDevice);
185
215
  } else {
186
216
  currentDevice = localStream[type]
@@ -212,7 +242,7 @@ const DeviceConfigure: React.FC<Props> = (props: any) => {
212
242
  break;
213
243
  case 'audiooutput':
214
244
  //@ts-ignore
215
- let speakerId = RtcEngine.speakerDeviceId;
245
+ let speakerId = RtcEngineUnsafe.speakerDeviceId;
216
246
  speakerId &&
217
247
  SDKEvents.emit('devices-selected-speaker-changed', speakerId);
218
248
  setUiSelectedSpeaker(speakerId);
@@ -221,7 +251,7 @@ const DeviceConfigure: React.FC<Props> = (props: any) => {
221
251
  micId = getAgoraTrackDeviceId('audio');
222
252
  camId = getAgoraTrackDeviceId('video');
223
253
  //@ts-ignore
224
- speakerId = RtcEngine.speakerDeviceId;
254
+ speakerId = RtcEngineUnsafe.speakerDeviceId;
225
255
 
226
256
  micId && SDKEvents.emit('devices-selected-microphone-changed', micId);
227
257
  setUiSelectedMic(micId);
@@ -249,7 +279,7 @@ const DeviceConfigure: React.FC<Props> = (props: any) => {
249
279
  switch (kind) {
250
280
  case 'audioinput':
251
281
  const audioInputFallbackDeviceId = deviceListLocal.find(
252
- (device) =>
282
+ device =>
253
283
  device.kind === 'audioinput' &&
254
284
  (isChrome ? device.deviceId === 'default' : true),
255
285
  )?.deviceId;
@@ -257,13 +287,13 @@ const DeviceConfigure: React.FC<Props> = (props: any) => {
257
287
  break;
258
288
  case 'videoinput':
259
289
  const videoInputFallbackDeviceId = deviceListLocal.find(
260
- (device) => device.kind === 'videoinput',
290
+ device => device.kind === 'videoinput',
261
291
  )?.deviceId;
262
292
  setSelectedCam(videoInputFallbackDeviceId);
263
293
  break;
264
294
  case 'audiooutput':
265
295
  const audioOutputFallbackDeviceId = deviceListLocal.find(
266
- (device) =>
296
+ device =>
267
297
  device.kind === 'audiooutput' &&
268
298
  (isChrome ? device.deviceId === 'default' : true),
269
299
  )?.deviceId;
@@ -277,7 +307,7 @@ const DeviceConfigure: React.FC<Props> = (props: any) => {
277
307
  deviceId: deviceId,
278
308
  deviceList: MediaDeviceInfo[],
279
309
  ) => {
280
- return deviceList.find((device) => device.deviceId === deviceId)
310
+ return deviceList.find(device => device.deviceId === deviceId)
281
311
  ? true
282
312
  : false;
283
313
  };
@@ -318,7 +348,7 @@ const DeviceConfigure: React.FC<Props> = (props: any) => {
318
348
  .then(() => {
319
349
  promise.res();
320
350
  })
321
- .catch((e) => {
351
+ .catch(e => {
322
352
  promise.rej(e);
323
353
  })
324
354
  .finally(() => {
@@ -328,14 +358,16 @@ const DeviceConfigure: React.FC<Props> = (props: any) => {
328
358
 
329
359
  useEffect(() => {
330
360
  // Notify updated state every 20s
331
- let count = 0;
332
- const interval = setInterval(() => {
333
- count = count + 1;
334
- refreshDeviceList(count % 10 !== 0);
335
- }, 2000);
336
- return () => {
337
- clearInterval(interval);
338
- };
361
+ if (getOS() !== 'macos') {
362
+ let count = 0;
363
+ const interval = setInterval(() => {
364
+ count = count + 1;
365
+ refreshDeviceList(count % 10 !== 0);
366
+ }, 2000);
367
+ return () => {
368
+ clearInterval(interval);
369
+ };
370
+ }
339
371
  }, []);
340
372
 
341
373
  useEffect(() => {
@@ -374,12 +406,18 @@ const DeviceConfigure: React.FC<Props> = (props: any) => {
374
406
  },
375
407
  }[kind];
376
408
 
409
+ // non chrome, ignore speaker
410
+ if (!isChrome && kind === 'audiooutput') {
411
+ setUiSelectedSpeaker('');
412
+ return;
413
+ }
414
+
377
415
  if (uiSelectedState && uiSelectedState.trim().length != 0) {
378
416
  return;
379
417
  }
380
418
 
381
419
  const defaultSpeaker = deviceList.find(
382
- (device) =>
420
+ device =>
383
421
  device.deviceId === 'default' &&
384
422
  (isChrome ? device.deviceId === 'default' : true),
385
423
  )?.deviceId;
@@ -440,7 +478,7 @@ const DeviceConfigure: React.FC<Props> = (props: any) => {
440
478
  checkDeviceExists(storedDevice, deviceList)
441
479
  ) {
442
480
  log(logTag, deviceLogTag, 'Setting to active id', storedDevice);
443
- setDevice(storedDevice).catch((e:Error) => {
481
+ setDevice(storedDevice).catch((e: Error) => {
444
482
  log(
445
483
  logTag,
446
484
  deviceLogTag,
@@ -525,7 +563,7 @@ const DeviceConfigure: React.FC<Props> = (props: any) => {
525
563
  }
526
564
 
527
565
  const didChangeDeviceExistBefore = previousDeviceList.find(
528
- (device) => device.deviceId === changedDevice.deviceId,
566
+ device => device.deviceId === changedDevice.deviceId,
529
567
  )
530
568
  ? true
531
569
  : false;
@@ -553,7 +591,10 @@ const DeviceConfigure: React.FC<Props> = (props: any) => {
553
591
  // Port this to useEffectEvent(https://beta.reactjs.org/reference/react/useEffectEvent) when
554
592
  // released
555
593
  useEffect(() => {
556
- AgoraRTC.onMicrophoneChanged = commonOnChangedEvent;
594
+ AgoraRTC.onMicrophoneChanged = data => {
595
+ LocalEventEmitter.emit(LocalEventsEnum.MIC_CHANGED);
596
+ commonOnChangedEvent(data);
597
+ };
557
598
  return () => {
558
599
  AgoraRTC.onMicrophoneChanged = null;
559
600
  };
@@ -626,7 +667,7 @@ const DeviceConfigure: React.FC<Props> = (props: any) => {
626
667
  .then(() => {
627
668
  queueItem.resolveQueued();
628
669
  })
629
- .catch((e) => queueItem.rejectQueued(e));
670
+ .catch(e => queueItem.rejectQueued(e));
630
671
  }
631
672
  };
632
673
  return new Promise<void>((res, rej) => {
@@ -637,7 +678,7 @@ const DeviceConfigure: React.FC<Props> = (props: any) => {
637
678
  return;
638
679
  }
639
680
  mutexRef.current = true;
640
- RtcEngine[setMethod](
681
+ RtcEngineUnsafe[setMethod](
641
682
  deviceId,
642
683
  () => {
643
684
  syncSelectedDeviceUi(kind);
@@ -686,24 +727,27 @@ const DeviceConfigure: React.FC<Props> = (props: any) => {
686
727
 
687
728
  Toast.show({
688
729
  type: 'checked',
730
+ leadingIconName: 'mic-on',
689
731
  // leadingIcon: <CustomIcon name={'mic-on'} />,
690
- text1: `New ${name} detected`,
732
+ text1: toastHeading(name),
733
+ text2: toastSubHeading({name, label: device?.label}),
691
734
  // @ts-ignore
692
- text2: (
693
- <Text>
694
- <Text>New {name} named </Text>
695
- <Text style={{fontWeight: 'bold'}}>{device.label}</Text>
696
- <Text> detected. Do you want to switch?</Text>
697
- </Text>
698
- ),
735
+ // text2: (
736
+ // <Text>
737
+ // <Text>New {name} named </Text>
738
+ // <Text style={{fontWeight: 'bold'}}>{device.label}</Text>
739
+ // <Text> detected. Do you want to switch?</Text>
740
+ // </Text>
741
+ // ),
699
742
  visibilityTime: 6000,
743
+ //@ts-ignore
700
744
  checkbox: {
701
745
  disabled: false,
702
746
  color: primaryColor,
703
- text: 'Remember my choice',
747
+ text: toastCheckboxBtnText,
704
748
  },
705
749
  primaryBtn: {
706
- text: 'SWITCH DEVICE',
750
+ text: toastPrimaryBtnText,
707
751
  onPress: (checked: boolean) => {
708
752
  setAction(device.deviceId);
709
753
  checked && updateRememberedDeviceList(device, true);
@@ -711,7 +755,7 @@ const DeviceConfigure: React.FC<Props> = (props: any) => {
711
755
  },
712
756
  },
713
757
  secondaryBtn: {
714
- text: 'IGNORE',
758
+ text: toastCancelBtnText,
715
759
  onPress: (checked: boolean) => {
716
760
  checked && updateRememberedDeviceList(device, false);
717
761
  Toast.hide();
@@ -731,6 +775,7 @@ const DeviceConfigure: React.FC<Props> = (props: any) => {
731
775
  setSelectedSpeaker,
732
776
  deviceList,
733
777
  setDeviceList,
778
+ isChrome,
734
779
  }}>
735
780
  {props.children}
736
781
  </DeviceContext.Provider>
@@ -20,6 +20,7 @@ interface DeviceContext {
20
20
  setSelectedSpeaker: (speaker: string) => Promise<any>;
21
21
  deviceList: MediaDeviceInfo[];
22
22
  setDeviceList: (devices: MediaDeviceInfo[]) => void;
23
+ isChrome: boolean;
23
24
  }
24
25
 
25
26
  const DeviceContext = createContext<DeviceContext>({
@@ -31,5 +32,6 @@ const DeviceContext = createContext<DeviceContext>({
31
32
  setSelectedMic: async () => {},
32
33
  setSelectedSpeaker: async () => {},
33
34
  setDeviceList: () => {},
35
+ isChrome: false,
34
36
  });
35
37
  export default DeviceContext;