agora-appbuilder-core 4.0.0-api.4 → 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 +3 -3
  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 +48 -26
  136. package/template/src/atoms/ToolbarPreset.tsx +38 -6
  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 +664 -56
  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 +9 -7
  165. package/template/src/components/Navbar.tsx +115 -46
  166. package/template/src/components/NavbarMobile.tsx +119 -0
  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 +9 -7
  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 -6
  283. package/template/src/pages/video-call/ActionSheet.tsx +55 -15
  284. package/template/src/pages/video-call/ActionSheetContent.tsx +495 -306
  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 +201 -82
  292. package/template/src/pages/video-call/VideoCallScreen.native.tsx +3 -2
  293. package/template/src/pages/video-call/VideoCallScreen.tsx +116 -41
  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,218 @@
1
+ import React from 'react';
2
+ import {View, StyleSheet, Text, ScrollView} from 'react-native';
3
+ import MeetingInfo from './MeetingInfo';
4
+ import MeetingInfoCardHeader from './MeetingInfoCardHeader';
5
+ import MeetingInfoLinks from './MeetingInfoLinks';
6
+ import ThemeConfig from '../../theme';
7
+ import Spacer from '../../atoms/Spacer';
8
+ import TertiaryButton from '../../atoms/TertiaryButton';
9
+ import {SHARE_LINK_CONTENT_TYPE, useShareLink} from '../useShareLink';
10
+ import useGetName from '../../utils/useGetName';
11
+ import hexadecimalTransparency from '../../utils/hexadecimalTransparency';
12
+ import {isMobileUA, isValidReactComponent} from '../../utils/common';
13
+ import Avatar from '../../atoms/Avatar';
14
+ import {useCustomization} from 'customization-implementation';
15
+ import {useString} from '../../utils/useString';
16
+ import {
17
+ inviteTileCopyInviteBtnText,
18
+ inviteTileNoElseJoinedYetText,
19
+ inviteTileWelcomeText,
20
+ } from '../../language/default-labels/videoCallScreenLabels';
21
+
22
+ const waveHandEmoji = '👋';
23
+
24
+ export default function MeetingInfoGridTile() {
25
+ const isMobile = isMobileUA();
26
+ const welcomeLabel = useString(inviteTileWelcomeText)();
27
+ const copyInviteButtonLabel = useString(inviteTileCopyInviteBtnText)();
28
+ const copyInviteButton = copyInviteButtonLabel;
29
+ const {copyShareLinkToClipboard} = useShareLink();
30
+ const username = useGetName();
31
+ const noOneElseJoinedYet = useString(inviteTileNoElseJoinedYetText)();
32
+ const {InvitePopupContent, InvitePopupTitle} = useCustomization(data => {
33
+ let components: {
34
+ InvitePopupContent?: React.ComponentType;
35
+ InvitePopupTitle?: string;
36
+ } = {
37
+ InvitePopupContent: null,
38
+ InvitePopupTitle: null,
39
+ };
40
+ if (
41
+ data?.components?.videoCall &&
42
+ typeof data?.components?.videoCall === 'object'
43
+ ) {
44
+ if (
45
+ data?.components?.videoCall?.invitePopup?.renderComponent &&
46
+ typeof data?.components?.videoCall?.invitePopup?.renderComponent !==
47
+ 'object' &&
48
+ isValidReactComponent(
49
+ data?.components?.videoCall?.invitePopup?.renderComponent,
50
+ )
51
+ ) {
52
+ components.InvitePopupContent =
53
+ data?.components?.videoCall.invitePopup.renderComponent;
54
+ }
55
+ if (data?.components?.videoCall?.invitePopup?.title) {
56
+ components.InvitePopupTitle =
57
+ data?.components?.videoCall.invitePopup.title;
58
+ }
59
+ }
60
+ return components;
61
+ });
62
+
63
+ return (
64
+ <View style={style.root}>
65
+ <ScrollView
66
+ contentContainerStyle={[style.scroll, !isMobile && {paddingLeft: 0}]}>
67
+ <View style={style.inviteContainerTile}>
68
+ <View style={style.inviteTile}>
69
+ <MeetingInfo
70
+ padding="dense"
71
+ margin="dense"
72
+ cardContainerStyle={{maxWidth: 420}}>
73
+ <MeetingInfoCardHeader
74
+ avatar={
75
+ isMobile ? null : (
76
+ <Avatar
77
+ name={waveHandEmoji}
78
+ containerStyle={style.avatarContainerStyle}
79
+ textStyle={[style.avatarTextStyle]}
80
+ />
81
+ )
82
+ }>
83
+ <>
84
+ <View style={style.flexRow}>
85
+ {isMobile && (
86
+ <Text
87
+ style={{
88
+ marginRight: 5,
89
+ transform: [{scaleX: -1}],
90
+ }}>
91
+ {waveHandEmoji}
92
+ </Text>
93
+ )}
94
+ <Text
95
+ style={[style.heading, {flexShrink: 1}]}
96
+ numberOfLines={1}>
97
+ {welcomeLabel} {username}
98
+ </Text>
99
+ </View>
100
+ {isMobile && <Spacer size={10} />}
101
+ <View style={{flexDirection: 'row'}}>
102
+ <Text style={[style.subheading, {flexShrink: 1}]}>
103
+ {noOneElseJoinedYet}
104
+ </Text>
105
+ </View>
106
+ </>
107
+ </MeetingInfoCardHeader>
108
+ {InvitePopupContent ? (
109
+ <>
110
+ <Spacer size={20} />
111
+ <InvitePopupContent />
112
+ <Spacer size={20} />
113
+ </>
114
+ ) : (
115
+ <>
116
+ {isMobile ? <Spacer size={20} /> : <Spacer size={30} />}
117
+ {!isMobile && (
118
+ <MeetingInfoLinks variant="secondary" size="tiny" />
119
+ )}
120
+ <View>
121
+ <Spacer size={20} />
122
+ <TertiaryButton
123
+ text={copyInviteButton}
124
+ containerStyle={{
125
+ width: '100%',
126
+ height: 48,
127
+ paddingVertical: 12,
128
+ paddingHorizontal: 12,
129
+ borderRadius: ThemeConfig.BorderRadius.medium,
130
+ }}
131
+ textStyle={{
132
+ fontSize: ThemeConfig.FontSize.normal,
133
+ lineHeight: 24,
134
+ }}
135
+ {...(isMobile && {
136
+ iconName: 'share',
137
+ iconSize: 20,
138
+ iconColor: $config.SECONDARY_ACTION_COLOR,
139
+ })}
140
+ onPress={() => {
141
+ copyShareLinkToClipboard(
142
+ SHARE_LINK_CONTENT_TYPE.MEETING_INVITE,
143
+ );
144
+ }}
145
+ />
146
+ </View>
147
+ </>
148
+ )}
149
+ </MeetingInfo>
150
+ </View>
151
+ </View>
152
+ </ScrollView>
153
+ </View>
154
+ );
155
+ }
156
+
157
+ const style = StyleSheet.create({
158
+ root: {
159
+ flex: 1,
160
+ flexShrink: 0,
161
+ },
162
+ scroll: {
163
+ flexGrow: 1,
164
+ padding: 4,
165
+ },
166
+ inviteContainerTile: {
167
+ flex: 1,
168
+ flexDirection: 'column',
169
+ justifyContent: 'center',
170
+ alignItems: 'center',
171
+ backgroundColor: $config.VIDEO_AUDIO_TILE_COLOR,
172
+ borderRadius: ThemeConfig.BorderRadius.small,
173
+ },
174
+ inviteTile: {
175
+ flex: 1,
176
+ width: '100%',
177
+ height: '100%',
178
+ paddingHorizontal: isMobileUA() ? 0 : 35,
179
+ borderRadius: 2,
180
+ },
181
+ flexRow: {
182
+ display: 'flex',
183
+ flexDirection: 'row',
184
+ alignItems: 'center',
185
+ },
186
+ heading: {
187
+ fontSize: isMobileUA()
188
+ ? ThemeConfig.FontSize.small
189
+ : ThemeConfig.FontSize.tiny,
190
+ fontWeight: '400',
191
+ lineHeight: ThemeConfig.FontSize.normal,
192
+ color: $config.FONT_COLOR + hexadecimalTransparency['70%'],
193
+ fontFamily: ThemeConfig.FontFamily.sansPro,
194
+ paddingVertical: 2,
195
+ },
196
+ subheading: {
197
+ fontSize: ThemeConfig.FontSize.large,
198
+ fontWeight: '600',
199
+ lineHeight: ThemeConfig.FontSize.large,
200
+ color: $config.FONT_COLOR,
201
+ fontFamily: ThemeConfig.FontFamily.sansPro,
202
+ paddingVertical: 2,
203
+ },
204
+ avatarContainerStyle: {
205
+ width: 56,
206
+ height: 56,
207
+ borderRadius: 28,
208
+ backgroundColor: $config.VIDEO_AUDIO_TILE_AVATAR_COLOR,
209
+ },
210
+ avatarTextStyle: {
211
+ fontSize: ThemeConfig.FontSize.large + 4,
212
+ lineHeight: 12,
213
+ fontWeight: '400',
214
+ textAlignVertical: 'center',
215
+ transform: [{scaleX: -1}],
216
+ display: 'flex',
217
+ },
218
+ });
@@ -0,0 +1,122 @@
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
+ import React from 'react';
13
+ import platform from '../../subComponents/Platform';
14
+ import {SHARE_LINK_CONTENT_TYPE, useShareLink} from '../useShareLink';
15
+ import isSDKCheck from '../../utils/isSDK';
16
+ import {useRoomInfo} from '../room-info/useRoomInfo';
17
+ import {FontSizes} from '../../theme';
18
+ import MeetingLink from '../../atoms/MeetingLink';
19
+ import {useString} from '../../utils/useString';
20
+ import {
21
+ shareRoomAttendeeLinkLabel,
22
+ shareRoomAttendeeLinkSubText,
23
+ shareRoomHostLinkLabel,
24
+ shareRoomHostLinkSubText,
25
+ shareRoomPSTNLabel,
26
+ shareRoomPSTNNumberLabel,
27
+ shareRoomPSTNPinLabel,
28
+ shareRoomPSTNSubText,
29
+ } from '../../language/default-labels/shareLinkScreenLabels';
30
+
31
+ export interface MeetingInfoBodyProps {
32
+ showHelperText?: boolean;
33
+ size?: keyof FontSizes;
34
+ variant?: 'primary' | 'secondary';
35
+ }
36
+ export const MeetingInfoLinks = (props?: MeetingInfoBodyProps) => {
37
+ const {showHelperText = false, variant = 'primary', size = 'medium'} = props;
38
+ const {
39
+ data: {isHost, pstn, isSeparateHostLink},
40
+ } = useRoomInfo();
41
+ const {getShareLink} = useShareLink();
42
+
43
+ const isSDK = isSDKCheck();
44
+ const isWebCheck =
45
+ $config.FRONTEND_ENDPOINT || (platform === 'web' && !isSDK);
46
+
47
+ const shareRoomHostLink = useString<any>(shareRoomHostLinkLabel)(isWebCheck);
48
+ const shareRoomHostLinkSubTextLocal = useString<any>(
49
+ shareRoomHostLinkSubText,
50
+ )();
51
+ const shareRoomAttendeeLink = useString<any>(shareRoomAttendeeLinkLabel)(
52
+ isWebCheck,
53
+ );
54
+ const shareRoomAttendeeLinkSubTextLocal = useString<any>(
55
+ shareRoomAttendeeLinkSubText,
56
+ )();
57
+ const shareRoomPSTN = useString<any>(shareRoomPSTNLabel)();
58
+ const shareRoomPSTNNumber = useString<any>(shareRoomPSTNNumberLabel)();
59
+ const shareRoomPSTNPin = useString<any>(shareRoomPSTNPinLabel)();
60
+ const shareRoomPSTNSubTextLocal = useString<any>(shareRoomPSTNSubText)();
61
+
62
+ const getAttendeeLabel = () => shareRoomAttendeeLink;
63
+
64
+ const getHostLabel = () => shareRoomHostLink;
65
+
66
+ return (
67
+ <>
68
+ {isSeparateHostLink ? (
69
+ <>
70
+ <MeetingLink
71
+ styleProps={{
72
+ size,
73
+ variant,
74
+ }}
75
+ label={getAttendeeLabel()}
76
+ link={getShareLink(SHARE_LINK_CONTENT_TYPE.ATTENDEE)}
77
+ linkToCopy={SHARE_LINK_CONTENT_TYPE.ATTENDEE}
78
+ helperText={showHelperText ? shareRoomAttendeeLinkSubTextLocal : ''}
79
+ gutterBottom
80
+ />
81
+ </>
82
+ ) : (
83
+ <></>
84
+ )}
85
+ {isHost ? (
86
+ <>
87
+ <MeetingLink
88
+ styleProps={{
89
+ size,
90
+ variant,
91
+ }}
92
+ label={getHostLabel()}
93
+ link={getShareLink(SHARE_LINK_CONTENT_TYPE.HOST)}
94
+ linkToCopy={SHARE_LINK_CONTENT_TYPE.HOST}
95
+ helperText={showHelperText ? shareRoomHostLinkSubTextLocal : ''}
96
+ gutterBottom
97
+ />
98
+ </>
99
+ ) : (
100
+ <></>
101
+ )}
102
+ {$config.PSTN && pstn && pstn?.number && pstn?.pin ? (
103
+ <>
104
+ <MeetingLink
105
+ styleProps={{
106
+ size,
107
+ variant,
108
+ }}
109
+ label={shareRoomPSTN}
110
+ link={`${shareRoomPSTNNumber} - ${pstn?.number} | ${shareRoomPSTNPin} - ${pstn?.pin}`}
111
+ linkToCopy={SHARE_LINK_CONTENT_TYPE.PSTN}
112
+ helperText={showHelperText ? shareRoomPSTNSubTextLocal : ''}
113
+ gutterBottom
114
+ />
115
+ </>
116
+ ) : (
117
+ <></>
118
+ )}
119
+ </>
120
+ );
121
+ };
122
+ export default MeetingInfoLinks;
@@ -13,6 +13,7 @@ import {useLiveStreamDataContext} from '../contexts/LiveStreamDataContext';
13
13
  import {useScreenContext} from '../contexts/ScreenShareContext';
14
14
  import ScreenshareParticipants from './ScreenshareParticipants';
15
15
  import hexadecimalTransparency from '../../utils/hexadecimalTransparency';
16
+ import {videoRoomUserFallbackText} from '../../language/default-labels/videoCallScreenLabels';
16
17
 
17
18
  const AllAudienceParticipants = (props: any) => {
18
19
  const {screenShareData} = useScreenContext();
@@ -25,9 +26,7 @@ const AllAudienceParticipants = (props: any) => {
25
26
  } = props;
26
27
  const {defaultContent} = useContent();
27
28
  const {localUid} = useContext(chatContext);
28
- //commented for v1 release
29
- //const participantListPlaceholder = useString('participantListPlaceholder')();
30
- const remoteUserDefaultLabel = 'User';
29
+ const remoteUserDefaultLabel = useString(videoRoomUserFallbackText)();
31
30
  const getParticipantName = (uid: UidType) => {
32
31
  return defaultContent[uid]?.name || remoteUserDefaultLabel;
33
32
  };
@@ -70,7 +69,7 @@ const AllAudienceParticipants = (props: any) => {
70
69
  ) : (
71
70
  <>
72
71
  {/**Audience should see his name first */}
73
- {uids.filter((i) => i === localUid).length ? (
72
+ {uids.filter(i => i === localUid).length ? (
74
73
  <>
75
74
  <Participant
76
75
  isLocal={true}
@@ -102,7 +101,7 @@ const AllAudienceParticipants = (props: any) => {
102
101
  )}
103
102
  {/* Others Audience in the call */}
104
103
  {uids
105
- .filter((i) => i !== localUid)
104
+ .filter(i => i !== localUid)
106
105
  .map((uid: any, index: number) => (
107
106
  <>
108
107
  <Participant
@@ -9,13 +9,12 @@ import Spacer from '../../atoms/Spacer';
9
9
  import {useVideoMeetingData} from '../contexts/VideoMeetingDataContext';
10
10
  import {useScreenContext} from '../contexts/ScreenShareContext';
11
11
  import hexadecimalTransparency from '../../utils/hexadecimalTransparency';
12
+ import {videoRoomUserFallbackText} from '../../language/default-labels/videoCallScreenLabels';
12
13
 
13
14
  export default function AllHostParticipants(props: any) {
14
15
  const localUid = useLocalUid();
15
16
  const {screenShareData} = useScreenContext();
16
- //commented for v1 release
17
- //const remoteUserDefaultLabel = useString('remoteUserDefaultLabel')();
18
- const remoteUserDefaultLabel = 'User';
17
+ const remoteUserDefaultLabel = useString(videoRoomUserFallbackText)();
19
18
  const {defaultContent} = useContent();
20
19
  const getParticipantName = (uid: UidType) => {
21
20
  return defaultContent[uid]?.name || remoteUserDefaultLabel;
@@ -67,7 +66,7 @@ export default function AllHostParticipants(props: any) {
67
66
  <>
68
67
  <Spacer size={4} />
69
68
  {/* User should see his name first */}
70
- {uids.filter((uid) => uid === localUid).length > 0 ? (
69
+ {uids.filter(uid => uid === localUid).length > 0 ? (
71
70
  <>
72
71
  <Participant
73
72
  isLocal={true}
@@ -89,10 +88,10 @@ export default function AllHostParticipants(props: any) {
89
88
  {/* Others Users in the call */}
90
89
  {uids
91
90
  .filter(
92
- (uid) => uid !== localUid && defaultContent[uid].type === 'rtc',
91
+ uid => uid !== localUid && defaultContent[uid].type === 'rtc',
93
92
  )
94
93
  .map(
95
- (uid) => (
94
+ uid => (
96
95
  // defaultContent[uid]?.type === 'screenshare' ? (
97
96
  // <ScreenshareParticipants
98
97
  // name={getParticipantName(uid)}
@@ -13,7 +13,7 @@ import React, {useContext, useRef, useState} from 'react';
13
13
  import {View, StyleSheet, Text, TouchableOpacity} from 'react-native';
14
14
  import RemoteAudioMute from '../../subComponents/RemoteAudioMute';
15
15
  import RemoteVideoMute from '../../subComponents/RemoteVideoMute';
16
- import {ClientRole, ContentInterface} from '../../../agora-rn-uikit';
16
+ import {ClientRole, ContentInterface, UidType} from '../../../agora-rn-uikit';
17
17
  import UserAvatar from '../../atoms/UserAvatar';
18
18
  import {isMobileUA, isWebInternal} from '../../utils/common';
19
19
  import ActionMenu, {ActionMenuItem} from '../../atoms/ActionMenu';
@@ -46,6 +46,13 @@ import {
46
46
  } from 'customization-api';
47
47
  import {getPinnedLayoutName} from '../../pages/video-call/DefaultLayouts';
48
48
  import UserActionMenuOptionsOptions from './UserActionMenuOptions';
49
+
50
+ import WaitingRoomButton from '../../subComponents/waiting-rooms/WaitingRoomControls';
51
+ import {useString} from '../../utils/useString';
52
+ import {
53
+ peoplePanelMeText,
54
+ peoplePanelPresenterText,
55
+ } from '../../language/default-labels/videoCallScreenLabels';
49
56
  interface ParticipantInterface {
50
57
  isLocal: boolean;
51
58
  name: string;
@@ -54,11 +61,16 @@ interface ParticipantInterface {
54
61
  isHostUser: boolean;
55
62
  isAudienceUser: boolean;
56
63
  isMobile?: boolean;
64
+ waitingRoomUser?: boolean;
57
65
  handleClose: () => {};
58
66
  updateActionSheet: (screenName: 'chat' | 'participants' | 'settings') => {};
67
+ uid?: UidType;
68
+ screenUid?: UidType;
59
69
  }
60
70
 
61
71
  const Participant = (props: ParticipantInterface) => {
72
+ const metext = useString(peoplePanelMeText)();
73
+ const presentertext = useString(peoplePanelPresenterText)();
62
74
  const {coHostUids} = useContext(LiveStreamContext);
63
75
  const [isHovered, setIsHovered] = React.useState(false);
64
76
  const [actionMenuVisible, setActionMenuVisible] = React.useState(false);
@@ -74,14 +86,18 @@ const Participant = (props: ParticipantInterface) => {
74
86
  isMobile = false,
75
87
  handleClose,
76
88
  updateActionSheet,
89
+ waitingRoomUser = false,
90
+ uid,
91
+ screenUid,
77
92
  } = props;
78
93
  const {
79
94
  data: {isHost},
80
95
  } = useRoomInfo();
81
96
 
82
97
  const showModal = () => {
83
- setActionMenuVisible((state) => !state);
98
+ setActionMenuVisible(state => !state);
84
99
  };
100
+
85
101
  return (
86
102
  <>
87
103
  <UserActionMenuOptionsOptions
@@ -104,17 +120,18 @@ const Participant = (props: ParticipantInterface) => {
104
120
  <Text style={styles.participantNameText} numberOfLines={1}>
105
121
  {name}
106
122
  </Text>
107
- {isLocal && <Text style={styles.subText}>{'Me'}</Text>}
123
+ {isLocal && <Text style={styles.subText}>{metext}</Text>}
108
124
  {!isLocal &&
109
125
  $config.EVENT_MODE &&
110
126
  coHostUids.indexOf(user.uid) !== -1 ? (
111
- <Text style={styles.subText}>{'Presenter'}</Text>
127
+ <Text style={styles.subText}>{presentertext}</Text>
112
128
  ) : (
113
129
  <></>
114
130
  )}
115
131
  </View>
116
132
  <View style={styles.iconContainer}>
117
- {isHovered || actionMenuVisible || isMobileUA() ? (
133
+ {(isHovered || actionMenuVisible || isMobileUA()) &&
134
+ !waitingRoomUser ? (
118
135
  <View
119
136
  ref={moreIconRef}
120
137
  collapsable={false}
@@ -149,6 +166,23 @@ const Participant = (props: ParticipantInterface) => {
149
166
  ) : (
150
167
  <Spacer size={24} horizontal={true} />
151
168
  )}
169
+ {waitingRoomUser ? (
170
+ <>
171
+ <WaitingRoomButton
172
+ uid={uid}
173
+ screenUid={screenUid}
174
+ isAccept={false}
175
+ />
176
+ <Spacer horizontal={true} size={8} />
177
+ <WaitingRoomButton
178
+ uid={uid}
179
+ screenUid={screenUid}
180
+ isAccept={true}
181
+ />
182
+ </>
183
+ ) : (
184
+ <></>
185
+ )}
152
186
  {showControls ? (
153
187
  <>
154
188
  <Spacer horizontal={true} size={8} />
@@ -171,8 +205,6 @@ const Participant = (props: ParticipantInterface) => {
171
205
  : $config.SEMANTIC_ERROR,
172
206
  };
173
207
  }}
174
- showLabel={false}
175
- isMobileView={isMobile}
176
208
  />
177
209
  </View>
178
210
  )
@@ -204,8 +236,6 @@ const Participant = (props: ParticipantInterface) => {
204
236
  : $config.SEMANTIC_ERROR,
205
237
  };
206
238
  }}
207
- showLabel={false}
208
- isMobileView={isMobile}
209
239
  />
210
240
  </View>
211
241
  )
@@ -285,6 +315,7 @@ const styles = StyleSheet.create({
285
315
  container: {
286
316
  flexDirection: 'row',
287
317
  justifyContent: 'space-between',
318
+ alignItems: 'center',
288
319
  paddingHorizontal: 20,
289
320
  paddingVertical: 8,
290
321
  },
@@ -12,6 +12,9 @@ interface PropsInterface {
12
12
 
13
13
  export default function ParticipantSectionTitle(props: PropsInterface) {
14
14
  const {title, count = 0} = props;
15
+ if (!count) {
16
+ return null;
17
+ }
15
18
  return (
16
19
  <TouchableOpacity
17
20
  style={style.container}
@@ -43,8 +46,8 @@ const style = StyleSheet.create({
43
46
  fontSize: 12,
44
47
  fontFamily: 'Source Sans Pro',
45
48
  fontWeight: '700',
46
- color: $config.FONT_COLOR + ThemeConfig.EmphasisPlus.medium,
47
- paddingVertical: 12,
49
+ color: $config.FONT_COLOR + ThemeConfig.EmphasisPlus.disabled,
50
+ paddingVertical: 8,
48
51
  alignSelf: 'center',
49
52
  },
50
53
  iconView: {
@@ -25,7 +25,7 @@ const ScreenshareParticipants = (props: {user: ContentInterface}) => {
25
25
  const [actionMenuVisible, setActionMenuVisible] = useState(false);
26
26
 
27
27
  const showModal = () => {
28
- setActionMenuVisible((state) => !state);
28
+ setActionMenuVisible(state => !state);
29
29
  };
30
30
  return (
31
31
  <>
@@ -39,17 +39,17 @@ const ScreenshareParticipants = (props: {user: ContentInterface}) => {
39
39
  />
40
40
  <PlatformWrapper showModal={showModal} setIsHovered={setIsHovered}>
41
41
  <View style={styles.container}>
42
- <View style={styles.userInfoContainer}>
43
- <View style={styles.bgContainerStyle}>
44
- <UserAvatar
45
- name={props.user.name}
46
- containerStyle={styles.containerStyle}
47
- textStyle={styles.textStyle}
48
- />
49
- </View>
50
- <View style={{alignSelf: 'center'}}>
51
- <Text style={styles.participantNameText}>{props.user.name}</Text>
52
- </View>
42
+ <View style={styles.bgContainerStyle}>
43
+ <UserAvatar
44
+ name={props.user.name}
45
+ containerStyle={styles.containerStyle}
46
+ textStyle={styles.textStyle}
47
+ />
48
+ </View>
49
+ <View style={{flex: 1, marginHorizontal: 8, alignSelf: 'center'}}>
50
+ <Text style={styles.participantNameText} numberOfLines={1}>
51
+ {props.user.name}
52
+ </Text>
53
53
  </View>
54
54
  {true ? (
55
55
  <View
@@ -88,11 +88,11 @@ const ScreenshareParticipants = (props: {user: ContentInterface}) => {
88
88
  />
89
89
  </View>
90
90
  ) : (
91
- <></>
91
+ <View style={{width: 24, height: 24, opacity: 0}} />
92
92
  )}
93
93
  </View>
94
94
  ) : (
95
- <></>
95
+ <View style={{width: 24, height: 24, opacity: 0}} />
96
96
  )}
97
97
  </View>
98
98
  </PlatformWrapper>
@@ -123,7 +123,6 @@ const styles = StyleSheet.create({
123
123
  width: 36,
124
124
  height: 36,
125
125
  borderRadius: 18,
126
- marginRight: 8,
127
126
  },
128
127
  containerStyle: {
129
128
  width: 36,
@@ -132,14 +131,13 @@ const styles = StyleSheet.create({
132
131
  },
133
132
  textStyle: {
134
133
  fontSize: ThemeConfig.FontSize.tiny,
135
- lineHeight: 10,
134
+ lineHeight: 12,
136
135
  fontWeight: '400',
137
136
  color: $config.CARD_LAYER_1_COLOR,
138
137
  },
139
138
  participantNameText: {
140
139
  fontWeight: '400',
141
140
  fontSize: 12,
142
- lineHeight: 15,
143
141
  fontFamily: ThemeConfig.FontFamily.sansPro,
144
142
  flexDirection: 'row',
145
143
  color: $config.FONT_COLOR,