agora-appbuilder-core 4.0.0-api.5 → 4.0.0-api.6

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 (406) hide show
  1. package/package.json +2 -2
  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 +26471 -22749
  8. package/template/_prettierrc.js +2 -2
  9. package/template/agora-rn-uikit/src/Contexts/PropsContext.tsx +30 -10
  10. package/template/agora-rn-uikit/src/Contexts/RtcContext.tsx +19 -0
  11. package/template/agora-rn-uikit/src/Controls/BtnTemplate.tsx +1 -0
  12. package/template/agora-rn-uikit/src/Controls/Icons.ts +45 -0
  13. package/template/agora-rn-uikit/src/Controls/Local/EndCall.tsx +6 -4
  14. package/template/agora-rn-uikit/src/Controls/Local/FullScreen.tsx +3 -1
  15. package/template/agora-rn-uikit/src/Controls/Local/LocalAudioMute.tsx +1 -0
  16. package/template/agora-rn-uikit/src/Controls/Local/LocalVideoMute.tsx +1 -0
  17. package/template/agora-rn-uikit/src/Controls/Local/SwitchCamera.tsx +1 -0
  18. package/template/agora-rn-uikit/src/Controls/Remote/RemoteAudioMute.tsx +1 -0
  19. package/template/agora-rn-uikit/src/Controls/Remote/RemoteSwap.tsx +3 -1
  20. package/template/agora-rn-uikit/src/Controls/Remote/RemoteVideoMute.tsx +1 -0
  21. package/template/agora-rn-uikit/src/Reducer/ActiveSpeaker.ts +30 -0
  22. package/template/agora-rn-uikit/src/Reducer/LocalMuteAudio.ts +3 -1
  23. package/template/agora-rn-uikit/src/Reducer/LocalMuteVideo.ts +3 -1
  24. package/template/agora-rn-uikit/src/Reducer/LocalPermissionState.ts +1 -1
  25. package/template/agora-rn-uikit/src/Reducer/RemoteAudioStateChanged.ts +3 -3
  26. package/template/agora-rn-uikit/src/Reducer/RemoteVideoStateChanged.ts +5 -4
  27. package/template/agora-rn-uikit/src/Reducer/UpdateDualStreamMode.ts +1 -1
  28. package/template/agora-rn-uikit/src/Reducer/UserJoined.ts +8 -5
  29. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteAudio.ts +1 -1
  30. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteVideo.ts +1 -1
  31. package/template/agora-rn-uikit/src/Reducer/UserOffline.ts +1 -1
  32. package/template/agora-rn-uikit/src/Reducer/UserPin.ts +18 -1
  33. package/template/agora-rn-uikit/src/Reducer/UserSecondaryPin.ts +23 -0
  34. package/template/agora-rn-uikit/src/Reducer/index.ts +2 -0
  35. package/template/agora-rn-uikit/src/Rtc/Create.tsx +47 -21
  36. package/template/agora-rn-uikit/src/Rtc/Join.tsx +37 -15
  37. package/template/agora-rn-uikit/src/RtcConfigure.tsx +122 -12
  38. package/template/agora-rn-uikit/src/Views/MaxVideoView.native.tsx +32 -4
  39. package/template/agora-rn-uikit/src/Views/MaxVideoView.tsx +21 -2
  40. package/template/agora-rn-uikit/src/Views/MinVideoView.tsx +2 -0
  41. package/template/android/app/build.gradle +59 -156
  42. package/template/android/app/src/debug/AndroidManifest.xml +6 -1
  43. package/template/android/app/src/debug/java/com/helloworld/ReactNativeFlipper.java +7 -4
  44. package/template/android/app/src/main/AndroidManifest.xml +6 -19
  45. package/template/android/app/src/main/assets/fonts/icomoon.ttf +0 -0
  46. package/template/android/app/src/main/java/com/helloworld/MainActivity.java +17 -0
  47. package/template/android/app/src/main/java/com/helloworld/MainApplication.java +19 -36
  48. package/template/android/app/src/release/java/com/helloworld/ReactNativeFlipper.java +20 -0
  49. package/template/android/build.gradle +19 -33
  50. package/template/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  51. package/template/android/gradle/wrapper/gradle-wrapper.properties +3 -2
  52. package/template/android/gradle.properties +18 -4
  53. package/template/android/gradlew +165 -104
  54. package/template/android/gradlew.bat +12 -23
  55. package/template/android/settings.gradle +1 -0
  56. package/template/bridge/rtc/webNg/RtcEngine.ts +131 -16
  57. package/template/bridge/rtc/webNg/index.ts +72 -1
  58. package/template/bridge/rtm/web/index.ts +5 -3
  59. package/template/configTransform.js +16 -1
  60. package/template/customization-api/action-library.ts +0 -8
  61. package/template/customization-api/app-state.ts +11 -2
  62. package/template/customization-api/customEvents.ts +6 -1
  63. package/template/customization-api/index.ts +4 -0
  64. package/template/customization-api/sub-components.ts +6 -3
  65. package/template/customization-api/temp.ts +50 -0
  66. package/template/customization-api/typeDefinition.ts +26 -14
  67. package/template/customization-api/types.ts +26 -0
  68. package/template/customization-api/utils.ts +2 -0
  69. package/template/customization-implementation/index.ts +0 -1
  70. package/template/defaultConfig.js +72 -0
  71. package/template/global.d.ts +13 -1
  72. package/template/index.js +0 -4
  73. package/template/index.web.js +0 -5
  74. package/template/index.wsdk.tsx +1 -19
  75. package/template/ios/.xcode.env +11 -0
  76. package/template/ios/HelloWorld/AppDelegate.h +2 -4
  77. package/template/ios/HelloWorld/AppDelegate.mm +42 -0
  78. package/template/ios/HelloWorld/Info.plist +1 -1
  79. package/template/ios/HelloWorld/main.m +2 -1
  80. package/template/ios/HelloWorld.xcodeproj/project.pbxproj +529 -17
  81. package/template/ios/HelloWorld.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  82. package/template/ios/HelloWorld.xcworkspace/contents.xcworkspacedata +10 -0
  83. package/template/ios/HelloWorld.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  84. package/template/ios/HelloWorldTests/HelloWorldTests.m +14 -13
  85. package/template/ios/HelloWorldTests/Info.plist +2 -2
  86. package/template/ios/Podfile +53 -20
  87. package/template/ios/Podfile.lock +873 -0
  88. package/template/ios/ScreenSharing/Info.plist +15 -0
  89. package/template/ios/ScreenSharing/SampleHandler.h +9 -0
  90. package/template/ios/ScreenSharing/SampleHandler.m +70 -0
  91. package/template/jest.config.js +4 -0
  92. package/template/metro.config.js +7 -32
  93. package/template/package.json +52 -39
  94. package/template/react-native-toast-message/index.d.ts +3 -1
  95. package/template/react-native-toast-message/index.js +1 -0
  96. package/template/react-native-toast-message/src/components/base/index.js +20 -32
  97. package/template/react-native-toast-message/src/components/base/styles.js +18 -21
  98. package/template/react-native-toast-message/src/components/checkbox.js +24 -19
  99. package/template/react-native-toast-message/src/index.js +3 -1
  100. package/template/react-native-toast-message/src/index.sdk.tsx +4 -1
  101. package/template/src/App.tsx +13 -85
  102. package/template/src/AppRoutes.tsx +77 -0
  103. package/template/src/AppWrapper.tsx +38 -33
  104. package/template/src/SDKAppWrapper.tsx +79 -43
  105. package/template/src/app-state/useNoiseSupression.native.tsx +67 -0
  106. package/template/src/app-state/useNoiseSupression.tsx +107 -0
  107. package/template/src/app-state/useVideoQuality.tsx +39 -0
  108. package/template/src/assets/font-styles.css +171 -3
  109. package/template/src/assets/fonts/icomoon.ttf +0 -0
  110. package/template/src/assets/selection.json +1 -1
  111. package/template/src/atoms/ActionMenu.tsx +50 -11
  112. package/template/src/atoms/Avatar.tsx +51 -0
  113. package/template/src/atoms/Card.tsx +21 -8
  114. package/template/src/atoms/Carousel.native.tsx +105 -0
  115. package/template/src/atoms/Carousel.tsx +103 -0
  116. package/template/src/atoms/Checkbox.tsx +98 -0
  117. package/template/src/atoms/CircularProgress.tsx +0 -1
  118. package/template/src/atoms/ClipboardIconButton.tsx +91 -0
  119. package/template/src/atoms/CustomIcon.tsx +45 -0
  120. package/template/src/atoms/DropDownMulti.tsx +349 -0
  121. package/template/src/atoms/Dropdown.tsx +3 -3
  122. package/template/src/atoms/IconButton.tsx +52 -9
  123. package/template/src/atoms/ImageIcon.tsx +6 -3
  124. package/template/src/atoms/InlineNotification.tsx +81 -0
  125. package/template/src/atoms/MeetingLink.tsx +160 -0
  126. package/template/src/atoms/ParticipantsCount.tsx +18 -7
  127. package/template/src/atoms/Popup.tsx +49 -27
  128. package/template/src/atoms/PrimaryButton.tsx +19 -5
  129. package/template/src/atoms/RecordingInfo.tsx +2 -2
  130. package/template/src/atoms/SecondaryButton.tsx +2 -0
  131. package/template/src/atoms/Spacer.tsx +1 -0
  132. package/template/src/atoms/TertiaryButton.tsx +35 -5
  133. package/template/src/atoms/TextInput.tsx +2 -1
  134. package/template/src/atoms/Toolbar.tsx +64 -30
  135. package/template/src/atoms/ToolbarItem.tsx +11 -5
  136. package/template/src/atoms/ToolbarPreset.tsx +13 -2
  137. package/template/src/atoms/Tooltip.tsx +26 -4
  138. package/template/src/auth/AuthProvider.tsx +500 -0
  139. package/template/src/auth/AuthRoute.tsx +94 -0
  140. package/template/src/auth/IDPAuth.electron.tsx +31 -0
  141. package/template/src/auth/IDPAuth.tsx +67 -0
  142. package/template/src/auth/IDPLogoutComponent.tsx +158 -0
  143. package/template/src/auth/UserCancelPopup.tsx +115 -0
  144. package/template/src/auth/config.ts +52 -0
  145. package/template/src/auth/openIDPURL.electron.tsx +39 -0
  146. package/template/src/auth/openIDPURL.native.tsx +51 -0
  147. package/template/src/auth/openIDPURL.tsx +20 -0
  148. package/template/src/auth/useIDPAuth.electron.tsx +65 -0
  149. package/template/src/auth/useIDPAuth.native.tsx +70 -0
  150. package/template/src/auth/useIDPAuth.tsx +63 -0
  151. package/template/src/auth/useTokenAuth.tsx +194 -0
  152. package/template/src/components/Chat.tsx +5 -8
  153. package/template/src/components/ChatContext.ts +4 -0
  154. package/template/src/components/ColorConfigure.tsx +0 -1
  155. package/template/src/components/CommonStyles.ts +9 -2
  156. package/template/src/components/Controls.tsx +659 -52
  157. package/template/src/components/DeviceConfigure.tsx +362 -156
  158. package/template/src/components/DeviceContext.tsx +2 -0
  159. package/template/src/components/EventsConfigure.tsx +713 -109
  160. package/template/src/components/GraphQLProvider.tsx +62 -36
  161. package/template/src/components/GridVideo.tsx +23 -13
  162. package/template/src/components/HostControlView.tsx +11 -14
  163. package/template/src/components/JoinPhrase.tsx +0 -1
  164. package/template/src/components/Leftbar.tsx +4 -3
  165. package/template/src/components/Navbar.tsx +110 -42
  166. package/template/src/components/NavbarMobile.tsx +47 -36
  167. package/template/src/components/Navigation.native.tsx +1 -15
  168. package/template/src/{subComponents/screenshare/ScreenshareButton.native.tsx → components/Navigation.sdk.tsx} +17 -3
  169. package/template/src/components/Navigation.tsx +1 -15
  170. package/template/src/components/ParticipantsView.tsx +56 -48
  171. package/template/src/components/PinnedVideo.tsx +188 -114
  172. package/template/src/components/Precall.native.tsx +169 -67
  173. package/template/src/components/Precall.tsx +237 -71
  174. package/template/src/components/RTMConfigure.tsx +167 -55
  175. package/template/src/components/Rightbar.tsx +4 -3
  176. package/template/src/components/Router.electron.ts +1 -0
  177. package/template/src/components/Router.native.ts +1 -0
  178. package/template/src/components/Router.sdk.ts +1 -0
  179. package/template/src/components/Router.ts +1 -0
  180. package/template/src/components/SdkApiContext.tsx +179 -27
  181. package/template/src/components/SdkMuteToggleListener.tsx +88 -0
  182. package/template/src/components/SessionContext.tsx +0 -1
  183. package/template/src/components/Settings.tsx +25 -3
  184. package/template/src/components/SettingsView.tsx +44 -9
  185. package/template/src/components/Share.tsx +149 -71
  186. package/template/src/components/StorageContext.tsx +19 -5
  187. package/template/src/components/ToastComponent.tsx +3 -0
  188. package/template/src/components/WhiteboardLayout.tsx +291 -0
  189. package/template/src/components/chat-messages/useChatMessages.tsx +420 -207
  190. package/template/src/components/common/Error.tsx +2 -0
  191. package/template/src/components/common/Logo.tsx +2 -2
  192. package/template/src/components/contexts/LiveStreamDataContext.tsx +5 -4
  193. package/template/src/components/contexts/ScreenShareContext.tsx +15 -1
  194. package/template/src/components/contexts/WaitingRoomContext.tsx +50 -0
  195. package/template/src/components/contexts/WhiteboardContext.tsx +54 -54
  196. package/template/src/components/disable-chat/useDisableChat.tsx +32 -0
  197. package/template/src/components/livestream/LiveStreamContext.tsx +262 -177
  198. package/template/src/components/livestream/Types.ts +34 -18
  199. package/template/src/components/livestream/views/LiveStreamAttendeeLandingTile.tsx +295 -0
  200. package/template/src/components/livestream/views/LiveStreamControls.tsx +2 -4
  201. package/template/src/components/meeting-info-invite/MeetingInfo.tsx +82 -0
  202. package/template/src/components/meeting-info-invite/MeetingInfoCardHeader.tsx +86 -0
  203. package/template/src/components/meeting-info-invite/MeetingInfoGridTile.tsx +218 -0
  204. package/template/src/components/meeting-info-invite/MeetingInfoLinks.tsx +122 -0
  205. package/template/src/components/participants/AllAudienceParticipants.tsx +4 -5
  206. package/template/src/components/participants/AllHostParticipants.tsx +5 -6
  207. package/template/src/components/participants/Participant.tsx +40 -9
  208. package/template/src/components/participants/ParticipantSectionTitle.tsx +5 -2
  209. package/template/src/components/participants/ScreenshareParticipants.tsx +15 -17
  210. package/template/src/components/participants/UserActionMenuOptions.tsx +157 -49
  211. package/template/src/components/participants/WaitingRoomParticipants.tsx +74 -0
  212. package/template/src/components/popups/InvitePopup.tsx +110 -45
  213. package/template/src/components/popups/StartScreenSharePopup.native.tsx +182 -0
  214. package/template/src/components/popups/StartScreenSharePopup.tsx +6 -0
  215. package/template/src/components/popups/StopRecordingPopup.tsx +11 -5
  216. package/template/src/components/popups/StopScreenSharePopup.native.tsx +135 -0
  217. package/template/src/components/popups/StopScreenSharePopup.tsx +6 -0
  218. package/template/src/components/popups/WhiteboardClearAllPopup.tsx +123 -0
  219. package/template/src/components/precall/LocalMute.tsx +69 -45
  220. package/template/src/components/precall/PermissionHelper.tsx +52 -24
  221. package/template/src/components/precall/PreCallSettings.tsx +1 -0
  222. package/template/src/components/precall/VideoFallback.tsx +173 -0
  223. package/template/src/components/precall/VideoPreview.native.tsx +16 -50
  224. package/template/src/components/precall/VideoPreview.tsx +27 -162
  225. package/template/src/components/precall/index.tsx +2 -0
  226. package/template/src/components/precall/joinCallBtn.native.tsx +10 -3
  227. package/template/src/components/precall/joinCallBtn.tsx +11 -2
  228. package/template/src/components/precall/joinWaitingRoomBtn.native.tsx +210 -0
  229. package/template/src/components/precall/joinWaitingRoomBtn.tsx +250 -0
  230. package/template/src/components/precall/meetingTitle.tsx +35 -9
  231. package/template/src/components/precall/selectDevice.tsx +5 -5
  232. package/template/src/components/precall/textInput.tsx +16 -18
  233. package/template/src/components/precall/usePreCall.tsx +14 -4
  234. package/template/src/components/room-info/useRoomInfo.tsx +34 -0
  235. package/template/src/components/useShareLink.tsx +24 -59
  236. package/template/src/components/useUserPreference.tsx +73 -10
  237. package/template/src/components/useVideoCall.tsx +76 -3
  238. package/template/src/components/virtual-background/VBButton.tsx +64 -0
  239. package/template/src/components/virtual-background/VBCard.native.tsx +282 -0
  240. package/template/src/components/virtual-background/VBCard.tsx +272 -0
  241. package/template/src/components/virtual-background/VBPanel.tsx +279 -0
  242. package/template/src/components/virtual-background/VButils.native.ts +37 -0
  243. package/template/src/components/virtual-background/VButils.ts +104 -0
  244. package/template/src/components/virtual-background/VideoPreview.native.tsx +43 -0
  245. package/template/src/components/virtual-background/VideoPreview.tsx +106 -0
  246. package/template/src/components/virtual-background/imagePaths.ts +87 -0
  247. package/template/src/components/virtual-background/images/beachImageBase64.ts +1 -0
  248. package/template/src/components/virtual-background/images/bedroomImageBase64.ts +1 -0
  249. package/template/src/components/virtual-background/images/bookImageBase64.ts +1 -0
  250. package/template/src/components/virtual-background/images/earthImageBase64.ts +1 -0
  251. package/template/src/components/virtual-background/images/index.ts +37 -0
  252. package/template/src/components/virtual-background/images/lampImageBase64.ts +1 -0
  253. package/template/src/components/virtual-background/images/mountainsImageBase64.ts +1 -0
  254. package/template/src/components/virtual-background/images/office1ImageBase64.ts +1 -0
  255. package/template/src/components/virtual-background/images/officeImageBase64.ts +1 -0
  256. package/template/src/components/virtual-background/images/plantsImageBase64.ts +1 -0
  257. package/template/src/components/virtual-background/images/skyImageBase64.ts +1 -0
  258. package/template/src/components/virtual-background/images/wallImageBase64.ts +1 -0
  259. package/template/src/components/virtual-background/useVB.native.tsx +188 -0
  260. package/template/src/components/virtual-background/useVB.tsx +267 -0
  261. package/template/src/components/whiteboard/StrokeWidthTool.tsx +137 -0
  262. package/template/src/components/whiteboard/WhiteboardButton.tsx +93 -0
  263. package/template/src/components/whiteboard/WhiteboardCanvas.tsx +99 -0
  264. package/template/src/components/whiteboard/WhiteboardConfigure.native.tsx +137 -0
  265. package/template/src/components/whiteboard/WhiteboardConfigure.tsx +441 -0
  266. package/template/src/components/whiteboard/WhiteboardCursor.tsx +152 -0
  267. package/template/src/components/whiteboard/WhiteboardToolBox.tsx +1246 -0
  268. package/template/src/components/whiteboard/WhiteboardView.native.tsx +109 -0
  269. package/template/src/components/whiteboard/WhiteboardView.tsx +81 -0
  270. package/template/src/components/whiteboard/WhiteboardWidget.tsx +674 -0
  271. package/template/src/components/whiteboard/WhiteboardWrapper.tsx +38 -0
  272. package/template/src/language/default-labels/commonLabels.ts +51 -14
  273. package/template/src/language/default-labels/createScreenLabels.ts +97 -17
  274. package/template/src/language/default-labels/joinScreenLabels.ts +45 -6
  275. package/template/src/language/default-labels/precallScreenLabels.ts +145 -23
  276. package/template/src/language/default-labels/shareLinkScreenLabels.ts +85 -37
  277. package/template/src/language/default-labels/videoCallScreenLabels.ts +1137 -158
  278. package/template/src/pages/Create.tsx +125 -80
  279. package/template/src/pages/Join.tsx +76 -34
  280. package/template/src/pages/Login.tsx +26 -0
  281. package/template/src/pages/VideoCall.tsx +229 -114
  282. package/template/src/pages/video-call/ActionSheet.native.tsx +54 -7
  283. package/template/src/pages/video-call/ActionSheet.tsx +55 -16
  284. package/template/src/pages/video-call/ActionSheetContent.tsx +366 -291
  285. package/template/src/pages/video-call/ActionSheetHandle.tsx +7 -1
  286. package/template/src/pages/video-call/DefaultLayouts.ts +11 -5
  287. package/template/src/pages/video-call/NameWithMicIcon.tsx +17 -9
  288. package/template/src/pages/video-call/PinchableView.tsx +119 -0
  289. package/template/src/pages/video-call/RenderComponent.tsx +12 -3
  290. package/template/src/pages/video-call/SidePanelHeader.tsx +208 -6
  291. package/template/src/pages/video-call/VideoCallMobileView.tsx +140 -106
  292. package/template/src/pages/video-call/VideoCallScreen.native.tsx +3 -2
  293. package/template/src/pages/video-call/VideoCallScreen.tsx +113 -66
  294. package/template/src/pages/video-call/VideoComponent.tsx +53 -5
  295. package/template/src/pages/video-call/VideoRenderer.tsx +309 -52
  296. package/template/src/pages/video-call/VisibilitySensor.tsx +104 -0
  297. package/template/src/pages/video-call/ZoomableWrapper.native.tsx +34 -0
  298. package/template/src/pages/video-call/ZoomableWrapper.tsx +5 -0
  299. package/template/src/pages/video-call/index.ts +2 -0
  300. package/template/src/rtm/RTMEngine.ts +9 -4
  301. package/template/src/rtm-events/constants.ts +20 -0
  302. package/template/src/rtm-events-api/Events.ts +2 -0
  303. package/template/src/rtm-events-api/LocalEvents.ts +8 -0
  304. package/template/src/selection.json +1 -0
  305. package/template/src/subComponents/ChatBubble.tsx +81 -64
  306. package/template/src/subComponents/ChatContainer.tsx +20 -13
  307. package/template/src/subComponents/ChatInput.ios.tsx +11 -2
  308. package/template/src/subComponents/ChatInput.tsx +12 -3
  309. package/template/src/subComponents/Checkbox.native.tsx +46 -46
  310. package/template/src/subComponents/Checkbox.tsx +7 -6
  311. package/template/src/subComponents/CopyJoinInfo.tsx +26 -11
  312. package/template/src/subComponents/EndcallPopup.tsx +83 -12
  313. package/template/src/subComponents/LanguageSelector.tsx +34 -30
  314. package/template/src/subComponents/LayoutIconButton.tsx +30 -8
  315. package/template/src/subComponents/LayoutIconDropdown.tsx +19 -3
  316. package/template/src/subComponents/Loading.tsx +60 -0
  317. package/template/src/subComponents/LocalAudioMute.tsx +106 -30
  318. package/template/src/subComponents/LocalEndCall.tsx +91 -15
  319. package/template/src/subComponents/LocalSwitchCamera.tsx +50 -11
  320. package/template/src/subComponents/LocalVideoMute.tsx +126 -32
  321. package/template/src/subComponents/LogoutButton.tsx +1 -1
  322. package/template/src/subComponents/NetworkQualityPill.tsx +14 -31
  323. package/template/src/subComponents/Recording.tsx +23 -6
  324. package/template/src/subComponents/RemoteAudioMute.tsx +3 -3
  325. package/template/src/subComponents/RemoteMutePopup.tsx +55 -14
  326. package/template/src/subComponents/RemoteVideoMute.tsx +3 -3
  327. package/template/src/subComponents/RemoveMeetingPopup.tsx +19 -6
  328. package/template/src/subComponents/RemoveScreensharePopup.tsx +20 -5
  329. package/template/src/subComponents/ScreenShareNotice.tsx +11 -6
  330. package/template/src/subComponents/SelectDevice.tsx +98 -32
  331. package/template/src/subComponents/SidePanelEnum.tsx +2 -0
  332. package/template/src/subComponents/SidePanelHeader.tsx +97 -63
  333. package/template/src/subComponents/ToastConfig.tsx +70 -61
  334. package/template/src/subComponents/caption/Caption.tsx +130 -0
  335. package/template/src/subComponents/caption/CaptionContainer.tsx +302 -0
  336. package/template/src/subComponents/caption/CaptionIcon.tsx +111 -0
  337. package/template/src/subComponents/caption/CaptionText.tsx +182 -0
  338. package/template/src/subComponents/caption/DownloadTranscriptBtn.tsx +65 -0
  339. package/template/src/subComponents/caption/LanguageSelectorPopup.tsx +192 -0
  340. package/template/src/subComponents/caption/Transcript.tsx +449 -0
  341. package/template/src/subComponents/caption/TranscriptIcon.tsx +123 -0
  342. package/template/src/subComponents/caption/TranscriptText.tsx +98 -0
  343. package/template/src/subComponents/caption/index.ts +3 -0
  344. package/template/src/subComponents/caption/proto/ptoto.js +91 -0
  345. package/template/src/subComponents/caption/proto/test.proto +23 -0
  346. package/template/src/subComponents/caption/useCaption.tsx +123 -0
  347. package/template/src/subComponents/caption/useCaptionWidth.ts +27 -0
  348. package/template/src/subComponents/caption/useSTTAPI.tsx +179 -0
  349. package/template/src/subComponents/caption/useStreamMessageUtils.native.ts +211 -0
  350. package/template/src/subComponents/caption/useStreamMessageUtils.ts +235 -0
  351. package/template/src/subComponents/caption/useTranscriptDownload.native.ts +68 -0
  352. package/template/src/subComponents/caption/useTranscriptDownload.ts +52 -0
  353. package/template/src/subComponents/caption/utils.ts +125 -0
  354. package/template/src/subComponents/chat/ChatParticipants.tsx +53 -17
  355. package/template/src/subComponents/livestream/CurrentLiveStreamRequestsView.tsx +11 -13
  356. package/template/src/subComponents/livestream/controls/LocalRaiseHand.tsx +33 -9
  357. package/template/src/subComponents/livestream/controls/RemoteLiveStreamApprovedRequestRecall.tsx +1 -0
  358. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestApprove.tsx +10 -6
  359. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestReject.tsx +28 -19
  360. package/template/src/subComponents/recording/useRecording.tsx +49 -20
  361. package/template/src/subComponents/recording/useRecordingLayoutQuery.tsx +0 -1
  362. package/template/src/subComponents/screenshare/ScreenshareButton.tsx +29 -10
  363. package/template/src/subComponents/screenshare/ScreenshareConfigure.native.tsx +270 -66
  364. package/template/src/subComponents/screenshare/ScreenshareConfigure.tsx +182 -95
  365. package/template/src/subComponents/screenshare/useScreenshare.tsx +2 -0
  366. package/template/src/subComponents/waiting-rooms/WaitingRoomControls.tsx +85 -0
  367. package/template/src/subComponents/waiting-rooms/useWaitingRoomAPI.ts +75 -0
  368. package/template/src/theme/index.ts +9 -0
  369. package/template/src/utils/SdkEvents.ts +14 -0
  370. package/template/src/utils/SdkMethodEvents.ts +23 -3
  371. package/template/src/utils/axiomLogger.ts +117 -0
  372. package/template/src/utils/book.jpg +0 -0
  373. package/template/src/utils/common.tsx +118 -6
  374. package/template/src/utils/endCallEveryOne.ts +7 -0
  375. package/template/src/utils/getCustomRoute.ts +7 -0
  376. package/template/src/utils/index.tsx +23 -0
  377. package/template/src/utils/useActionSheet.tsx +50 -0
  378. package/template/src/utils/useActiveSpeaker.ts +3 -7
  379. package/template/src/utils/useAppState.ts +17 -0
  380. package/template/src/utils/useAsyncEffect.ts +138 -0
  381. package/template/src/utils/useCreateRoom.ts +8 -12
  382. package/template/src/utils/useDisableButton.tsx +37 -0
  383. package/template/src/utils/useFindActiveSpeaker.native.ts +4 -0
  384. package/template/src/utils/useFindActiveSpeaker.ts +335 -0
  385. package/template/src/utils/useIsLocalUserSpeaking.native.ts +4 -0
  386. package/template/src/utils/useIsLocalUserSpeaking.ts +98 -0
  387. package/template/src/utils/useJoinRoom.ts +97 -36
  388. package/template/src/utils/useMuteToggleLocal.ts +114 -96
  389. package/template/src/utils/useString.ts +13 -3
  390. package/template/static.d.ts +42 -0
  391. package/template/tsconfig_rsdk_index.json +3 -3
  392. package/template/tsconfig_wsdk_index.json +1 -1
  393. package/template/web/index.html +20 -0
  394. package/template/webpack.commons.js +21 -10
  395. package/template/webpack.web.config.js +7 -3
  396. package/template/_buckconfig +0 -6
  397. package/template/_gitattributes +0 -1
  398. package/template/android/app/_BUCK +0 -55
  399. package/template/android/app/build_defs.bzl +0 -19
  400. package/template/ios/HelloWorld/AppDelegate.m +0 -74
  401. package/template/src/components/OAuth.electron.tsx +0 -41
  402. package/template/src/components/OAuth.native.tsx +0 -55
  403. package/template/src/components/OAuth.tsx +0 -30
  404. package/template/src/components/OAuthConfig.ts +0 -77
  405. package/template/src/components/Settings.native.tsx +0 -21
  406. package/template/src/components/StoreToken.tsx +0 -39
@@ -0,0 +1,210 @@
1
+ /*
2
+ ********************************************
3
+ Copyright © 2021 Agora Lab, Inc., all rights reserved.
4
+ AppBuilder and all associated components, source code, APIs, services, and documentation
5
+ (the “Materials”) are owned by Agora Lab, Inc. and its licensors. The Materials may not be
6
+ accessed, used, modified, or distributed for any purpose without a license from Agora Lab, Inc.
7
+ Use without a license or in violation of any license terms and conditions (including use for
8
+ any purpose competitive to Agora Lab, Inc.’s business) is strictly prohibited. For more
9
+ information visit https://appbuilder.agora.io.
10
+ *********************************************
11
+ */
12
+
13
+ import React, {useContext, useEffect} from 'react';
14
+ import PrimaryButton from '../../atoms/PrimaryButton';
15
+ import {usePreCall} from './usePreCall';
16
+ import {useString, useStringRef} from '../../utils/useString';
17
+ import {
18
+ ChannelProfile,
19
+ DispatchContext,
20
+ PropsContext,
21
+ useLocalUid,
22
+ } from '../../../agora-rn-uikit';
23
+ import {
24
+ PrecallJoinBtnTextInterface,
25
+ precallJoinBtnText,
26
+ } from '../../language/default-labels/precallScreenLabels';
27
+ import {WaitingRoomStatus, useRoomInfo} from '../room-info/useRoomInfo';
28
+ import useGetName from '../../utils/useGetName';
29
+ import {useUserPreference} from '../useUserPreference';
30
+ import {useSetRoomInfo} from '../room-info/useSetRoomInfo';
31
+ import Toast from '../../../react-native-toast-message';
32
+ import events from '../../rtm-events-api';
33
+ import {EventNames} from '../../rtm-events';
34
+ import useWaitingRoomAPI from '../../subComponents/waiting-rooms/useWaitingRoomAPI';
35
+ import {useContent} from 'customization-api';
36
+ import EventsConfigure from '../EventsConfigure';
37
+ import {
38
+ waitingRoomApprovalRejectionToastHeading,
39
+ waitingRoomApprovalRejectionToastSubHeading,
40
+ } from '../../language/default-labels/videoCallScreenLabels';
41
+
42
+ export interface PreCallJoinWaitingRoomBtnProps {
43
+ render?: (
44
+ onPress: () => void,
45
+ title: string,
46
+ disabled: boolean,
47
+ ) => JSX.Element;
48
+ }
49
+
50
+ let shouldWaitingRoomPoll = null;
51
+ const JoinWaitingRoomBtn = (props: PreCallJoinWaitingRoomBtnProps) => {
52
+ const headinglabel = useStringRef(waitingRoomApprovalRejectionToastHeading);
53
+ const subheadinglabel = useStringRef(
54
+ waitingRoomApprovalRejectionToastSubHeading,
55
+ );
56
+ let pollingTimeout = React.useRef(null);
57
+ const {rtcProps} = useContext(PropsContext);
58
+ const {setCallActive, callActive} = usePreCall();
59
+ const username = useGetName();
60
+ const {isJoinDataFetched, isInWaitingRoom} = useRoomInfo();
61
+ const {setRoomInfo} = useSetRoomInfo();
62
+
63
+ const waitingRoomButton =
64
+ useString<PrecallJoinBtnTextInterface>(precallJoinBtnText);
65
+ const {saveName} = useUserPreference();
66
+ const [buttonText, setButtonText] = React.useState(
67
+ waitingRoomButton({
68
+ waitingRoom: true,
69
+ ready: isInWaitingRoom,
70
+ }),
71
+ );
72
+ const {request: requestToJoin} = useWaitingRoomAPI();
73
+ const {dispatch} = useContext(DispatchContext);
74
+ const localUid = useLocalUid();
75
+ const {activeUids} = useContent();
76
+ const activeUidsRef = React.useRef(activeUids);
77
+
78
+ React.useEffect(() => {
79
+ activeUidsRef.current = activeUids;
80
+ }, [activeUids]);
81
+
82
+ const {
83
+ data: {token, isHost},
84
+ } = useRoomInfo();
85
+
86
+ useEffect(() => {
87
+ if ($config.ENABLE_WAITING_ROOM && !isHost && token) {
88
+ setCallActive(true);
89
+ }
90
+ }, [token]);
91
+
92
+ useEffect(() => {
93
+ setButtonText(
94
+ waitingRoomButton({
95
+ waitingRoom: true,
96
+ ready: !isInWaitingRoom,
97
+ }),
98
+ );
99
+ }, [isInWaitingRoom]);
100
+
101
+ useEffect(() => {
102
+ events.on(EventNames.WAITING_ROOM_RESPONSE, data => {
103
+ const {approved, mainUser, screenShare, whiteboard} = JSON.parse(
104
+ data?.payload,
105
+ );
106
+ // stop polling if user has responsed with yes / no
107
+ pollingTimeout.current && clearTimeout(pollingTimeout.current);
108
+ shouldWaitingRoomPoll = false;
109
+
110
+ if (callActive) return;
111
+ // on approve/reject response from host, waiting room permission is reset
112
+ // update waitinng room status on uid
113
+ dispatch({
114
+ type: 'UpdateRenderList',
115
+ value: [localUid, {isInWaitingRoom: false}],
116
+ });
117
+
118
+ if (approved) {
119
+ setRoomInfo(prev => {
120
+ return {
121
+ ...prev,
122
+ isInWaitingRoom: false,
123
+ waitingRoomStatus: WaitingRoomStatus.APPROVED,
124
+ data: {
125
+ ...prev.data,
126
+ token: mainUser.rtc,
127
+ screenShareToken: screenShare.rtc,
128
+ screenShareUid: screenShare.uid,
129
+ whiteboard,
130
+ },
131
+ };
132
+ });
133
+ } else {
134
+ setRoomInfo(prev => {
135
+ return {
136
+ ...prev,
137
+ isInWaitingRoom: false,
138
+ waitingRoomStatus: WaitingRoomStatus.REJECTED,
139
+ };
140
+ });
141
+ // inform user that entry was denied by the host
142
+ Toast.show({
143
+ leadingIconName: 'info',
144
+ text1: headinglabel?.current(),
145
+ text2: subheadinglabel?.current(),
146
+ visibilityTime: 3000,
147
+ type: 'error',
148
+ primaryBtn: null,
149
+ secondaryBtn: null,
150
+ });
151
+ }
152
+ });
153
+
154
+ return () => {
155
+ clearTimeout(pollingTimeout.current);
156
+ shouldWaitingRoomPoll = false;
157
+ };
158
+ }, []);
159
+
160
+ const requestServerToJoinRoom = async () => {
161
+ // polling for every 30 seconds
162
+ const pollFunction = async () => {
163
+ if (shouldWaitingRoomPoll) {
164
+ const res = await requestToJoin({send_event: true});
165
+ pollingTimeout.current = setTimeout(() => {
166
+ pollFunction();
167
+ }, 15000);
168
+ }
169
+
170
+ if (!shouldWaitingRoomPoll) {
171
+ // If the request is approved/rejected stop polling
172
+ clearTimeout(pollingTimeout.current);
173
+ }
174
+ };
175
+
176
+ // Call the polling function immediately
177
+ pollFunction();
178
+ };
179
+
180
+ const onSubmit = () => {
181
+ shouldWaitingRoomPoll = true;
182
+ saveName(username?.trim());
183
+
184
+ // Enter waiting rooom;
185
+ setRoomInfo(prev => {
186
+ return {...prev, isInWaitingRoom: true};
187
+ });
188
+
189
+ // add the waitingRoomStatus to the uid
190
+ dispatch({
191
+ type: 'UpdateRenderList',
192
+ value: [localUid, {isInWaitingRoom: true}],
193
+ });
194
+
195
+ // join request API to server, server will send RTM message to all hosts regarding request from this user,
196
+ requestServerToJoinRoom();
197
+ // send a message to host for asking permission to enter the call , then set setCallActive(true) isInWaitingRoom:false
198
+ };
199
+
200
+ const title = buttonText;
201
+ const onPress = () => onSubmit();
202
+ const disabled = isInWaitingRoom || username === '';
203
+ return props?.render ? (
204
+ props.render(onPress, title, disabled)
205
+ ) : (
206
+ <PrimaryButton onPress={onPress} disabled={disabled} text={title} />
207
+ );
208
+ };
209
+
210
+ export default JoinWaitingRoomBtn;
@@ -0,0 +1,250 @@
1
+ /*
2
+ ********************************************
3
+ Copyright © 2021 Agora Lab, Inc., all rights reserved.
4
+ AppBuilder and all associated components, source code, APIs, services, and documentation
5
+ (the “Materials”) are owned by Agora Lab, Inc. and its licensors. The Materials may not be
6
+ accessed, used, modified, or distributed for any purpose without a license from Agora Lab, Inc.
7
+ Use without a license or in violation of any license terms and conditions (including use for
8
+ any purpose competitive to Agora Lab, Inc.’s business) is strictly prohibited. For more
9
+ information visit https://appbuilder.agora.io.
10
+ *********************************************
11
+ */
12
+
13
+ import React, {useContext, useEffect} from 'react';
14
+ import PrimaryButton from '../../atoms/PrimaryButton';
15
+ import {usePreCall} from './usePreCall';
16
+ import {useString, useStringRef} from '../../utils/useString';
17
+ import {
18
+ ChannelProfile,
19
+ DispatchContext,
20
+ PropsContext,
21
+ useLocalUid,
22
+ } from '../../../agora-rn-uikit';
23
+ import {
24
+ PrecallJoinBtnTextInterface,
25
+ precallJoinBtnText,
26
+ } from '../../language/default-labels/precallScreenLabels';
27
+
28
+ import useGetName from '../../utils/useGetName';
29
+ import {useWakeLock} from '../useWakeLock';
30
+ import isMobileOrTablet from '../../utils/isMobileOrTablet';
31
+ import {isWebInternal} from '../../utils/common';
32
+ import useSetName from '../../utils/useSetName';
33
+ import {useUserPreference} from '../useUserPreference';
34
+ import {useSetRoomInfo} from '../room-info/useSetRoomInfo';
35
+ import {EventNames} from '../../rtm-events';
36
+ import {WaitingRoomStatus, useRoomInfo} from '../room-info/useRoomInfo';
37
+ import Toast from '../../../react-native-toast-message';
38
+
39
+ import events from '../../rtm-events-api';
40
+ import useWaitingRoomAPI from '../../subComponents/waiting-rooms/useWaitingRoomAPI';
41
+ import {UserType} from '../RTMConfigure';
42
+ import {useContent} from 'customization-api';
43
+ import {
44
+ waitingRoomApprovalRejectionToastHeading,
45
+ waitingRoomApprovalRejectionToastSubHeading,
46
+ } from '../../language/default-labels/videoCallScreenLabels';
47
+
48
+ const audio = new Audio(
49
+ 'https://dl.dropboxusercontent.com/s/1cdwpm3gca9mlo0/kick.mp3',
50
+ );
51
+
52
+ export interface PreCallJoinWaitingRoomBtnProps {
53
+ render?: (
54
+ onPress: () => void,
55
+ title: string,
56
+ disabled: boolean,
57
+ ) => JSX.Element;
58
+ }
59
+
60
+ let shouldWaitingRoomPoll = null;
61
+ const JoinWaitingRoomBtn = (props: PreCallJoinWaitingRoomBtnProps) => {
62
+ const headinglabel = useStringRef(waitingRoomApprovalRejectionToastHeading);
63
+ const subheadinglabel = useStringRef(
64
+ waitingRoomApprovalRejectionToastSubHeading,
65
+ );
66
+ let pollingTimeout = React.useRef(null);
67
+ const {rtcProps} = useContext(PropsContext);
68
+ const {setCallActive, callActive} = usePreCall();
69
+ const username = useGetName();
70
+ const setUsername = useSetName();
71
+ const {isJoinDataFetched, isInWaitingRoom} = useRoomInfo();
72
+ const {awake, request} = useWakeLock();
73
+ const {saveName} = useUserPreference();
74
+ const waitingRoomButton =
75
+ useString<PrecallJoinBtnTextInterface>(precallJoinBtnText);
76
+ const {setRoomInfo} = useSetRoomInfo();
77
+ const {request: requestToJoin} = useWaitingRoomAPI();
78
+
79
+ const {activeUids} = useContent();
80
+ const activeUidsRef = React.useRef(activeUids);
81
+
82
+ React.useEffect(() => {
83
+ activeUidsRef.current = activeUids;
84
+ }, [activeUids]);
85
+
86
+ const [buttonText, setButtonText] = React.useState(
87
+ waitingRoomButton({
88
+ waitingRoom: true,
89
+ ready: isInWaitingRoom,
90
+ }),
91
+ );
92
+
93
+ const {dispatch} = useContext(DispatchContext);
94
+ const localUid = useLocalUid();
95
+
96
+ const {
97
+ data: {token, isHost},
98
+ } = useRoomInfo();
99
+
100
+ useEffect(() => {
101
+ if ($config.ENABLE_WAITING_ROOM && !isHost && token) {
102
+ setCallActive(true);
103
+ }
104
+ }, [token]);
105
+
106
+ useEffect(() => {
107
+ events.on(EventNames.WAITING_ROOM_RESPONSE, data => {
108
+ const {approved, mainUser, screenShare, whiteboard} = JSON.parse(
109
+ data?.payload,
110
+ );
111
+ // stop polling if user has responsed with yes / no
112
+
113
+ pollingTimeout.current && clearTimeout(pollingTimeout.current);
114
+ shouldWaitingRoomPoll = false;
115
+
116
+ if (callActive) return;
117
+ // on approve/reject response from host, waiting room permission is reset
118
+ // update waitinng room status on uid
119
+ dispatch({
120
+ type: 'UpdateRenderList',
121
+ value: [localUid, {isInWaitingRoom: false}],
122
+ });
123
+
124
+ if (approved) {
125
+ setRoomInfo(prev => {
126
+ return {
127
+ ...prev,
128
+ isInWaitingRoom: false,
129
+ waitingRoomStatus: WaitingRoomStatus.APPROVED,
130
+ data: {
131
+ ...prev.data,
132
+ token: mainUser.rtc,
133
+ screenShareToken: screenShare.rtc,
134
+ screenShareUid: screenShare.uid,
135
+ whiteboard,
136
+ },
137
+ };
138
+ });
139
+ } else {
140
+ setRoomInfo(prev => {
141
+ return {
142
+ ...prev,
143
+ isInWaitingRoom: false,
144
+ waitingRoomStatus: WaitingRoomStatus.REJECTED,
145
+ };
146
+ });
147
+ // inform user that entry was denied by the host
148
+ Toast.show({
149
+ leadingIconName: 'info',
150
+ text1: headinglabel?.current(),
151
+ text2: subheadinglabel?.current(),
152
+ visibilityTime: 3000,
153
+ type: 'error',
154
+ primaryBtn: null,
155
+ secondaryBtn: null,
156
+ });
157
+ }
158
+ });
159
+ return () => {
160
+ clearTimeout(pollingTimeout.current);
161
+ shouldWaitingRoomPoll = false;
162
+ };
163
+ }, []);
164
+
165
+ const requestServerToJoinRoom = async () => {
166
+ // polling for every 30 seconds
167
+ const pollFunction = async () => {
168
+ if (shouldWaitingRoomPoll) {
169
+ const res = await requestToJoin({send_event: true});
170
+ pollingTimeout.current = setTimeout(() => {
171
+ clearTimeout(pollingTimeout.current);
172
+ pollFunction();
173
+ }, 15000);
174
+ }
175
+
176
+ if (!shouldWaitingRoomPoll) {
177
+ // If the request is approved/rejected stop polling
178
+ clearTimeout(pollingTimeout.current);
179
+ }
180
+ };
181
+
182
+ // Call the polling function immediately
183
+ pollFunction();
184
+ };
185
+
186
+ const onSubmit = () => {
187
+ shouldWaitingRoomPoll = true;
188
+ setUsername(username.trim());
189
+ //updating name in the backend
190
+ saveName(username.trim());
191
+ //setCallActive(true);
192
+
193
+ // add the waitingRoomStatus to the uid
194
+ dispatch({
195
+ type: 'UpdateRenderList',
196
+ value: [localUid, {isInWaitingRoom: true}],
197
+ });
198
+ // Enter waiting rooom;
199
+ setRoomInfo(prev => {
200
+ return {...prev, isInWaitingRoom: true};
201
+ });
202
+
203
+ // join request API to server, server will send RTM message to all hosts regarding request from this user,
204
+ requestServerToJoinRoom();
205
+
206
+ // Play a sound to avoid autoblocking in safari
207
+ if (isWebInternal() || isMobileOrTablet()) {
208
+ audio.volume = 0;
209
+ audio.play().then(() => {
210
+ // pause directly once played
211
+ audio.pause();
212
+ });
213
+ }
214
+ // Avoid Sleep only on mobile browsers
215
+ if (isWebInternal() && isMobileOrTablet() && !awake) {
216
+ // Request wake lock
217
+ request();
218
+ }
219
+ };
220
+
221
+ useEffect(() => {
222
+ setButtonText(
223
+ waitingRoomButton({
224
+ waitingRoom: true,
225
+ ready: !isInWaitingRoom,
226
+ }),
227
+ );
228
+ }, [isInWaitingRoom]);
229
+
230
+ const title = buttonText;
231
+ const onPress = () => onSubmit();
232
+ const disabled = isInWaitingRoom || username?.trim() === '';
233
+ return props?.render ? (
234
+ props.render(onPress, title, disabled)
235
+ ) : (
236
+ <PrimaryButton
237
+ // iconName={'video-on'}
238
+ onPress={onPress}
239
+ disabled={disabled}
240
+ text={title}
241
+ containerStyle={{
242
+ minWidth: '100%',
243
+ paddingHorizontal: 10,
244
+ }}
245
+ textStyle={{textAlign: 'center'}}
246
+ />
247
+ );
248
+ };
249
+
250
+ export default JoinWaitingRoomBtn;
@@ -1,31 +1,57 @@
1
1
  import React from 'react';
2
2
  import {Text, StyleSheet, View, TextStyle} from 'react-native';
3
- import {trimText} from '../../utils/common';
3
+ import {isMobileUA, trimText} from '../../utils/common';
4
4
  import ThemeConfig from '../../theme';
5
5
  import {useRoomInfo} from '../room-info/useRoomInfo';
6
6
 
7
7
  export interface MeetingTitleProps {
8
- textStyle?: TextStyle;
8
+ prefix?: string;
9
9
  }
10
+ const isMobile = isMobileUA();
10
11
  const MeetingTitle = (props?: MeetingTitleProps) => {
11
12
  const {
12
13
  data: {meetingTitle},
13
14
  } = useRoomInfo();
15
+
14
16
  return (
15
- <Text style={[style.titleHeading, props?.textStyle ? props.textStyle : {}]}>
16
- {trimText(meetingTitle)}
17
- </Text>
17
+ <View style={isMobile ? style.mobileContainer : style.desktopContainer}>
18
+ <Text
19
+ numberOfLines={1}
20
+ ellipsizeMode="tail"
21
+ style={[style.textStyle, style.prefixStyle]}>
22
+ {props.prefix}
23
+ </Text>
24
+ <Text style={[style.textStyle, {fontWeight: '600'}]}>
25
+ {trimText(meetingTitle)}
26
+ </Text>
27
+ </View>
18
28
  );
19
29
  };
20
30
 
21
31
  export default MeetingTitle;
22
32
 
23
33
  const style = StyleSheet.create({
24
- titleHeading: {
25
- fontSize: ThemeConfig.FontSize.normal,
26
- lineHeight: ThemeConfig.FontSize.normal,
27
- fontWeight: '600',
34
+ mobileContainer: {
35
+ flexDirection: 'column',
36
+ alignSelf: 'flex-start',
37
+ alignItems: 'flex-start',
38
+ },
39
+ desktopContainer: {
40
+ flexDirection: 'row',
41
+ alignSelf: 'center',
42
+ },
43
+ textStyle: {
44
+ fontSize: ThemeConfig.FontSize.large,
45
+ lineHeight: 28,
46
+ fontWeight: '400',
28
47
  color: $config.FONT_COLOR,
29
48
  fontFamily: ThemeConfig.FontFamily.sansPro,
49
+ textAlign: 'center',
50
+ },
51
+ prefixStyle: {
52
+ marginRight: 8,
53
+ color: isMobile
54
+ ? $config.FONT_COLOR + ThemeConfig.EmphasisPlus.disabled
55
+ : $config.FONT_COLOR,
30
56
  },
31
57
  });
@@ -16,11 +16,11 @@ import {isWebInternal} from '../../utils/common';
16
16
  import SelectDevice from '../../subComponents/SelectDevice';
17
17
  import {useString} from '../../utils/useString';
18
18
 
19
- const selectDevice: React.FC = () => {
20
- //commented for v1 release
21
- //const selectInputDeviceLabel = useString('selectInputDeviceLabel')();
22
- const selectInputDeviceLabel = 'Select Input Device';
23
- return <SelectDevice />;
19
+ export interface DeviceSelectProps {
20
+ isOnPrecall?: boolean;
21
+ }
22
+ const selectDevice = (props?: DeviceSelectProps) => {
23
+ return <SelectDevice {...props} />;
24
24
  };
25
25
 
26
26
  export default selectDevice;
@@ -20,27 +20,31 @@ import useGetName from '../../utils/useGetName';
20
20
  import Input from '../../atoms/Input';
21
21
  import ThemeConfig from '../../theme';
22
22
  import {maxInputLimit} from '../../utils/common';
23
+ import {
24
+ precallInputGettingName,
25
+ precallNameInputPlaceholderText,
26
+ precallYouAreJoiningAsHeading,
27
+ } from '../../language/default-labels/precallScreenLabels';
23
28
 
24
29
  export interface PreCallTextInputProps {
25
30
  labelStyle?: TextStyle;
26
31
  textInputStyle?: TextStyle;
27
32
  isDesktop?: boolean;
33
+ isOnPrecall?: boolean;
28
34
  }
29
- const PreCallTextInput: React.FC = (props?: PreCallTextInputProps) => {
30
- //commented for v1 release
31
- // const userNamePlaceholder = useString('userNamePlaceholder')();
32
- // const fetchingNamePlaceholder = useString('fetchingNamePlaceholder')();
33
- const userNamePlaceholder = 'Enter Your Name';
34
- const fetchingNamePlaceholder = 'Getting name...';
35
+ const PreCallTextInput = (props?: PreCallTextInputProps) => {
36
+ const placeHolder = useString(precallNameInputPlaceholderText)();
37
+ const joiningAs = useString(precallYouAreJoiningAsHeading)();
38
+ const fetchingNamePlaceholder = useString(precallInputGettingName)();
35
39
  const username = useGetName();
36
40
  const setUsername = useSetName();
37
- const {isJoinDataFetched} = useRoomInfo();
38
- const {isDesktop = false} = props;
41
+ const {isJoinDataFetched, isInWaitingRoom} = useRoomInfo();
42
+ const {isDesktop = false, isOnPrecall = false} = props;
39
43
 
40
44
  return (
41
45
  <Input
42
46
  maxLength={maxInputLimit}
43
- label={isDesktop ? ($config.EVENT_MODE ? 'Your Name' : 'Joining as') : ''}
47
+ label={isOnPrecall ? '' : isDesktop ? joiningAs : ''}
44
48
  labelStyle={
45
49
  props?.labelStyle
46
50
  ? props.labelStyle
@@ -54,16 +58,10 @@ const PreCallTextInput: React.FC = (props?: PreCallTextInputProps) => {
54
58
  }
55
59
  value={username}
56
60
  autoFocus
57
- onChangeText={(text) => setUsername(text ? text : '')}
61
+ onChangeText={text => setUsername(text ? text : '')}
58
62
  onSubmitEditing={() => {}}
59
- placeholder={
60
- isJoinDataFetched
61
- ? $config.EVENT_MODE
62
- ? 'Luke Skywalker'
63
- : userNamePlaceholder
64
- : fetchingNamePlaceholder
65
- }
66
- editable={isJoinDataFetched}
63
+ placeholder={isJoinDataFetched ? placeHolder : fetchingNamePlaceholder}
64
+ editable={!isInWaitingRoom && isJoinDataFetched}
67
65
  />
68
66
  );
69
67
  };
@@ -16,6 +16,7 @@ import {SdkApiContext} from '../SdkApiContext';
16
16
  import {useRoomInfo} from '../room-info/useRoomInfo';
17
17
  import SDKEvents from '../../utils/SdkEvents';
18
18
  import DeviceContext from '../DeviceContext';
19
+ import useSetName from '../../utils/useSetName';
19
20
 
20
21
  export interface PreCallContextInterface {
21
22
  callActive: boolean;
@@ -50,17 +51,26 @@ interface PreCallProviderProps {
50
51
  }
51
52
 
52
53
  const PreCallProvider = (props: PreCallProviderProps) => {
53
- const {join} = useContext(SdkApiContext);
54
+ const {join, enterRoom} = useContext(SdkApiContext);
54
55
  const roomInfo = useRoomInfo();
55
56
  const {deviceList} = useContext(DeviceContext);
57
+ const setUsername = useSetName();
56
58
 
57
59
  useEffect(() => {
58
- if (join.phrase) {
60
+ if (join.initialized && join.phrase) {
61
+ if (join.userName) {
62
+ setUsername(join.userName);
63
+ }
64
+
59
65
  //@ts-ignore
60
66
  join?.promise?.res([
61
67
  roomInfo.data,
62
- () => {
63
- props.value.setCallActive(true);
68
+ (userName: string) => {
69
+ return new Promise((res, rej) => {
70
+ setUsername(userName);
71
+ enterRoom.set({res, rej});
72
+ props.value.setCallActive(true);
73
+ });
64
74
  },
65
75
  ]);
66
76
  }