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
@@ -15,62 +15,88 @@ import {
15
15
  InMemoryCache,
16
16
  ApolloProvider,
17
17
  NormalizedCacheObject,
18
+ // from,
18
19
  } from '@apollo/client';
19
20
  import {setContext} from '@apollo/client/link/context';
20
21
  // import useMount from './useMount';
21
- import React, {createContext, useContext, useRef} from 'react';
22
+ import React, {createContext, useContext, useEffect, useState} from 'react';
22
23
  import StorageContext from './StorageContext';
23
- import AsyncStorage from '@react-native-async-storage/async-storage'; //'@react-native-community/async-storage';
24
+ import AsyncStorage from '@react-native-async-storage/async-storage';
24
25
 
25
26
  export const GraphQLContext = createContext<{
26
27
  client: ApolloClient<NormalizedCacheObject>;
27
- }>({client: {}});
28
+ }>({
29
+ //@ts-ignore
30
+ client: {},
31
+ });
28
32
 
29
- const GraphQLProvider = (props: {children: React.ReactNode}) => {
30
- const httpLink = createHttpLink({
31
- uri: `${$config.BACKEND_ENDPOINT}/query`,
32
- });
33
- const {store} = useContext(StorageContext);
34
- const authLink = setContext(async (_, {headers}) => {
33
+ const httpLink = createHttpLink({
34
+ uri: `${$config.BACKEND_ENDPOINT}/v1/query`,
35
+ credentials: 'include',
36
+ });
37
+
38
+ const authLink = (token: string) =>
39
+ setContext(async (_, {headers}) => {
35
40
  // get the authentication token from local storage if it exists
36
41
  // return the headers to the context so httpLink can read them
37
- const storeString = await AsyncStorage.getItem('store');
38
- let token;
39
- if (storeString) {
40
- token = JSON.parse(storeString).token;
41
- }
42
- console.log('link module token', storeString);
43
- if (token) {
44
- return {
45
- headers: {
46
- ...headers,
42
+ return {
43
+ headers: {
44
+ ...headers,
45
+ 'X-Project-ID': $config.PROJECT_ID,
46
+ 'X-Platform-ID': 'turnkey_web',
47
+ ...(token && {
47
48
  authorization: token ? `Bearer ${token}` : '',
48
- },
49
- };
50
- } else {
51
- return headers;
52
- }
49
+ }),
50
+ },
51
+ };
53
52
  });
54
53
 
55
- const client = useRef(
54
+ const GraphQLProvider = (props: {children: React.ReactNode}) => {
55
+ const {store} = useContext(StorageContext);
56
+ const [client, setClient] = useState(
56
57
  new ApolloClient({
57
- link: authLink.concat(httpLink),
58
+ link: authLink(store?.token).concat(httpLink),
58
59
  cache: new InMemoryCache(),
59
60
  }),
60
61
  );
61
62
 
62
- // useEffect(() => {
63
- // console.log("store changed", store)
64
- // client.current = new ApolloClient({
65
- // link: authLink.concat(httpLink),
66
- // cache: new InMemoryCache(),
67
- // });
68
- // }, [authLink, httpLink, store]);
69
- console.log('GraphQL render triggered', store);
63
+ useEffect(() => {
64
+ setClient(
65
+ new ApolloClient({
66
+ link: authLink(store?.token).concat(httpLink),
67
+ cache: new InMemoryCache(),
68
+ }),
69
+ );
70
+ }, [store?.token]);
71
+
72
+ // const errorLink = onError(
73
+ // ({graphQLErrors, networkError, operation, forward}) => {
74
+ // // To retry on network errors, we recommend the RetryLink
75
+ // // instead of the onError link. This just logs the error.
76
+ // if (networkError) {
77
+
78
+ // // switch (err.extensions.code) {
79
+ // // // Apollo Server sets code to UNAUTHENTICATED
80
+ // // // when an AuthenticationError is thrown in a resolver
81
+ // // case 'UNAUTHENTICATED':
82
+ // // // Modify the operation context with a new token
83
+ // // const oldHeaders = operation.getContext().headers;
84
+ // // operation.setContext({
85
+ // // headers: {
86
+ // // ...oldHeaders,
87
+ // // authorization: getNewToken(),
88
+ // // },
89
+ // // });
90
+ // // // Retry the request, returning the new observable
91
+ // // return forward(operation);
92
+ // // }
93
+ // }
94
+ // },
95
+ // );
70
96
 
71
97
  return (
72
- <GraphQLContext.Provider value={{client: client.current}}>
73
- <ApolloProvider client={client.current}>{props.children}</ApolloProvider>
98
+ <GraphQLContext.Provider value={{client: client}}>
99
+ <ApolloProvider client={client}>{props.children}</ApolloProvider>
74
100
  </GraphQLContext.Provider>
75
101
  );
76
102
  };
@@ -9,13 +9,15 @@
9
9
  information visit https://appbuilder.agora.io.
10
10
  *********************************************
11
11
  */
12
- import {layoutComponent, useContent} from 'customization-api';
12
+ import {LayoutComponent, useContent} from 'customization-api';
13
13
  import React, {useContext, useMemo, useState} from 'react';
14
14
  import {View, StyleSheet, Pressable, Text} from 'react-native';
15
15
  import {isWebInternal, useIsDesktop} from '../utils/common';
16
16
  import {useSetPinnedLayout} from '../pages/video-call/DefaultLayouts';
17
17
  import RenderComponent from '../pages/video-call/RenderComponent';
18
18
  import {ClientRole, DispatchContext, PropsContext} from '../../agora-rn-uikit';
19
+ import LiveStreamAttendeeLandingTile from './livestream/views/LiveStreamAttendeeLandingTile';
20
+
19
21
  const layout = (len: number, isDesktop: boolean = true) => {
20
22
  const rows = Math.round(Math.sqrt(len));
21
23
  const cols = Math.ceil(len / rows);
@@ -34,10 +36,11 @@ const layout = (len: number, isDesktop: boolean = true) => {
34
36
  };
35
37
  };
36
38
 
37
- const GridVideo: layoutComponent = ({renderData}) => {
39
+ const GridVideo: LayoutComponent = ({renderData}) => {
38
40
  const {dispatch} = useContext(DispatchContext);
39
41
  const {rtcProps} = useContext(PropsContext);
40
- const {activeUids} = useContent();
42
+ const {activeUids, customContent, pinnedUid, secondaryPinnedUid} =
43
+ useContent();
41
44
  const isDesktop = useIsDesktop();
42
45
 
43
46
  let {matrix, dims} = useMemo(
@@ -51,29 +54,36 @@ const GridVideo: layoutComponent = ({renderData}) => {
51
54
  if (
52
55
  $config.EVENT_MODE &&
53
56
  rtcProps?.role === ClientRole.Audience &&
54
- activeUids.length === 0
57
+ activeUids.filter(i => !customContent[i]).length === 0
55
58
  ) {
56
- return (
57
- <View style={style.infoTextContainer}>
58
- <Text style={style.infoTextStyle}>Waiting for the host to join...</Text>
59
- </View>
60
- );
59
+ return <LiveStreamAttendeeLandingTile />;
61
60
  }
62
61
 
63
62
  return (
64
63
  <View style={[style.full]}>
65
64
  {matrix.map((r, ridx) => (
66
- <View style={style.gridRow} key={ridx}>
65
+ <View
66
+ style={[
67
+ style.gridRow,
68
+ {paddingBottom: ridx === matrix.length - 1 ? 0 : 4},
69
+ ]}
70
+ key={ridx}>
67
71
  {r.map((c, cidx) => (
68
72
  <Pressable
69
73
  disabled={renderData.length === 1}
70
74
  onPress={() => {
71
- if (!(ridx === 0 && cidx === 0)) {
75
+ //if (!(ridx === 0 && cidx === 0)) {
76
+ const currentUid = renderData[ridx * dims.c + cidx];
77
+ if (
78
+ currentUid !== pinnedUid &&
79
+ currentUid !== secondaryPinnedUid
80
+ ) {
72
81
  dispatch({
73
- type: 'SwapVideo',
82
+ type: 'ActiveSpeaker',
74
83
  value: [renderData[ridx * dims.c + cidx]],
75
84
  });
76
85
  }
86
+ //}
77
87
  setPinnedLayout();
78
88
  }}
79
89
  style={{
@@ -118,7 +128,7 @@ const style = StyleSheet.create({
118
128
  flex: 1,
119
129
  flexDirection: 'row',
120
130
  width: '100%',
121
- paddingVertical: 4,
131
+ paddingTop: 4,
122
132
  },
123
133
  gridVideoContainerInner: {
124
134
  //borderRadius: 12,
@@ -11,13 +11,17 @@
11
11
  */
12
12
  import React, {useRef, useState} from 'react';
13
13
  import {View, StyleSheet, useWindowDimensions} from 'react-native';
14
- import SecondaryButton from '../atoms/SecondaryButton';
15
14
  import {useString} from '../utils/useString';
16
15
  import useRemoteMute, {MUTE_REMOTE_TYPE} from '../utils/useRemoteMute';
17
16
  import TertiaryButton from '../atoms/TertiaryButton';
18
17
  import Spacer from '../atoms/Spacer';
19
18
  import RemoteMutePopup from '../subComponents/RemoteMutePopup';
20
19
  import {calculatePosition} from '../utils/common';
20
+ import {
21
+ I18nMuteType,
22
+ peoplePanelMuteAllMicBtnText,
23
+ peoplePanelTurnoffAllCameraBtnText,
24
+ } from '../language/default-labels/videoCallScreenLabels';
21
25
 
22
26
  export interface MuteAllAudioButtonProps {
23
27
  render?: (onPress: () => void) => JSX.Element;
@@ -28,9 +32,7 @@ export const MuteAllAudioButton = (props: MuteAllAudioButtonProps) => {
28
32
  const audioBtnRef = useRef(null);
29
33
  const [modalPosition, setModalPosition] = useState({});
30
34
  const muteRemoteAudio = useRemoteMute();
31
- //commented for v1 release
32
- //const muteAllAudioButton = useString('muteAllAudioButton')();
33
- const muteAllAudioButton = 'Mute all';
35
+ const muteAllAudioButton = useString(peoplePanelMuteAllMicBtnText)();
34
36
  const onPressAction = () => muteRemoteAudio(MUTE_REMOTE_TYPE.audio);
35
37
  const {width: globalWidth, height: globalHeight} = useWindowDimensions();
36
38
  const showAudioModal = () => {
@@ -63,7 +65,7 @@ export const MuteAllAudioButton = (props: MuteAllAudioButtonProps) => {
63
65
  ) : (
64
66
  <>
65
67
  <RemoteMutePopup
66
- type="audio"
68
+ type={I18nMuteType.audio}
67
69
  actionMenuVisible={showAudioMuteModal}
68
70
  setActionMenuVisible={setShowAudioMuteModal}
69
71
  name={null}
@@ -74,7 +76,7 @@ export const MuteAllAudioButton = (props: MuteAllAudioButtonProps) => {
74
76
  }}
75
77
  />
76
78
  <TertiaryButton
77
- setRef={(ref) => (audioBtnRef.current = ref)}
79
+ setRef={ref => (audioBtnRef.current = ref)}
78
80
  onPress={onPress}
79
81
  text={muteAllAudioButton}
80
82
  />
@@ -91,9 +93,7 @@ export const MuteAllVideoButton = (props: MuteAllVideoButtonProps) => {
91
93
  const [modalPosition, setModalPosition] = useState({});
92
94
  const muteRemoteVideo = useRemoteMute();
93
95
  const {width: globalWidth, height: globalHeight} = useWindowDimensions();
94
- //commented for v1 release
95
- //const muteAllVideoButton = useString('muteAllVideoButton')();
96
- const muteAllVideoButton = 'Turn off all cameras';
96
+ const muteAllVideoButton = useString(peoplePanelTurnoffAllCameraBtnText)();
97
97
  const onPressAction = () => muteRemoteVideo(MUTE_REMOTE_TYPE.video);
98
98
  const showVideoModal = () => {
99
99
  videoBtnRef?.current?.measure(
@@ -125,7 +125,7 @@ export const MuteAllVideoButton = (props: MuteAllVideoButtonProps) => {
125
125
  ) : (
126
126
  <>
127
127
  <RemoteMutePopup
128
- type="video"
128
+ type={I18nMuteType.video}
129
129
  actionMenuVisible={showVideoMuteModal}
130
130
  setActionMenuVisible={setShowVideoMuteModal}
131
131
  name={null}
@@ -136,7 +136,7 @@ export const MuteAllVideoButton = (props: MuteAllVideoButtonProps) => {
136
136
  }}
137
137
  />
138
138
  <TertiaryButton
139
- setRef={(ref) => (videoBtnRef.current = ref)}
139
+ setRef={ref => (videoBtnRef.current = ref)}
140
140
  onPress={onPress}
141
141
  text={muteAllVideoButton}
142
142
  />
@@ -145,9 +145,6 @@ export const MuteAllVideoButton = (props: MuteAllVideoButtonProps) => {
145
145
  };
146
146
 
147
147
  const HostControlView = () => {
148
- //commented for v1 release
149
- //const hostControlsLabel = useString('hostControlsLabel')();
150
-
151
148
  return (
152
149
  <View style={style.container}>
153
150
  {!$config.AUDIO_ROOM && <MuteAllVideoButton />}
@@ -16,7 +16,6 @@ import SessionContext from './SessionContext';
16
16
  const JoinPhrase = () => {
17
17
  const {phrase} = useParams();
18
18
  const {joinSession} = useContext(SessionContext);
19
- console.log({phrase});
20
19
  joinSession({phrase});
21
20
  return <></>;
22
21
  };
@@ -13,6 +13,7 @@ import React from 'react';
13
13
  import {View, StyleSheet} from 'react-native';
14
14
  import Toolbar from '../atoms/Toolbar';
15
15
  import {ToolbarCustomItem} from '../atoms/ToolbarPreset';
16
+ import {CustomToolbarSort} from '../utils/common';
16
17
 
17
18
  const defaultStartItems: ToolbarCustomItem[] = [];
18
19
  const defaultCenterItems: ToolbarCustomItem[] = [];
@@ -30,17 +31,17 @@ const Leftbar = (props: LeftbarProps) => {
30
31
  const customStartItems = customItems
31
32
  ?.filter((i) => i?.align === 'start' && !isHidden(i))
32
33
  ?.concat(includeDefaultItems ? defaultStartItems : [])
33
- ?.sort((a, b) => a?.order - b?.order);
34
+ ?.sort(CustomToolbarSort);
34
35
 
35
36
  const customCenterItems = customItems
36
37
  ?.filter((i) => i?.align === 'center' && !isHidden(i))
37
38
  ?.concat(includeDefaultItems ? defaultCenterItems : [])
38
- ?.sort((a, b) => a?.order - b?.order);
39
+ ?.sort(CustomToolbarSort);
39
40
 
40
41
  const customEndItems = customItems
41
42
  ?.filter((i) => i?.align === 'end' && !isHidden(i))
42
43
  ?.concat(includeDefaultItems ? defaultEndItems : [])
43
- ?.sort((a, b) => a?.order - b?.order);
44
+ ?.sort(CustomToolbarSort);
44
45
 
45
46
  const renderContent = (
46
47
  items: ToolbarCustomItem[],
@@ -9,7 +9,7 @@
9
9
  information visit https://appbuilder.agora.io.
10
10
  *********************************************
11
11
  */
12
- import React, {useContext, useState} from 'react';
12
+ import React, {useContext, useEffect, useState} from 'react';
13
13
  import {
14
14
  View,
15
15
  Text,
@@ -32,6 +32,7 @@ import {useChatNotification} from '../components/chat-notification/useChatNotifi
32
32
  import useLayoutsData from '../pages/video-call/useLayoutsData';
33
33
  import {
34
34
  BREAKPOINTS,
35
+ CustomToolbarSort,
35
36
  isAndroid,
36
37
  isIOS,
37
38
  isMobileUA,
@@ -63,6 +64,13 @@ import ToolbarItem from '../atoms/ToolbarItem';
63
64
  import {ToolbarCustomItem} from '../atoms/ToolbarPreset';
64
65
  import {useToolbarMenu} from '../utils/useMenu';
65
66
  import ToolbarMenuItem from '../atoms/ToolbarMenuItem';
67
+ import {useActionSheet} from '../utils/useActionSheet';
68
+ import {useWaitingRoomContext} from './contexts/WaitingRoomContext';
69
+ import {
70
+ toolbarItemChatText,
71
+ toolbarItemPeopleText,
72
+ videoRoomRecordingText,
73
+ } from '../language/default-labels/videoCallScreenLabels';
66
74
 
67
75
  export const ParticipantsCountView = ({
68
76
  isMobileView = false,
@@ -70,9 +78,10 @@ export const ParticipantsCountView = ({
70
78
  isMobileView?: boolean;
71
79
  }) => {
72
80
  const {onlineUsersCount} = useContext(ChatContext);
81
+ const peopleLabel = useString(toolbarItemPeopleText)();
73
82
  return isMobileView ? (
74
83
  <Text>
75
- People {'\n'} ({numFormatter(onlineUsersCount)})
84
+ {peopleLabel} {'\n'} ({numFormatter(onlineUsersCount)})
76
85
  </Text>
77
86
  ) : (
78
87
  <>
@@ -98,7 +107,6 @@ export interface ParticipantsIconButtonProps {
98
107
  left?: number;
99
108
  bottom?: number;
100
109
  };
101
- isOnActionSheet?: boolean;
102
110
  render?: (onPress: () => void, isPanelActive: boolean) => JSX.Element;
103
111
  }
104
112
  export const ParticipantsIconButton = (props: ParticipantsIconButtonProps) => {
@@ -110,17 +118,20 @@ export const ParticipantsIconButton = (props: ParticipantsIconButtonProps) => {
110
118
  left: undefined,
111
119
  bottom: undefined,
112
120
  },
113
- isOnActionSheet = false,
114
121
  } = props;
122
+ const {isOnActionSheet, showLabel} = useActionSheet();
115
123
  const {sidePanel, setSidePanel} = useSidePanel();
116
124
  const {isPendingRequestToReview, setLastCheckedRequestTimestamp} =
117
125
  useContext(LiveStreamContext);
118
- //commented for v1 release
119
- //const participantsLabel = useString('participantsLabel')();
120
- const {onlineUsersCount} = useContext(ChatContext);
121
- //const participantsLabel = `Participants (${numFormatter(onlineUsersCount)})`;
122
- const participantsLabel = `People`;
126
+
127
+ const {waitingRoomUids} = useWaitingRoomContext();
128
+ const participantsLabel = useString(toolbarItemPeopleText)();
123
129
  const isPanelActive = sidePanel === SidePanelType.Participants;
130
+ const {
131
+ data: {isHost},
132
+ } = useRoomInfo();
133
+
134
+ const isPendingWaitingRoomApproval = isHost && waitingRoomUids.length > 0;
124
135
 
125
136
  const onPress = () => {
126
137
  isPanelActive
@@ -141,10 +152,28 @@ export const ParticipantsIconButton = (props: ParticipantsIconButtonProps) => {
141
152
  : '',
142
153
  },
143
154
  btnTextProps: {
144
- text: isOnActionSheet || !$config.ICON_TEXT ? '' : participantsLabel,
155
+ text: showLabel ? participantsLabel : '',
145
156
  textColor: $config.FONT_COLOR,
146
157
  },
147
158
  };
159
+ if (isOnActionSheet) {
160
+ // iconButtonProps.containerStyle = {
161
+ // backgroundColor: $config.CARD_LAYER_2_COLOR,
162
+ // width: 52,
163
+ // height: 52,
164
+ // borderRadius: 26,
165
+ // justifyContent: 'center',
166
+ // alignItems: 'center',
167
+ // };
168
+ iconButtonProps.btnTextProps.textStyle = {
169
+ color: $config.FONT_COLOR,
170
+ marginTop: 8,
171
+ fontSize: 12,
172
+ fontWeight: '400',
173
+ fontFamily: 'Source Sans Pro',
174
+ textAlign: 'center',
175
+ };
176
+ }
148
177
  iconButtonProps.isOnActionSheet = isOnActionSheet;
149
178
 
150
179
  return props?.render ? (
@@ -158,22 +187,25 @@ export const ParticipantsIconButton = (props: ParticipantsIconButtonProps) => {
158
187
  <View>
159
188
  <IconButton {...iconButtonProps} />
160
189
  </View>
161
- {$config.EVENT_MODE &&
190
+ {isPendingWaitingRoomApproval ||
191
+ ($config.EVENT_MODE &&
162
192
  $config.RAISE_HAND &&
163
- isPendingRequestToReview && (
164
- <View
165
- style={{
166
- position: 'absolute',
167
- top: liveStreamingRequestAlertIconPosition.top,
168
- bottom: liveStreamingRequestAlertIconPosition.bottom,
169
- right: liveStreamingRequestAlertIconPosition.right,
170
- left: liveStreamingRequestAlertIconPosition.left,
171
- backgroundColor: $config.SEMANTIC_ERROR,
172
- width: 12,
173
- height: 12,
174
- borderRadius: 10,
175
- }}></View>
176
- )}
193
+ isPendingRequestToReview) ? (
194
+ <View
195
+ style={{
196
+ position: 'absolute',
197
+ top: liveStreamingRequestAlertIconPosition.top,
198
+ bottom: liveStreamingRequestAlertIconPosition.bottom,
199
+ right: liveStreamingRequestAlertIconPosition.right,
200
+ left: liveStreamingRequestAlertIconPosition.left,
201
+ backgroundColor: $config.SEMANTIC_ERROR,
202
+ width: 12,
203
+ height: 12,
204
+ borderRadius: 10,
205
+ }}></View>
206
+ ) : (
207
+ <></>
208
+ )}
177
209
  </>
178
210
  )}
179
211
  </>
@@ -194,7 +226,6 @@ export interface ChatIconButtonProps {
194
226
  totalUnreadCount: number,
195
227
  ) => JSX.Element;
196
228
  isMobileView?: boolean;
197
- isOnActionSheet?: boolean;
198
229
  }
199
230
 
200
231
  export const ChatIconButton = (props: ChatIconButtonProps) => {
@@ -213,15 +244,23 @@ export const ChatIconButton = (props: ChatIconButtonProps) => {
213
244
  fontSize: 12,
214
245
  textAlign: 'center',
215
246
  },
216
- isOnActionSheet = false,
217
247
  } = props;
218
248
  const {setUnreadGroupMessageCount, totalUnreadCount} = useChatNotification();
219
249
  const {setChatType, setPrivateChatUser} = useChatUIControls();
220
250
 
221
- //commented for v1 release
222
- //const chatLabel = useString('chatLabel')();
223
- const chatLabel = 'Chat';
251
+ const chatLabel = useString(toolbarItemChatText)();
252
+
224
253
  const isPanelActive = sidePanel === SidePanelType.Chat;
254
+
255
+ //when chat panel is close then we need to show the toast notification. for that
256
+ //we are resetting flag which used when chat panel is active
257
+ useEffect(() => {
258
+ if (sidePanel !== SidePanelType.Chat) {
259
+ setChatType(ChatType.Group);
260
+ setPrivateChatUser(0);
261
+ }
262
+ }, [sidePanel]);
263
+
225
264
  const onPress = () => {
226
265
  {
227
266
  if (isPanelActive) {
@@ -236,6 +275,7 @@ export const ChatIconButton = (props: ChatIconButtonProps) => {
236
275
  }
237
276
  }
238
277
  };
278
+ const {isOnActionSheet, showLabel} = useActionSheet();
239
279
  let iconButtonProps: IconButtonProps = {
240
280
  onPress: onPress,
241
281
  iconProps: {
@@ -248,11 +288,29 @@ export const ChatIconButton = (props: ChatIconButtonProps) => {
248
288
  : '',
249
289
  },
250
290
  btnTextProps: {
251
- text: isOnActionSheet || !$config.ICON_TEXT ? '' : chatLabel,
291
+ text: showLabel ? chatLabel : '',
252
292
  textColor: $config.FONT_COLOR,
253
293
  },
254
294
  };
255
295
 
296
+ if (isOnActionSheet) {
297
+ // iconButtonProps.containerStyle = {
298
+ // backgroundColor: $config.CARD_LAYER_2_COLOR,
299
+ // width: 52,
300
+ // height: 52,
301
+ // borderRadius: 26,
302
+ // justifyContent: 'center',
303
+ // alignItems: 'center',
304
+ // };
305
+ iconButtonProps.btnTextProps.textStyle = {
306
+ color: $config.FONT_COLOR,
307
+ marginTop: 8,
308
+ fontSize: 12,
309
+ fontWeight: '400',
310
+ fontFamily: 'Source Sans Pro',
311
+ textAlign: 'center',
312
+ };
313
+ }
256
314
  iconButtonProps.isOnActionSheet = isOnActionSheet;
257
315
 
258
316
  // const renderBadgeOld = (badgeCount: any) => {
@@ -350,12 +408,24 @@ export const MeetingTitleToolbarItem = () => {
350
408
  export const ParticipantCountToolbarItem = () => {
351
409
  return (
352
410
  <ToolbarItem>
353
- <ParticipantsCount />
411
+ <View>
412
+ <View
413
+ style={{
414
+ width: 45,
415
+ height: 35,
416
+ justifyContent: 'center',
417
+ alignItems: 'center',
418
+ alignSelf: 'center',
419
+ zIndex: isWebInternal() ? 3 : 0,
420
+ }}>
421
+ <ParticipantsCount />
422
+ </View>
423
+ </View>
354
424
  </ToolbarItem>
355
425
  );
356
426
  };
357
427
  export const RecordingStatusToolbarItem = () => {
358
- const recordingLabel = 'Recording';
428
+ const recordingLabel = useString(videoRoomRecordingText)();
359
429
  const {isRecordingActive} = useRecording();
360
430
  return isRecordingActive ? (
361
431
  <ToolbarItem>
@@ -440,29 +510,27 @@ export interface NavbarProps {
440
510
  includeDefaultItems?: boolean;
441
511
  }
442
512
  const Navbar = (props: NavbarProps) => {
443
- //commented for v1 release
444
- //const recordingLabel = useString('recordingLabel')();
445
513
  const {customItems = [], includeDefaultItems = true} = props;
446
514
  const {width} = useWindowDimensions();
447
515
 
448
- const isHidden = (i) => {
516
+ const isHidden = i => {
449
517
  return i?.hide === 'yes';
450
518
  };
451
519
 
452
520
  const customStartItems = customItems
453
- ?.filter((i) => i.align === 'start' && !isHidden(i))
521
+ ?.filter(i => i.align === 'start' && !isHidden(i))
454
522
  ?.concat(includeDefaultItems ? defaultStartItems : [])
455
- ?.sort((a, b) => a?.order - b?.order);
523
+ ?.sort(CustomToolbarSort);
456
524
 
457
525
  const customCenterItems = customItems
458
- ?.filter((i) => i.align === 'center' && !isHidden(i))
526
+ ?.filter(i => i.align === 'center' && !isHidden(i))
459
527
  ?.concat(includeDefaultItems ? defaultCenterItems : [])
460
- ?.sort((a, b) => a?.order - b?.order);
528
+ ?.sort(CustomToolbarSort);
461
529
 
462
530
  const customEndItems = customItems
463
- ?.filter((i) => i.align === 'end' && !isHidden(i))
531
+ ?.filter(i => i.align === 'end' && !isHidden(i))
464
532
  ?.concat(includeDefaultItems ? defaultEndItems : [])
465
- ?.sort((a, b) => a?.order - b?.order);
533
+ ?.sort(CustomToolbarSort);
466
534
 
467
535
  const renderContent = (
468
536
  items: ToolbarCustomItem[],